【老王公众号】

标准化运维

一、服务器安装标准(基于VM-EXSI进行服务器资源管理):
1、web服务器:
        安装标准: 系统:centos6.6,为了环境纯净必须选择 basic server 安装
        分区:/boot-200M、swap-6G、其余均给 / 目录
        文件系统:ext4
2、DB、cache服务器(mysql):
        安装标准: 系统:centos6.6,为了环境纯净必须选择 basic server 安装
        分区:/boot-200M、swap-6G、其余均给 / 目录
        文件系统:XFS
       (内网测试环境基于exsi虚拟机,做好快照,且不考虑raid)
 
二、服务器具体部署流程:
1、建立服务器帐号,避免直接使用root权限。
        研发帐号:
        统一增加研发应用帐号linux用户 appuser:appuser 主目录在/home/appuser
        sudo su - ; su - appuser 切换到appuser用户,修改crontab(crontab -e)
        数据库帐号:
        增加数据库帐号linux用户 mysql:mysql 主目录 /home/mysql
        允许:sudo su -切换到root权限,启动mysql权限(cp xxx /etc/init.d/mysqld; chmod -R 700 /etc/init.d/mysqld; chkconfig --add mysqld;
        chkconfig mysqld on; service mysqld start)
        sudo su - ; su - mysql 切换到mysql用户,修改crontab(crontab -e)

        (内网可以允许不禁用直接登录root,但是相关进程不能用root启动,避免之后标准化部署脚本从内网到外面产生权限问题

            所有web项目都以appuser启动,db用mysql账户启动)
2、关闭selinux、关闭iptables
        > /etc/sysconfig/selinux
        setenforce 0
        echo 'SELINUX=disabled' >> /etc/sysconfig/selinux
        echo 'SELINUXTYPE=targeted' >> /etc/sysconfig/selinux
3、统一创建计划任务目录、包放置目录。

        mkdir -p /data/cron (统一计划任务放置点)
        mkdir -p /data/source (统一文件包放置点)

4、统一yum扩展源地址包,初始化部署服务器时先全部update
        yum -y install wget
        rpm -ivh epel-release-6-8.noarch.rpm
        rm -rf epel-release-6-8.noarch.rpm
        yum -y update
5、服务器时间同步
        CTfile=/tmp/crontab.${USER}
        CTstr="*/30 * * * * /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 2>&1"
        /usr/bin/crontab -l > ${CTfile}
        echo "" >> ${CTfile}
        echo "${CTstr}" >> ${CTfile}
        /usr/bin/crontab ${CTfile}
        rm -rf ${CTfile}
6、优化IO调试器
        for sd in `cd /dev/ && ls sd?`
        do
        echo "" >> /etc/rc.local
        echo "echo \"deadline\" > /sys/block/${sd}/queue/scheduler" >> /etc/rc.local
        done
7、为历史命令加上时间
        sed -i '/HISTTIMEFORMAT/d' /etc/profile
        echo 'HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "' >> /etc/profile
 
 三、服务器统一路径管理
        DB数据库服务器(如DB):
        /data/3306下目录所有者mysql:mysql(如果多实例,目录按端口创建,/data/{port},如/data/3307, /data/3308)
        /etc/my.cnf 文件所有者mysql:mysql
        web容器服务器(如tomcat):
        启动关闭脚本:/data/deploy-script下目录所有者appuser:appuser
       日志路径: /data/httplogs下目录所有者appuser:appuser
        所有相关资源:/data/tomcat下目录所有者appuser:appuser
        tomcat-pid:/data/ tomcat-run-pid下目录所有者appuser:appuser
        tomcat启动关闭主目录:/data/ webapps下目录所有者appuser:appuser
        cache服务器(如redis):
        /data/redis/下目录所有者appuser:appuser
       (注:所有运维批量化部署脚本届时都有我整理后提供,结合以上路径形成统一标准,结合自动化部署提高效率,减少人为操作失误。)
 
四、内网、测试环境项目持续集成与发布流程
        变更管理:利用svn+jenkins+shell的方式进行项目管理控制,与运维一键发布。
        变更流程:开发环境-qa环境-预发布环境-线上生产环境
        所有过程由SVN实行版本控制,统一代码管理,做到多版本分支及合并,并实时备份,准备回滚。
        利用jenkins结合svn对各个环境自动高效准确持续的软件版本发布/测试项目
        监控外部调用执行的工作,准确定位构建中的错误信息,快速准确变更部署
        大致发布流程:
  •         开发环境发布 - 研发介入
  •         Qa环境发布 - 研发、测试组介入
  •         预发布环境 - 运维进行发布后测试组回归测试
  •         正式环境 - 运维进行发布
posted @ 2016-11-01 09:43  CTO老王  阅读(2026)  评论(0编辑  收藏  举报