Web运维手册


1. 前言 2. 安装篇 i. apache ii. nginx 3. 应用篇 i. 基本设置 ii. 虚拟主机 iii. SSL配置 iv. 伪静态规则 4. 管理优化篇 i. 配置优化 ii. 日志详解 iii. 日志分析 5. WEB扩展篇 i. 负载均衡 ii. 双机热备 6. Mysql扩展篇 i. 主从配置 ii. 高可用 iii. 负载均衡及HA 7. 缓存篇 i. Squid ii. Varnish iii. Apache Traffic Server 8. 备份与恢复 i. WEB ii. Mysql Table of Contents # EMAIL :a@letong.me GitHub:https://github.com/letong If you need my help, please leave a message or send e-mail. WEB运维手册 yum安装 yum -y install httpd mysql-server php php-mysql 源码包安装 获取apache wget http://httpd.apache.org/[preferred]/httpd/httpd-2.4.10.tar.gz 安装编译依赖包apr、apr-util、pcre #####install apr [root@localhost ~]# wget http://mirrors.cnnic.cn/apache/apr/apr-1.5.1.tar.gz [root@localhost ~]# tar xvf apr-1.5.1.tar.gz [root@localhost ~]# cd apr-1.5.1 [root@localhost apr-1.5.1]# ./configure --prefix=/app/apr [root@localhost apr-1.5.1]# make && make install #####install apr-util [root@localhost ~]# wget http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4.tar.gz [root@localhost ~]# tar xvf apr-util-1.5.4.tar.gz [root@localhost ~]# cd apr-util-1.5.4 [root@localhost apr-util-1.5.4]# ./configure --prefix=/app/apr-util --with-apr=/app/apr [root@localhost apr-util-1.5.4]# make && make install #####install pcre [root@localhost ~]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz [root@localhost ~]# tar xvf pcre-8.36.tar.gz [root@localhost ~]# cd pcre-8.36 [root@localhost pcre-8.36]# ./configure --prefix=/app/pcre [root@localhost pcre-8.36]# make && make install 编译安装apache [root@localhost ~]# tar xvf httpd-2.4.10.tar.gz [root@localhost ~]# cd httpd-2.4.10 [root@localhost httpd-2.4.10]# ./configure --prefix=/app/apache --with-apr=/app/apr --with-apr-util=/app/apr-util --with-pcre=/app/pcre/ [root@localhost httpd-2.4.10]# make && make install LAMP安装 centos 6 安装源 rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum安装 yum -y install nginx php-fpm php-mysql mysql-server 源码包安装 安装编译依赖包 yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel 获取nginx wget http://nginx.org/download/nginx-1.7.7.tar.gz 编译安装 [root@localhost ~]# tar xvf nginx-1.7.7.tar.gz [root@localhost ~]# cd nginx-1.7.7 [root@localhost nginx-1.7.7]# ./configure --prefix=/app/nginx/ [root@localhost nginx-1.7.7]# make && make install nginx+php 默认配置文件目录为/etc/http/conf/httpd.conf 默认网站根目录为/var/www/html 默认日志目录为/var/log/httpd/ 测试 [root@localhost ~]# cat /var/www/html/index.html this test webserver! [root@localhost ~]# service httpd start [root@localhost ~]# curl 127.0.0.1 this test webserver! apache + php 默认配置文件 [root@localhost ~]# ls /etc/php.* /etc/php.ini #配置文件 /etc/php.d: #引用的配置文件目录 curl.ini json.ini mysql.ini pdo_mysql.ini phar.ini zip.ini fileinfo.ini mysqli.ini pdo.ini pdo_sqlite.ini sqlite3.ini apache使用php的配置文件,在apache的主配置文件会引入这个目录的所有配置文件。 /etc/httpd/conf.d/php.conf 测试 [root@localhost ~]# cat /var/www/html/index.php [root@localhost ~]# service httpd restart 访问apache主机,显示php信息则成功。 PS:请关闭iptables防火墙及selinux。 默认配置文件目录/etc/nginx/ 基本设置 apache nginx 主配置文件为/etc/nginx/nginx.conf 默认网站根目录为/usr/share/nginx/html 启动nginx service nginx start 测试 [root@localhost ~]# curl 127.0.0.1 Welcome to nginx! 使用php请启动php-fpm程序 [root@localhost ~]# service php-fpm start 编辑配置文件 [root@localhost ~]# vi /etc/nginx/conf.d/default.conf location / { root /usr/share/nginx/html; index index.php index.html index.htm; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name; include fastcgi_params; } 测试 [root@localhost ~]# cat /usr/share/nginx/html/index.php [root@localhost ~]# service nginx restart 访问首页显示php信息则成功。 注释主配置文件中的网站根目录 cat /etc/http/conf/httpd.conf #DocumentRoot "/var/www/html" ##虚拟主机配置 DocumentRoot /web1 ServerName web1.com DocumentRoot /web2 ServerName web2.com 因为nginx主配置文件引入了conf.d目录,我们推荐每个虚拟主机在该目录下创建一个文件。 [root@localhost ~]# vi /etc/nginx/conf.d/web2.conf server { listen 80; server_name web2.com; location / { root /web2; index index.php index.html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /web2/$fastcgi_script_name; include fastcgi_params; } } 创建web目录与测试文件 虚拟主机 apache nginx 测试 [root@localhost ~]# mkdir /web2/ [root@localhost ~]# cat /web2/index.html this web2. 测试 ##本地解析添加hosts文件测试 [root@localhost ~]# cat /etc/hosts 192.168.1.104 web2.com ##重启访问测试 如测试apache则重启apache [root@localhost ~]# service nginx restart [root@localhost ~]# curl web2.com this web2. 安装ssl模块和openssl yum -y install mod_ssl openssl 使用openssl签发证书 openssl genrsa -out server.key 1024 openssl req -new -key server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 编辑配置文件 /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/http/ssl/server.crt SSLCertificateKeyFile /etc/http/ssl/server.key 重启httpd服务即可。 nginx 编译安装的时候加入以下参数 .configure --with-http_ssl_module make && make install 签发证书参考以apache相关内容。 编辑配置文件 /etc/nginx/conf.d/default.conf ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; SSL配置 apache apache RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] nginx ##第一种方法,虽然简单,但location中还有rewrite,会出现问题。 location / { try_files $uri $uri/ /index.php?q=$uri&$args; } ##第二种方法 location / { if (-d wp-admin){ break; } if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } } apache 官方支持伪静态,设置后自动生成。 nginx location / { if (!-e $request_filename) { rewrite ^/(.+)$ /index.php last; } } 伪静态规则 Wordpress emlog typecho apache RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] nginx location / { if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php) { rewrite (.*) $1/index.php; } if (!-f $request_filename) { rewrite (.*) /index.php; } } apache分为3种MPM,分别为perfork、worker、event,可以使用httpd -l查看。 默认为perfork,配置文件/etc/http/conf/httpd.conf ##根据服务器访问流量自行设置。 StartServers 8 #启动进程 MinSpareServers 5 #最小空闲进程 MaxSpareServers 20 #最大空闲进程 ServerLimit 256 #进程限制 MaxClients 256 #最大请求数 MaxRequestsPerChild 4000 #每个进程在处理了多少次请求之后自动销毁 其他选项 KeepAlive Off #On MaxKeepAliveRequests 100 #一次最大HTTP请求数 KeepAliveTimeout 15 #超时新建连接 KeepAlive指的是保持连接活跃,避免每次请求都要新建一个连接而加重服务器的负担,类似于Mysql的永 久连接,图片较多的推荐开启。 配置文件/etc/nginx/nginx.conf worker_processes 1; #一般为CPU的倍数 worker_rlimit_nofile 65535; #每个进程打开最大文件描述符,推荐与ulimit -n保持一致 events { use epoll; #使用epoll的I/O模型 worker_connections 1024; #每个进程最大连接数 } tcp_nopush on; #一个数据包发生所有头文件 tcp_nodelay on; #不要缓存数据,立即发送 gzip on; #开启gzip压缩 另外不会别瞎折腾配置了,服务器瓶颈赶紧加,不能省。 配置优化 apache nginx 日志默认文件为/var/log/httpd/access.log 192.168.1.102 - - [26/Dec/2014:22:02:14 +0800] "GET / HTTP/1.1" 200 11 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" 源IP - 来源用户 [时间与时区] "请求的URI与协议" http状态码 发送字节数 "请求路径" "客户端浏览器信息" 日志配置文件/etc/http/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined CustomLog logs/access_log combined 参数详解 %a: 远程IP地址 %A: 本地IP地址 %B: 已发送的字节数,不包含HTTP头 %b: CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0。 %{FOOBAR}e: 环境变量FOOBAR的内容 %f: 文件名字 %h: 远程主机 %H 请求的协议 %{Foobar}i: Foobar的内容,发送给服务器的请求的标头行。 %l: 远程登录名字(来自identd,如提供的话) %m 请求的方法 %{Foobar}n: 来自另外一个模块的注解“Foobar”的内容 %{Foobar}o: Foobar的内容,应答的标头行 %p: 服务器响应请求时使用的端口 %P: 响应请求的子进程ID。 %q 查询字符串(如果存在查询字符串,则包含“?”后面的部分;否则,它是一个空字符串。) %r: 请求的第一行 %s: 状态。对于进行内部重定向的请求,这是指*原来*请求 的状态。如果用%…>s,则是指后来的请求。 %t: 以公共日志时间格式表示的时间(或称为标准英文格式) %{format}t: 以指定格式format表示的时间 %T: 为响应请求而耗费的时间,以秒计 %u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的) %U: 用户所请求的URL路径 %v: 响应请求的服务器的ServerName %V: 依照UseCanonicalName设置得到的服务器名字 日志默认文件为/var/log/nginx/access.log 192.168.1.102 - - [26/Dec/2014:21:36:28 +0800] "GET / HTTP/1.1" 200 46112 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" "-" 来源IP - 来源用户 [时间与时区] "请求的URI与HTTP协议" http状态码 返回给客户端的body大小 "请求路径" "客户端浏览器信息" "真实源IP" 日志详解 apache nginx nginx日志配置文件/etc/nginx/nginx.conf log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; 参数详解 $server_name:虚拟主机名称。 $remote_addr:远程客户端的IP地址。 $remote_user:远程客户端用户名称 [$time_local]:访问的时间与时区。 $request:请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求 $status:记录请求返回的http状态码,比如成功是200。 $uptream_status:upstream状态,比如成功是200. $body_bytes_sent:发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。 $http_referer:记录从哪个页面链接访问过来的。 $http_user_agent:客户端浏览器信息 $http_x_forwarded_for:客户端的真实ip $ssl_protocol:SSL协议版本,比如TLSv1。 $ssl_cipher:交换数据中的算法,比如RC4-SHA。 $upstream_addr:upstream的地址,即真正提供服务的主机地址。 $request_time:整个请求的总时间。 $upstream_response_time:请求过程中,upstream的响应时间。 goaccess 安装 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm 配置文件 /etc/goaccess.conf 取消以下注释 date-format %d/%b/%Y log-format %h %^[%d:%^] "%r" %s %b "%R" "%u" 使用 goaccess -f /var/log/httpd/access_log 输出成html goaccess -d -f /var/log/httpd/access_log > 1.html 参数详解 File Options -f --log-file= - 日志文件路径. Parse Options -a --agent-list - 允许用户代理通过主机列表. -d --with-output-resolver - 启用HTML解析 IP 或 JSON输出。. -m --with-mouse - 启用鼠标支持. -o --output-format=csv|json - 输出 JSON 或 CSV 文件. -r --no-term-resolver - 禁用IP解析终端输出。 -e --exclude-ip= - 排除IP --ignore-crawlers - 忽略爬虫. --no-progress - 禁用进度指标. 日志分析 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS集群采用IP 负载均衡技术和基于内容请求分发技术,是一个高性能的前端调度分发器。 LVS分为三种模式,分别为NAT、DR、TUN,三种IP负载均衡技术的优缺点比较: 杂项         VS/NAT     VS/TUN      VS/DR 服务器操作系统    任意      支持隧道     多数(支持Non-arp ) 服务器网络      私有网络    局域网/广域网   局域网 服务器数目 10-20      100       多(100) 服务器网关      负载均衡器   自己的路由    自己的路由 效率         一般      高        最高 常用算法 轮叫调度(Round Robin)(简称rr) 把外部的请求按照顺序轮流分发到集群中的服务器中,如何你的服务器集群的机子性能完全相等的,可以 使用此种。 加权轮叫(Weighted Round Robin)(简称wrr) 根据权重分发请求给集群的服务器。如a:2 b:1,那么给a两次,才给b一次。 最少链接(Least Connections)(LC) 根据集群服务器的建立连接数,将请求优先分配给连接值最低的的机器。 加权最少链接(Weighted Least Connections)(WLC) 根据权重比与建立连接数,权重比越高,将承受较大的活动连接数。 负载均衡 负载均衡之LVS # 以下为默认的DR模式 安装 [root@localhost ~]# yum install ipvsadm -y 绑定一个虚拟IP [root@localhost ~]# ifconfig eth0:0 192.168.1.200 broadcast 192.168.0.200 netmask 255.255.255.255 up 添加本地路由 [root@localhost ~]# route add -host 192.168.1.200 dev eth0:0 开启转发 [root@localhost ~]# echo "1" >/proc/sys/net/ipv4/ip_forward LVS配置,假设我们有两个web服务器,IP分别是104、105。 [root@localhost ~]# ipvsadm -C #清空所有记录 [root@localhost ~]# ipvsadm -A -t 192.168.1.200:80 -s rr #转发IP 算法 [root@localhost ~]# ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.104:80 [root@localhost ~]# ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.105:80 然后分别给两台web服务器配置一个虚拟IP地址 [root@web1 ~]# ifconfig eth0:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up [root@web2 ~]# ifconfig eth0:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up 测试访问,先将域名解析到LVS。 [root@Master ~]# curl letong.me this web1. [root@Master ~]# curl letong.me this web2. HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,特别适用于那些负载 特大的web站点,这些站点通常又需要会话保持或七层处理。图示 负载均衡之Haproxy 1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段); 2、Session的保持,Cookie的引导等工作; 3、支持url检测后端的服务器; 4、可以对Mysql进行检测与负载 ; # 安装 yum -y install haproxy 配置文件 /etc/haproxy/haproxy.cfg 修改配置文件 frontend main *:80 default_backend app backend app balance roundrobin server web1 192.168.1.104:80 check server web2 192.168.1.105:80 check 测试访问,将域名解析到haproxy服务器的IP [root@Master ~]# curl letong.me this web1. [root@Master ~]# curl letong.me this web2. Keepalived的作用是检测服务器状态,如果LVS1挂了之后会自动切换到LVS2。后端的WEB服务器如果有 故障,将被移除集群,直到恢复之后Keepalived将自动把WEB服务器加入集群中。 不过这样有点浪费,如果LVS1正常的话,LVS2将处于空闲状态。我们可以使用双主双备,使用两个虚拟 IP。 # 安装 [root@localhost ~]# yum install keepalived 配置文件/etc/keepalived/keepalived.conf,以下是一简单示例。 vrrp_instance vip1 { state MASTER interface eth0 virtual_router_id 51 #vrrp组id priority 99 #对应备用节点值应该比此值小 advert_int 1 #心跳间隔s authentication { auth_type PASS #验证方式 auth_pass 1111 #验证密码 } virtual_ipaddress { 192.168.1.100 #虚拟IP地址 } } 双机热备 双机热备之Keepalived 在Keepalived调用LVS virtual_server 192.168.0.200 80 { delay_loop 6 #每隔6秒查询realserver状态 lb_algo rr #算法 lb_kind DR #运行模式 # persistence_timeout 5 #5s内连接同一web protocol TCP real_server 192.168.1.104 80 { weight 3 #权重 TCP_CHECK { connect_timeout 3 #连接超时时间 nb_get_retry 3 #失败重试次数 delay_before_retry 3 #失败重试时间 connect_port 80 } } real_server 192.168.0.105 80 { weight 3 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } Keepalived健康检查 HTTP_GET { url { path /testurl/index.html digest 640205b7b0fc66c1ea91c463fac6334d #md5值 #status_code 200 http返回码 } 以上md5生成方法如下 genhash -s 192.168.1.104 -p 80 -u /index.html 你也可以用自己的脚本进行检查 MISC_CHECK { misc_path "/data/web_check.sh" misc_timeout 30 misc_dynamic #失败后权重自动减去返回码 } 当数据库出现瓶颈,常用的方法就是 主从配置,也就是常说的读写分离方法。主写,从读,进行数据同 步。 复制的三个步骤: master将改变记录到二进制日志(binary log)中 slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。 # 测试环境 Centos 7 与 mariadb 将两台Mysql服务器分别安装 [root@Master ~]# yum -y install mariadb-server [root@Master ~]# systemctl start mariadb [root@Master ~]# mysqladmin -u root password '123456' 配置密钥登陆 [root@Master ~]# ssh-keygen [root@Master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.105 配置hosts文件 192.168.1.104 Master 192.168.1.105 Slave Mysql主从 主数据库配置 [root@Master ~]# vi /etc/my.cnf [mysqld] server_id = 1 log-bin=binlog log-bin-index=binlog.index old_passwords=1 从数据库配置 [root@Slave ~]# vi /etc/my.cnf server_id = 2 relay_log_purge=0 relay_log = /var/lib/mysql/mysql-relay-bin relay_log_index = /var/lib/mysql/mysql-relay-bin.index log-bin=binlog log-bin-index=binlog.index old_passwords=1 测试,配置完成后全部重启。 Master操作 mysql> GRANT replication slave ON *.* TO 'letong'@'%' identified by '123'; mysql> flush privileges; mysql> show master status; #记住file和position Slave操作 mysql> change master to master_host='192.168.1.104',master_port=3306,master_user='letong',master_password='123',master_log_file='binlog.000001',master_log_pos='245' MariaDB [(none)]> start slave; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.104 Master_User: kyo Master_Port: 3306 Connect_Retry: 60 Master_Log_File: binlog.000002 Read_Master_Log_Pos: 245 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 526 Relay_Master_Log_File: binlog.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes #以上两个Yes即成功 最后给予数据库互访的权限即可。 在Mysql的复制中,如果主节点故障,使用MHA可实现自动切换。主从安装keepalived ,实现虚拟ip漂移, 程序不用改IP自动切换。 # 请在主从配置完成的基础上进行配置。 安装依赖包和MHA yum –y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager rpm -Uvh https://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.55-0.el6.noarch.rpm 配置管理,配置文件名自定 /etc/app1.conf [server default] user=root #mysql管理用户名 password=123 ssh_user=root repl_user=repl #mysql主从同步账号 repl_password=123 ping_interval=1 #ping检测间隔 manager_workdir=/var/log/masterha manager_log=/var/log/masterha/app1.log remote_workdir=/var/log/masterha [server1] hostname=192.168.1.1 candidate_master=1 [server2] hostname=192.168.1.2 no_master=1 检测与启动 masterha_check_ssh --conf=/etc/app1.conf masterha_check_repl --conf=/etc/app1.conf masterha_manager --conf=/etc/app1.conf 这时候已经可以实现故障转移了,但是这个过程需要几秒中,可以配置keepalived来缩短这个时间。 高可用 - 故障转移 使用haproxy,修改相关配置即可。详细参考WEB扩展篇的负载均衡章节。 #切换成mysql使用的端口 mode tcp #模式 TCP option mysql-check user root #mysql健康检查 root为mysql登录用户名 请参考WEB扩展篇的双机热备章节 其它说明 负载均衡 双机热备 安装 yum -y install squid 配置目录 /etc/squid/ 主配置文件 /etc/squid/squid.conf 反向代理 #squid主机名 visible_hostname squid-86 #反向代理配置 http_port 80 vhost vport cache_peer letong.me parent 80 0 no-query originserver name=a cache_peer_domain a letong.me #缓存配置 cache_mem 100 MB #缓存内存 cache_dir ufs /usr/local/squid-3.1/var/cache 100 16 256 #缓存大小 一级缓存 二级缓存 cache_log /usr/local/squid-3.1/var/logs/cache.log #缓存日志 access_log /usr/local/squid-3.1/var/logs/access.log nobody #访问日志 优化 修改ulimit值 查看默认文件描述符数量: # ulimit -n 1024 临时修改文件描述符数量 ulimit –SHn 65536 永久修改文件描述符数量 vi /etc/security/limits.conf * hard nofile 65535 * soft nofile 65535 # ulimit -n 65535 日期周期性滚动 0 4 * * * /usr/sbin/squid -k rotate & squid 安装 rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.el6.rpm rpm --nosignature -i http://ftp-hk.tmapy.cz/fedora/epel/6/x86_64/jemalloc-3.6.0-1.el6.x86_64.rpm yum install varnish 没有研究过,待添加。 Varnish 下载依赖包 wget http://zymlinux.net/trafficserver-3.2.0-5.0.el6.x86_64.rpm wget http://zymlinux.net/spdylay-1.3.1-1.el6.x86_64.rpm 安装 yum -y install tcl rpm -ivh spdylay-1.3.1-1.el6.x86_64.rpm rpm -ivh trafficserver-3.2.0-5.0.el6.x86_64.rpm 核心配置 /etc/trafficserver/record.config CONFIG proxy.config.http.server_ports STRING 80 #监听端口 CONFIG proxy.config.cache.ram_cache.size INT 512M #内存缓存 回源配置 /etc/trafficserver/remap.config regex_map http://(.*) http://$1 #如果你的网站为letong.me #map http://(.*)letong.me http://$1 缓存目录及大小 /etc/trafficserver/storage.config /var/cache/trafficserver 256M #或使用裸盘 #/dev/sdb record.config常用参数 #用于标识名称,Cluster模式下同一集群必须保持一致才能建立集群 traffic_line -s proxy.config.proxy_name -v test #配置cluster 模式 – 1 纯cluster 模式,有7层代理功能和集群配置同步 – 2 仅做配置管理 – 3 单机模式 traffic_line -s proxy.local.cluster.type -v 1 #自动配置线程数,多少个CPU配置多少个线程,可调整 CONFIG proxy.config.exec_thread.autoconfig INT 1 #开启 CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.500000 #CPU核数与TS线程数量比例 CONFIG proxy.config.exec_thread.limit INT 2 #每个核创建的线程数 Apache Traffic Server 其他参数 CONFIG proxy.config.accept_threads INT 1 #运行单独线处理请求 #监听8080、80端口,8080 一般用于管理端口,80为服务端口 traffic_line -s proxy.config.http.server_ports -v 8080 80 #使用ssd做冷热缓存 LOCAL proxy.config.cache.ssd.storage STRING /dev/sdb #Cache内存大小,-1 为不限制,具体大小结合业务调整,内存命中越高磁盘IO越小 traffic_line -s proxy.config.cache.ram_cache.size -v 25769803776 #Cache内存淘汰算法,采用CLFUS,LRU 模式有问题 traffic_line -s proxy.config.cache.ram_cache.algorithm -v 1 #传输超时时间,默认900s,传输大文件容易触发超时,改成不限制 traffic_line -s proxy.config.http.transaction_active_timeout_in -v 0 #negative TTL 功能开启 traffic_line -s proxy.config.http.negative_caching_enabled -v 1 #忽略判断Accept头,默认会根据Accept头做多副本缓存 traffic_line -s proxy.config.http.cache.ignore_accept_mismatch -v 1 #忽略判断Accept-Language头,默认会根据Accept-Language头做多副本缓存 traffic_line -s proxy.config.http.cache.ignore_accept_language_mismatch -v 1 #忽略判断Accept-Charset头,默认会根据Accept-Charset头做多副本缓存 traffic_line -s proxy.config.http.cache.ignore_accept_charset_mismatch -v 1 #忽略client max-age traffic_line -s proxy.config.http.cache.ignore_client_cc_max_age -v 1 #忽略HTTP认证头,默认带Authentication是不做缓存的 traffic_line -s proxy.config.http.cache.ignore_authentication -v 1 #开启vary 功能 traffic_line -s proxy.config.http.cache.enable_default_vary_headers -v 1 #开启回源合并 traffic_line -s proxy.config.cache.enable_read_while_writer -v 1 #平均object 大小,结合业务配置 traffic_line -s proxy.config.cache.min_average_object_size -v 16384 #开启HTTP UI traffic_line -s proxy.config.http_ui_enabled -v 3 全备 tar zcvf web.tar.gz /path/to/www 简单的备份脚本bak.sh #!/bin/bash time=`/bin/date +%F` bak_file="/data/backup/$time.tar.gz" webdir="/data/www/" tar zcvf $bak_file $webdir >/dev/null 2>&1 & 定时执行 [root@letong ~]# crontab -l #每天晚上23点59执行脚本 59 23 * * * /bin/bash /data/bak.sh 同步备份采用rsync 安装 yum -y install xinetd rsync 配置 /etc/xinetd.d/rsync disable = no vi /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 4 #最大连接 port = 873 #默认端口 [backup] path = /backup/ comment = "This is a test" read only = yes list = no WEB ignore errors auth users = letong #加密用户 secrets file = /etc/rsync.pas #加密文件 hosts allow = 0.0.0.0/0 #acl列表 cat /etc/rsync.pas letong:123456 为了安全期间,只给予属主权限 chmod 600 /etc/rsync.pas 启动 service xinetd start rsync --daemon 客户端操作 cat /home/rsync.pas 123456 更改权限 chmod 600 /home/rsync.pas 同步命令 rsync -avz --password-file=/home/rsync.pas letong@192.168.1.105::backup /bakdir crontab每小时同步一次 0 * * * * rsync -avz --password-file=/home/rsync.pas letong@192.168.1.105::backup /bakdir 备份所有库 mysqldump -uroot -p --single-transaction --all-databases > backup.sql 备份指定数据库 mysqldump -u root -p --single-transaction dataname > dataname.sql 或者备份目录,mysql目录一般为/var/lib/mysql tar zcvf backup.tar.gz /var/lib/mysql 增量备份(开启binlog) mysqldump -uroot -p --single-transaction --flush-logs --master-data=2 --all-databases > backup.sql --flush-logs会生成新的二进制日志文件,如bin-log.000002。 --master-data=2 记录binlog位置 所有数据库恢复 mysql -u root -p < backup.sql 恢复指定库 mysql -u root -p dataname < dataname.sql 增量备份的恢复 mysqlbinlog bin-log.000001 | mysql -u root -p 每天全备份 Mysql 备份 恢复 #!/bin/bash #file:mysql_bak.sh time=`date +%F` bak_file="/data/backup/$time.sql" user="root" passwd="123456" host="localhost" /usr/bin/mysqldump -u$user -p$passwd -h$host --single-transaction --all-databases > $bak_file >/dev/null 2>&1 & 使用crontab -e编辑 [root@letong ~]# crontab -l 59 23 * * * /bin/bash /data/mysql_bak.sh
还剩34页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

mf7x

贡献于2015-07-25

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf