zoukankan      html  css  js  c++  java
  • nginx自动启动脚本

    nginx自动启动脚本

    环境准备提示:

    启动服务命令为:/application/nginx/sbin/nginx
    停止服务命令为: /application/nginx/sbin/nginx -s stop
    请用case语句开发脚本,以实现Nginx服务启动及关闭的功能,具体脚本命令为/etc/init.d/nginxd {status|start|stop|restart}

        如果读者对Ngnix环境还不是很熟悉,那么请参考跟老男孩学<<Linux运维:Web集群实战>>第5章的内容。
    参考资料:
    https://blog.51cto.com/398528/2053566

    # nginx安装
    
    cd /opt/
    wget https://ftp.pcre.org/pub/pcre/pcre-8.36.tar.gz
    tar -zxvf pcre-8.36.tar.gz
    cd pcre-8.36
    ./configure
    make && make install
    
    cd /opt/
    wget http://nginx.org/download/nginx-1.12.2.tar.gz
    tar -zxvf nginx-1.12.2.tar.gz
    useradd nginx -s /sbin/nologin -M
    yum -y install pcre-devel
    cd nginx-1.12.2
    ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.12.2 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/pcre-8.36
    make && make install
    ln -s /application/nginx-1.12.2 /application/nginx
    /application/nginx/sbin/nginx -t
    启动
    /application/nginx/sbin/nginx
    查看端口
    netstat -lnt
    
    ps -ef|grep nginx
    
    反查
    lsof -i :8080
    
    nginx主页文件所在位置
    /application/nginx/conf/nginx.conf

    ---------------------------------------------------------------------------------------------------------------------
    解题思路:
    1 )    先判断Ngnix的PID文件是否存在(Nginx服务正常启动后PID文件就会存在),如果不存在,即表示Nginx没有运行,则运行Nginx服务的启动命令
    (可以把此部分写成start函数)。待要停止时,如果PID存在,就运行Nginx服务停止命令,否则就不运行停止命令(可以把此部分写成stop函数)。
    2 ) 通过脚本传参start或stop等,通过case语句获取参数进行判断。
    3 ) 为了看起来更专业,这里采用前文讲解的系统函数functions中的action函数。
    4 ) 对函数及命令运行的返回值进行处理,使脚本看起来更专业、规范。
    5 ) 通过chkconfig来管理Nginx脚本,实现开机自动启。

    cat >/etc/init.d/nginxd<<"EOF"
    #!/bin/bash
    # chkconfig: 2345 40 98
    # dectiption: Start/Stop Nginx server
    path="/application/nginx/sbin"
    pid="/application/nginx/logs/nginx.pid"
    RETVAL=0     # 设定RETVAL为0,作为返回值变量。
    . /etc/init.d/functions
    
    # start
    function usage(){
        echo $"`basename $0` {status|start|stop|restart}"
        exit 1
    }
    
    function status(){
        if [[ -f $pid ]]; then
            echo "nginx is running..."
        else
            echo "nginx is not running"
        fi
        exit $RETVAL
    }
    
    function start(){
        if [ ! -f $pid ]; then
            $path/nginx
            RETVAL=$?
            if [[ $RETVAL -eq 0 ]]; then
                action "nginx is started" /bin/true
            else
                action "nginx is started" /bin/false
                return RETVAL
            fi
        else
            echo "nginx is running..."
            return 0
        fi
    }
    
    function stop(){
        if [[ -f $pid ]]; then
            $path/nginx -s stop
            RETVAL=$?
            if [[ $RETVAL -eq 0 ]]; then
                action "nginx is stopped" /bin/true
                return $RETVAL
            else
                action "nginx is stopped" /bin/false
                return $RETVAL
            fi
        else
            echo "nginx is no running"
            return $RETVAL
        fi
    }
    
    case "$1" in
        start )
            start
            RETVAL=$?
            ;;
        stop )
            stop
            RETVAL=$?
            ;;
        restart )
            stop
            sleep 3
            start
            RETVAL=$?
            ;;
        status )
            status
            RETVAL=$?
            ;;
        * )
            usage
    esac
    exit $RETVAL
    EOF
    chmod +x /etc/init.d/nginxd 
    
    [root@db nginx-1.12.2]# /etc/init.d/nginxd status
    nginx is running...
    [root@db nginx-1.12.2]# /etc/init.d/nginxd stop
    nginx is stopped                                           [  OK  ]
    [root@db nginx-1.12.2]# /etc/init.d/nginxd status
    nginx is not running
    [root@db nginx-1.12.2]# /etc/init.d/nginxd start
    nginx is started                                           [  OK  ]
    [root@db nginx-1.12.2]# /etc/init.d/nginxd stop
    nginx is stopped                                           [  OK  ]
    [root@db nginx-1.12.2]# /etc/init.d/nginxd restart
    nginx is no running
    nginx is started                                           [  OK  ]
    [root@db nginx-1.12.2]# /etc/init.d/nginxd restart
    nginx is stopped                                           [  OK  ]
    nginx is started                                           [  OK  ]
    [root@db nginx-1.12.2]# 
  • 相关阅读:
    [BZOJ3510][洛谷P4299]首都(LCT)
    [luogu P5325][模板]Min_25筛
    [洛谷P3288][SCOI2014][BZOJ3597]方伯伯运椰子(网络流+图论)
    [洛谷P5342][TJOI2019]甲苯先生的线段树(数位dp)
    [CQOI2012][洛谷P3159][BZOJ2668]交换棋子(网络流+图论)
    [SDOI2015]约数个数和(莫比乌斯反演)
    使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part
    C#操作xml文件
    实用JS代码
    ASP.NET分页存储过程自定义用户控件(转)
  • 原文地址:https://www.cnblogs.com/bjx2020/p/11176636.html
Copyright © 2011-2022 走看看