Linux(CentOS)系统下设置nginx开机自启动

时间:2021-03-10 15:36:32

Nginx 是一个很强大的高性能Web和反向代理服务器。下面介绍在linux下安装后,如何设置开机自启动。
首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:
vi /etc/init.d/nginx

在脚本中添加如下命令:
*********************************************************************************************************************************

#!/bin/bash

# nginx Startup script for the Nginx HTTP Server

# it is v.0.0.2 version.

# chkconfig: - 85 15

# description: Nginx is a high-performance web and proxy server.

#              It has a lot of features, but it's not for everyone.

# processname: nginx

# pidfile:/usr/etc/ngin/logs/nginx.pid

# config:/usr/etc/ngin/conf/nginx.conf

nginxd=/usr/etc/ngin/sbin/nginx

nginx_config=/usr/etc/ngin/conf/nginx.conf

nginx_pid=/usr/etc/ngin/logs/nginx.pid

RETVAL=0

prog="nginx"

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.

start() {

if [ -e $nginx_pid ];then

   echo "nginx already running...."

   exit 1

fi

   echo -n $"Starting $prog: "

   daemon $nginxd -c ${nginx_config}

   RETVAL=$?

   echo

   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

   return $RETVAL

}

# Stop nginx daemons functions.

stop() {

        echo -n $"Stopping $prog: "

        killproc $nginxd

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}

# reload nginx service functions.

reload() {

    echo -n $"Reloading $prog: "

    #kill -HUP `cat ${nginx_pid}`

    killproc $nginxd -HUP

    RETVAL=$?

    echo

}

# See how we were called.

case "$1" in

start)

        start

        ;;

stop)

        stop

        ;;

reload)

        reload

        ;;

restart)

        stop

        start

        ;;

status)

        status $prog

        RETVAL=$?

        ;;

*)

        echo $"Usage: $prog {start|stop|restart|reload|status|help}"

        exit 1

esac

exit $RETVAL


*********************************************************************************************************************************
注意红色加粗部分,需要将路径改为自己机器的相应路径。

nginx.pid在哪个目录?在你安装目录的logs目录下!

接着,设置文件的访问权限:
chmod a+x /etc/init.d/nginx                                                         (a+x参数表示 ==> all user can execute  所有用户可执行)

最后将ngix加入到rc.local文件中,这样开机的时候nginx就默认启动了

vi /etc/rc.local

添加

/etc/init.d/nginx start   

保存并退出

下次重启就会生效,实现nginx的自启动。

---------------------------------------------------------------------

以上蓝色部分没有实现,我用的是chkconfig加入自动启动

cd /etc/init.d/

chkconfig --add nginx

chkconfig --level 35 nginx on

--------------------------------------------------------------------------------------------------

蓝色部分没有成功实现自启动的原因是因为rc.local没有执行权限,以下是解决方案

 最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了

#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In constrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.

翻译:

#这个文件是为了兼容性的问题而添加的。##强烈建议创建自己的systemd服务或udev规则来在开机时运行脚本而不是使用这个文件。##与以前的版本引导时的并行执行相比较,这个脚本将不会在其他所有的服务后执行。##请记住,你必须执行“chmod +x /etc/rc.d/rc.local”来确保确保这个脚本在引导时执行。

于是我有确认了下/etc/rc.local的权限

[root@localhost ~]# ll /etc/rc.locallrwxrwxrwx. 1 root root 13 8月  12 06:09 /etc/rc.local -> rc.d/rc.local[root@localhost ~]# ll /etc/rc.d/rc.local-rw-r--r--. 1 root root 477 6月  10 13:35 /etc/rc.d/rc.local

/etc/rc.d/rc.local没有执行权限,于是按说明的内容执行

  chmod +x /etc/rc.d/rc.local

重启后发现/etc/rc.local能够执行了。

看样子是版本的变迁,/etc/rc.local /etc/rc.d/rc.local正在弃用的路上。