Nginx开机自启动脚本

编辑
  • 文档创建者:Vic.zhang
  • 浏览次数:643次
  • 编辑次数:4次
  • 最近更新:疏影横斜 于 2019-08-26
  • 虽然使用命令行可以对 Nginx 进行各种操作,比如启动等,但是还是不太方便,下面介绍在 Linux 下安装 Nginx 后,如何设置其开机自启动。

    1. CentOS6.x&RedHat6.x 配置 Nginx 开机自启动

    1.1 创建 Nginx 的管理脚本

    首先,在系统的/etc/init.d/目录下创建 nginx 文件:

    vi /etc/init.d/nginx

    点击 i 键,在脚本中添加如下内容:

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    nginx="/usr/sbin/nginx"
    prog=$(basename $nginx)
    NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    lockfile=/var/lock/subsys/nginx
    make_dirs() {
      # make required directories
      user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
         fi
         options=`$nginx -V 2>&1 | grep 'configure arguments:'`  
         for opt in $options; do
            if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                 # echo "creating" $value
                 mkdir -p $value && chown -R $user $value
                 fi
            fi
         done
      }
      start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
      }
      stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
      }restart() {
        configtest || return $?
        stop
        sleep 1
        start
      }
      reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
      }
      force_reload() {
        restart
      }
      configtest() {
        $nginx -t -c $NGINX_CONF_FILE
      }rh_status() {
        status $prog
      }
      rh_status_q() {
        rh_status >/dev/null 2>&1
      }
      case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"        
            exit 2
      esac

    以上脚本内容来自于 Nginx 官方,脚本地址:http://wiki.nginx.org/RedHatNginxInitScript 

    注意,对于自定义编译安装的 Nginx(帮助文档中提供的即是此种方式),需要根据安装路径修改脚本中这两项配置:

    nginx="/usr/nginx/sbin/nginx" ====>nginx执行程序的路径
    NGINX_CONF_FILE="/usr/nginx/conf/nginx.conf" ====>配置文件的路径

    保存脚本文件后设置文件的执行权限:

    chmod a+x /etc/init.d/nginx

    然后,就可以通过该脚本对 Nginx 服务进行管理了:

    /etc/init.d/nginx start
    /etc/init.d/nginx stop

    1.2 使用 chkconfig 设置开机自启动

    上面的步骤完成了用脚本管理 Nginx 服务的功能,接下来我们就可以使用 chkconfig 来设置 Nginx 开机启动了。

    先将nginx服务加入 chkconfig 管理列表:

    chkconfig --add /etc/init.d/nginx    

    配置完以后,就可以使用以下命令设置开机自启动等操作了:

    chkconfig nginx on     #设置开机自启动
    chkconfig nginx off    #停止开机自启动
    service nginx start    #启动 Nginx 服务
    service nginx stop     #停止 Nginx 服务
    service nginx restart  #重启 Nginx 服务
    service nginx status   #查看 Nginx 状态

    2. CentOS7.x&RedHat7.x 配置 Nginx 开机自启动

    2.1 创建 Nginx 的管理脚本

    首先,在系统的/lib/systemd/system/目录下创建 nginx.service文件:

    vi /lib/systemd/system/nginx.service

    点击 i 键,在脚本中添加如下内容:

    [Unit]
    Description=nginx service
    After=network.target
    [Service]
    Type=forking
    ExecStart=/usr/nginx/sbin/nginx
    ExecReload=/usr/nginx/sbin/nginx -s reload
    ExecStop=/usr/nginx/sbin/nginx -s quit
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target

    注意,对于自定义编译安装的 Nginx(帮助文档中提供的即是此种方式),需要根据实际路径修改脚本中的 Nginx 启动路径“/usr/nginx/sbin/nginx”。

    保存脚本文件后设置文件的执行权限:

    chmod a+x /lib/systemd/system/nginx.service

    2.2使用 systemctl 设置开机自启动

    配置完脚本以后,就可以使用以下命令设置开机自启动等操作了:

    systemctl enable nginx.service          #设置开机自启动
    systemctl disable nginx.service         #停止开机自启动
    systemctl start nginx.service          #启动 Nginx 服务
    systemctl stop nginx.service           #停止服务
    systemctl status nginx.service          #查看服务当前状态
    systemctl list-units --type=service     #查看所有已启动的服务

    附件列表


    主题: 部署集成
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]