一、Linux开机自启动配置文件
Linux系统下,开机自启动需要在/etc/init.d/目录下的脚本文件中配置。这是系统启动时会自动执行的脚本目录,我们可以在该目录下创建适当的脚本,使其达到开机自启动的效果。
首先,在/etc/init.d/目录下创建一个新的nginx脚本:
sudo touch /etc/init.d/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
# 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/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
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
}
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)
$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|reload|force-reload|condrestart}"
exit 2
esac
exit $?
在指定完毕后,需要赋予权限:
sudo chmod 755 /etc/init.d/nginx
二、Nginx开机自启动linux
在Nginx脚本文件配置好之后,我们将该脚本注册成为服务,随着服务器的启动而启动。使用如下命令:
sudo chkconfig --add nginx
sudo chkconfig --level 345 nginx on
三、Linux开机自启动项
开机自启动项主要是使用chkconfig命令,使用数字标记开启,则相应的服务会在启动时开启,否则就是关闭。如果只想让某个服务在指定级别下开启或关闭,则必须加上 --list 和 --level 参数指定级别。
在linux系统中,有七个级别:
0:关机
1:单用户模式
2:不完全的多用户模式,不含NFS服务
3:完全的多用户模式
4:系统未使用保留
5:X11控制台模式
6:重启
如果想要让nginx开机自启动,则需要设置在3、4、5级别下开启。在执行如下命令:
sudo chkconfig --add nginx
sudo chkconfig --level 345 nginx on
四、Linux设置nginx开机自启动
在前面的配置中,我们已经配置好了nginx的开机自启动项,但是这只是一部分,需要进一步配置才能实现每次开机自动启动nginx。
编辑/etc/rc.local文件,添加如下内容:
sudo vim /etc/rc.local
将下面的命令添加到里面:
/usr/local/nginx/sbin/nginx
然后,配置文件设置为开机自启动:
sudo chmod +x /etc/rc.local
五、Nginx开机自启动命令
在前面的脚本文件中我们已经定义好了Nginx服务的启动、停止和重启命令,分别为:
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
如果我们想要手动启动或停止nginx服务,只需要执行下面的命令即可:
/etc/init.d/nginx start
/etc/init.d/nginx stop
六、Nginx开机自启动脚本
上面提供的是一个完整的nginx开机自启动脚本,我们可以根据自己的需要,来对其进一步的修改。例如,我们可以修改Nginx服务的日志输出地址,从/var/log/nginx/error.log修改为/var/log/nginx/nginx_error.log,同时,我们也可以修改启动命令等。以下是修改过的脚本:
#!/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
# 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/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
PID_FILE="/var/run/nginx.pid"
ERROR_LOG="/var/log/nginx/nginx_error.log"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE -p /usr/local/nginx -g "pid $PID_FILE;" -e $ERROR_LOG
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
}
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
start
;;
stop)
rh_status_q || exit 0
stop
;;
restart)
restart
;;
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|reload|force-reload|condrestart}"
exit 2
esac
exit $?
七、Nginx开机自启动Windows
Nginx在Windows下自启动,需要在服务中进行注册,然后手动启动服务即可。下面是注册服务的步骤:
1、创建nginx.vbs文件,内容如下:
Dim xShell
Set xShell = CreateObject("WScript.Shell")
xShell.Run "cmd.exe /c echo nginx -p F:/webserver/nginx-1.19.8/ -c F:/webserver/nginx-1.19.8/conf/nginx.conf > F:/webserver/nginx-1.19.8/runNginx.bat", 0
Set xShell = nothing
2、将脚本运行:
cscript nginx.vbs
3、打开服务(services.msc),找到Nginx,单击启动。
八、Nginx开机自启动管理员权限
在Windows下,注册服务需要管理员或system权限,否则会提示拒绝访问。可以使用以下命令解决这个问题:
sc.exe create Nginx binPath= "D:\Nginx\nginx.exe" start= auto DisplayName= "Nginx" obj= "NT AUTHORITY\LocalService" password= ""
九、Nginx开机自启动脚本Windows
在Windows下,可以使用如下脚本实现Nginx开机自启动:
@echo off
set NginxPath=D:\webserver\nginx-1.19.4
set log_file_path=%NginxPath%\logs\
set pid_file_path=%NginxPath%\logs\nginx.pid
setlocal
set LOGFILE=%log_file_path%nginx.log
set ERRORFILE=%log_file_path%nginx_error.log
set BIN_PATH=%NginxPath%
set WORKING_PATH=%NginxPath%
set ARGS=-p "%BIN_PATH%" -c conf/nginx.conf
set pID=
tasklist /fi "imagename eq nginx.exe" | find ":" >nul && (
echo nginx is already running
goto end
)
echo Starting nginx server [nginx] ...
cd /d %WORKING_PATH%
start nginx.exe %ARGS%
ping -n 2 127.0.0.1 >nul
set /a pID=0
for /f "tokens=2" %%i in ('tasklist /fi "imagename eq nginx.exe" /nh') do set /a pID=%%i
echo ... done [PID: %pID%].
:end