一、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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/256355.html