运维规范文档
更新日期:
-
登录 使用
ec2-user
用户登录服务器,登录验证方式为 ssh key。管理员通过在/home/ec2-user/.ssh
下的authorized_keys
文件中添加运维人员自己生成的公钥内容(每个公钥占据单独一行,以ssh-rsa
开头,个人的公司邮箱结尾,以便区分)1 -
运维脚本默认存放至
/home/ec2-user/bin/
目录下,同时把它加至PATH环境变量中。 serverSetup.sh -
数据磁盘与数据备份磁盘(如有)挂载,编辑
/etc/fstab
,例如:12data /dev/xvdf1 ext3 defaults 0 0data_bak /dev/xvdg1 ext3 defaults 0 0 -
开机自启动
- Nginx
chkconfig nginx on
- PHP-FPM
chkconfig php-fpm on
- MySQL
chkconfig mysql on
- Tomcat
- Memcache
- ID生成器 /home/ec2-user/bin/run_snow
-
服务器添加应用 每个应用(不论是PHP Web网站,还是 Java 应用)都使用自己单独的 nginx 配置文件,不要都放在全局的
/etc/nginx/nginx.conf
文件中。配置文件放至/etc/nginx/conf.d/
下,文件名采用对外的域名加.conf
,如:php.xxx.com.conf
,java.xxx.com.conf
。 -
应用存放位置
/data/deployer/
,其中/data
是一块单独挂载的数据硬盘。例如:Java应用服务器放至在/data/deployer/apache-tomcat-7.0.61
。PHP 网站php.xxx.com
放至于/data/deployer/php-sites/php.xxx.com
,以便区分多个网站。 -
上线 7.1 备份 每次上线都要做好备份,备份的位置如果挂载有单独的备份磁盘,放至在
/data_bak
下,否则放至在/data/bak/
下,下面以单独备份盘为例:- Java项目
/data_bak/codebak/java.xxx.com/xxx_20151208.war
- PHP 项目
/data_bak/codebak/php.xxx.com/xxx_20151208.tar
- Java项目
7.2 更新
- Java项目 运行数据库更新脚本 Tomcat下直接替换 war 包。
- PHP 项目 使用 SVN 或 GIT 增量更新。
-
数据库备份 使用 crontab 来做每日备份,例如:
10 1 * * * /home/ec2-user/bin/mysql_backup.sh >> /data_bak/mysqlbacklog/log 2>&1mysql_backup.sh
1sudo innobackupex --defaults-file=/etc/my.cnf --host=127.0.0.1 -port=3306 --user=root --password= --database=db1,db2,db3 /data_bak/mysqlbak/mysql_backup2.sh
123mysqldump -uroot -pxxx db1 | gzip > /data/mysqlbackup/db1_`date +%Y-%m-%d_%H%M%S`.sql.gzcd /data/mysqlbackuprm -rf `find . -name '*.sql.gz' -mtime 10` -
PHP Web 网站配置文件示例:
/etc/nginx/conf.d/php.xxx.com.conf
12345678910111213141516171819server {listen 80;server_name php.xxx.com;root /data/deployer/php-sites/php.xxx.com/;index index.html index.htm index.php;access_log /var/log/nginx/php.xxx.com.http.log;location ~ \.php$ {#fastcgi_pass 127.0.0.1:9000;fastcgi_pass php-fpm;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}include conf.d/expires;} -
Java 应用配置文件示例
/etc/nginx/conf.d/java.xxx.com.conf
12345678910111213141516171819server {listen 80;server_name java.xxx.com;access_log /var/log/nginx/java.xxx.com.http.log;location / {#proxy_pass http://localhost:8080;proxy_pass http://tomcat;proxy_redirect off;proxy_next_upstream error timeout invalid_header http_500;proxy_connect_timeout 2;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Scheme $scheme;}} -
监控
- CPU占用
- 内存占用
- 磁盘读写次数
- 磁盘吞吐量
- 网络请求数
- 网络吞吐量
- 带宽
- 警报
当/var/log/nginx/error.log有异常时,能发送邮件通知运维人员。因错误日志可能会很多很频繁,最好是采用
cron
方式聚总,定时或者达到一定数量时才发送邮件。