文章目录
  1. 登录 使用ec2-user用户登录服务器,登录验证方式为 ssh key。管理员通过在/home/ec2-user/.ssh下的authorized_keys文件中添加运维人员自己生成的公钥内容(每个公钥占据单独一行,以ssh-rsa开头,个人的公司邮箱结尾,以便区分)

    1

  2. 运维脚本默认存放至/home/ec2-user/bin/目录下,同时把它加至PATH环境变量中。 serverSetup.sh

  3. 数据磁盘与数据备份磁盘(如有)挂载,编辑/etc/fstab,例如:

    1
    2
    data /dev/xvdf1 ext3 defaults 0 0
    data_bak /dev/xvdg1 ext3 defaults 0 0

  4. 开机自启动

  • Nginx chkconfig nginx on
  • PHP-FPM chkconfig php-fpm on
  • MySQL chkconfig mysql on
  • Tomcat
  • Memcache
  • ID生成器 /home/ec2-user/bin/run_snow
  1. 服务器添加应用 每个应用(不论是PHP Web网站,还是 Java 应用)都使用自己单独的 nginx 配置文件,不要都放在全局的/etc/nginx/nginx.conf文件中。配置文件放至/etc/nginx/conf.d/下,文件名采用对外的域名加.conf,如:php.xxx.com.confjava.xxx.com.conf

  2. 应用存放位置 /data/deployer/,其中/data是一块单独挂载的数据硬盘。例如:Java应用服务器放至在/data/deployer/apache-tomcat-7.0.61。PHP 网站php.xxx.com放至于/data/deployer/php-sites/php.xxx.com,以便区分多个网站。

  3. 上线 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

7.2 更新

  • Java项目 运行数据库更新脚本 Tomcat下直接替换 war 包。
  • PHP 项目 使用 SVN 或 GIT 增量更新。
  1. 数据库备份 使用 crontab 来做每日备份,例如:

    1
    0 1 * * * /home/ec2-user/bin/mysql_backup.sh >> /data_bak/mysqlbacklog/log 2>&1

    mysql_backup.sh

    1
    sudo 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

    1
    2
    3
    mysqldump -uroot -pxxx db1 | gzip > /data/mysqlbackup/db1_`date +%Y-%m-%d_%H%M%S`.sql.gz
    cd /data/mysqlbackup
    rm -rf `find . -name '*.sql.gz' -mtime 10`

  2. PHP Web 网站配置文件示例: /etc/nginx/conf.d/php.xxx.com.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    server {
    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;
    }

    conf.d/expires conf.d/php-fpm.conf

  3. Java 应用配置文件示例 /etc/nginx/conf.d/java.xxx.com.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    server {
    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;
    }
    }

    conf.d/tomcat.conf

  4. 监控

  • CPU占用
  • 内存占用
  • 磁盘读写次数
  • 磁盘吞吐量
  • 网络请求数
  • 网络吞吐量
  • 带宽
  1. 警报 当/var/log/nginx/error.log有异常时,能发送邮件通知运维人员。因错误日志可能会很多很频繁,最好是采用cron方式聚总,定时或者达到一定数量时才发送邮件。
文章目录