zoukankan      html  css  js  c++  java
  • nignx服务脚本

    这里提供一个封装的服务脚本,可一实现nginx服务的start,stop,reload等功能

    #!/bin/bash
    
    ARGV="$@"
    cd $(dirname $0)/..
    BASE=$(pwd)
    BASE_CONF_DIR="$BASE/conf"
    
    # if set to "1", skip use RUNNING_CONF_DIR
    test -z "$RUNNING_SKIP" && RUNNING_SKIP=0
    if [ "$RUNNING_SKIP" -ne 1 ]; then
        RUNNING_CONF_DIR="$BASE/.running_conf"
        NGINX="/opt/sian/tengine/bin/tengine -c $RUNNING_CONF_DIR/nginx-proxy.conf -p $BASE"
    else
        NGINX="/opt/sian/tengine/bin/tengine -c $BASE_CONF_DIR/nginx-proxy.conf -p $BASE"
    fi
    NGINX_PID="$BASE/logs/tengine-proxy.pid"
    CURL="/usr/bin/curl"
    STATUSURL="http://localhost:80/status.sian"
    LSTATUSURL="http://localhost:80/nginx_status"
    
    ULIMIT_MAX_FILES="ulimit -S -n $(ulimit -H -n)"
    
    if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
        $ULIMIT_MAX_FILES
    fi
    
    ERROR=0
    
    if [ "x$ARGV" = "x" ] ; then
        echo "$0 {start|stop|restart|reload|configtest|quit|rotate|nginx_status|status|upgrade}"
        exit 0
    fi
    
    merge_conf() {
        if [ "$RUNNING_SKIP" -ne 1 ]; then
            echo "init $RUNNING_CONF_DIR/"
            rm -fr $RUNNING_CONF_DIR/ && mkdir -p $RUNNING_CONF_DIR/
            echo "copy from /opt/sian/tengine/conf/  to  $RUNNING_CONF_DIR/"
            rsync -a -r --copy-unsafe-links /opt/sian/tengine/conf/ $RUNNING_CONF_DIR/
            echo "copy from $BASE_CONF_DIR/   to  $RUNNING_CONF_DIR/"
            rsync -a -r --copy-unsafe-links $BASE_CONF_DIR/ $RUNNING_CONF_DIR/
            echo "init $RUNNING_CONF_DIR/ done"
        fi
    }
    
    if [ ! -d "$BASE/data" ] ; then
        mkdir $BASE/data
    fi
    
    if [ ! -d "$BASE/logs" ] ; then
        mkdir $BASE/logs
    fi
    
    case "$ARGV" in
        start)
        merge_conf
        echo "$NGINX"
        $NGINX
        ERROR=$?
        if [ $ERROR -eq 0 ] ; then
            $CURL --silent $LSTATUSURL -H 'Host: status.sian.com' -I | grep 'HTTP/1.1 200'
            ERROR=$?
        fi
        ;;
        stop|reload|quit)
        if [ $ARGV = "reload" ];then
            merge_conf
        fi
        echo "$NGINX $ARGV"
        $NGINX -s $ARGV
        ERROR=$?
        ;;
        restart)
        if [ -f $NGINX_PID ] ; then
            echo "$NGINX -s stop"
            $NGINX -s stop
            ERROR=$?
            [ $ERROR -eq 0 ] || exit $ERROR
            sleep 1
        fi
        merge_conf
        echo "$NGINX"
        $NGINX
        ERROR=$?
        if [ $ERROR -eq 0 ] ; then
            $CURL --silent $LSTATUSURL -H 'Host: status.sian.com' -I | grep 'HTTP/1.1 200'
            ERROR=$?
        fi
        ;;
        rotate)
        echo "$NGINX -s reopen"
        $NGINX -s reopen
        ERROR=$?
        ;;
        status)
        echo 'checking nginx online ...'
        $CURL --silent $STATUSURL -H 'Host: status.sian.com' -I | grep 'HTTP/1.1 200' > /dev/null
        ERROR=$?
        if [ $ERROR -eq 0 ] ; then
            echo 'nginx online'
        else
            echo 'nginx offline'
        fi
        ;;
        nginx_status)
        echo 'checking nginx working ...'
        $CURL --silent $LSTATUSURL -H 'Host: status.sian.com' -I | grep 'HTTP/1.1 200' > /dev/null
        ERROR=$?
        if [ $ERROR -eq 0 ] ; then
            echo 'nginx ok'
        else
            echo 'nginx failed'
        fi
        ;;
        configtest)
        merge_conf
        echo "$NGINX -t"
        $NGINX -t
        ERROR=$?
        ;;
        upgrade)
        echo "Nginx upagrading, fork the new master and worker processes."
        if [ ! -f $NGINX_PID ] ; then
            $NGINX
            exit $?
        fi
        merge_conf
        kill -USR2 `cat $NGINX_PID`
        ERROR=$?
        if [ $ERROR -ne 0 ] ; then
            echo "Fork failed and check your configure or your $NGINX_PID."
            exit $ERROR
        fi
        sleep 1
        echo "Done, stop the old master and worker processes gracefully "
        kill -QUIT `cat $NGINX_PID.oldbin`
        ERROR=$?
        ;;
        *)
        echo "$0 {start|stop|restart|reload|configtest|quit|rotate|status|nginx_status|upgrade}"
        ERROR=$?
    esac
    
    exit $ERROR
    

    配置nignx使用systemctl管理

    #!/usr/bin/bash
    
    cat <<EOF>> /usr/lib/systemd/system/tengine.service
    [Unit]
    Description=tengine
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/etc/tengine/bin/nginxctl start
    ExecReload=/etc/tengine/bin/nginxctl reload
    ExecStop=/etc/tengine/bin/nginxctl stop
    Restart=always
    PrivateTmp=true
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    cat <<EOF>> /usr/lib/systemd/system/supervisord.service
    [Unit]
    Description=Process Monitoring and Control Daemon
    After=rc-local.service
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf
    SysVStartPriority=99
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # 允许开机启动
    systemctl enable supervisord.service
    systemctl enable tengine.service
    
    # 启动服务
    systemctl start supervisord.service
    systemctl start tengine.service
    
    
    
  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/vinsent/p/12262973.html
Copyright © 2011-2022 走看看