zoukankan      html  css  js  c++  java
  • SHELL编写NGINX自动部署脚本

    1、功能描述

      1. 安装支持包,从软件源下载自定义的NGINX包,创建NGINX用户和用户组。

      2. 安装并初始化NGINX配置。

      3. 运行NGINX并检测运行状态。

    2、实现

      源码如下:

    #!/bin/bash
    # eastmoney public tools
    # version: v1.0.1
    # create by XuHoo, 2016-9-28
    #
    
    function environment() {
        if [[ "$USER" != "root" ]]; then
            echo "Current user is not root"
            return 1
        fi
        yum -y install wget curl pcre pcre-devel zlib zlib-devel gcc gcc-c++ &> /tmp/nginx_install.log
        # getUrl: Input download source address
        # getUrl='http://172.16.1.1
    ginx-1.8.1.tar.gz'
        wget -P /tmp/ $getUrl/nginx.tar.gz
        grep "nginx" /etc/passwd > /dev/null
        if [[ $? -ne 0 ]]; then  # check user and group
            groupadd nginx
            useradd -M -g nginx -s /sbin/nologin nginx
        fi
        cd /tmp; tar -zxf nginx.tar.gz; cd nginx
        return 0
    }; environment; [ $? -ne 0 ] && exit 1
    
    function install() {
        # Compile before installation configuration
        ./configure --prefix=/usr/local/nginx 
                    --user=nginx --group=nginx 
                    --with-http_stub_status_module 
                    &> /tmp/nginx_install.log
        if [[ $? -ne 0 ]]; then
            return 1
        else
            # make && make install
            make &> /tmp/nginx_install.log
            make install &> /tmp/nginx_install.log
            if [[ $? -ne 0 ]]; then
                return 1
            fi
            return 0
        fi
    }; install; [ $? -ne 0 ] && exit 1
    
    function optimize() {
        ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ > /dev/null
        cp -f /tmp/nginx_control.sh /etc/init.d/nginx
        cp -f /tmp/nginx.conf /usr/local/nginx/conf/nginx.conf
        # The number of CPU cores current server,
        # Amend the "worker_processes" field to the value of the processor
        processor=`cat /proc/cpuinfo | grep "processor" | wc -l`
        sed -i "s/^w.*;$/worker_processes  ${processor};/g" /usr/local/nginx/conf/nginx.conf
        chmod +x /etc/init.d/nginx
        chkconfig --add nginx
        retval=`chkconfig --level 3 nginx on`  # Configure nginx open start service
        return $retval
    }; optimize; [ $? -ne 0 ] && exit 1
    
    function run() {
        # Test nginx.conf file syntax is correct
        /etc/init.d/nginx test &> /tmp/nginx_run.log
        if [[ $? -ne 0 ]]; then
            retval=$?
        else  # Start nginx server
            /etc/init.d/nginx start &> /tmp/nginx_run.log
            if [[ $? -ne 0 ]]; then
                retval=$?
            fi
        fi
        return 0
    }; run; [ $? -ne 0 ] && exit 1
    
    function check() {
        # Modified index.html page content
        content=$"deployment on $(date "+%Y-%m-%d %H:%M:%S")"
        echo $content > /usr/local/nginx/html/index.html
        # View the index.html, and the output of the modified index.html page
        /etc/init.d/nginx status
        echo -n "Index.html: "; curl http://localhost
    }; check
  • 相关阅读:
    全局临时表的应用 Timothy
    结合windows服务的Socket聊天室 Timothy
    阿拉伯数字转换成金额大写金额(包括小数) Timothy
    回文字符串和栈 Timothy
    SQL 读取不连续的第30到40之间的数据 Timothy
    C#中as和is关键字 Timothy
    嵌套事务和事务保存点的错误处理 Timothy
    隐式事务 Timothy
    float,double和decimal类型 Timothy
    string 值类型还是引用类型 Timothy
  • 原文地址:https://www.cnblogs.com/XuHoo/p/5917069.html
Copyright © 2011-2022 走看看