如何對nginx開機自啟動linux進行配置

一、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-tw/n/256355.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:40
下一篇 2024-12-15 12:40

相關推薦

  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變數

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變數。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • Linux網路連接激活失敗原因及解決方法

    一、網卡驅動問題 1、缺少網卡驅動 若使用新的網卡,需要安裝對應網卡驅動,否則會導致網路連接激活失敗。可通過以下命令查看當前系統中是否存在網卡驅動: lsmod | grep et…

    編程 2025-04-25
  • 如何在Windows/Linux/MacOS下安裝Python

    如果你對Python安裝一無所知,本文將從多個方面對Python在Windows/Linux/MacOS下的安裝做出詳細闡述,為初學者提供幫助。 一、Windows下Python的…

    編程 2025-04-25

發表回復

登錄後才能評論