• nginx设置开机启动


    在添加nginx服务之后,大家会希望开机伴随启动nginx,避免手动路径输入启动;

    nginx官方提供了启动脚本:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/

    我这里使用centos系统,首先,进入/etc/init.d/目录,新添加nginx文件,把上述连接中的内容粘贴到nginx文件中,

    #!/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="/usr/sbin/nginx"
         这里修改成你nginx安装时启动文件放在的路径,比如我nginx安装在/usr/local/nginx中,对应启动文件在
         /usr/local/nginx/sbin/nginx,所以把nginx启动路径换成 nginx="/usr/local/nginx/sbin/nginx"

      第二:NGINX_CONF_FILE="/etc/nginx/nginx.conf"
         这里同上面一样,我的nginx配置文件也放在 /usr/local/nginx安装目录中,具体在/usr/local/nginx/conf/nginx.conf
         所以把nginx配置路径换成 NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

    保存nginx文件,然后使用chkconfid进行管理,如下

    先将nginx服务加入chkconfig管理列表
    chkconfig --add /etc/init.d/nginx

    加完上述之后,就可以使用service对nginx进行启动,停止和重启等操作了。

    #service nginx start
    #service nginx stop
    #service nginx reload
    ...

    如果在 service nginx start时伴随提示useradd使用有误等提示,那么可以编辑 刚才创建的nginx文件,

    定位到 start()方法,把里面的 make_dirs那行注释掉,保存退出,重新启动一次就OK了。

    [Note]:

    如果在 service nginx start时,出现env: /etc/init.d/nginx: No such file or directory 问题,是因为,

    Linux和Window文本文件的行结束标志不一样,Linux下是以" "表示回车换行,Windows下是以" "表示回车换行;

    为了解决这错误,Linux提供了两种文本格式的转换命令,dos2unix和unix2dos命令;

    dos2unix命令把" "转换成" ", unix2dos命令把" "转换成" "。

    如果系统没有这两个命令,可以使用#yum -y install dos2unix unix2dos 安装,然后使用#dos2unix /etc/init.d/nginx 即可;

    再重新启动service nginx start就OK了。

  • 相关阅读:
    希尔排序算法
    java面向对象的栈 队列 优先级队列的比较
    java不用任何已有方法完全自写的去重法
    java面向对象的冒泡排序,选择排序和插入排序的比较
    java面向对象的有序数组和无序数组的比较
    Truncated incorrect DOUBLE value:
    laradock 安装多php版本
    graph-composer, 面向 composer.json的依赖图可视化( PHP + Composer )
    php基础
    php通过curl调用webservice
  • 原文地址:https://www.cnblogs.com/foundwant/p/5574965.html
Copyright © 2020-2023  润新知