nginx 提供了 -s signal 命令列參數讓我們對其進行操作。我們可以很方便地利用 -p prefix 參數指定啟動路徑來啟動多個完全隔離的 master 進程;還可以使用 -c filename 顯式指定不同的設定檔。
由於 prefix 的路徑一般都比較長, reload 或者 reopen nginx master 進程就會比較不方便。此時可以採用我在 在 OS X 中使用 OpenResty ? 3.捷徑 中提到的自建捷徑的形式來簡化這些操作。
更一般的,在伺服器上我們會採用作業系統提供的標準服務的方式來進行這些簡化。當然,這種方法一般僅針對一個 nginx master 進程進行操作。
本文將介紹在多個作業系統上將 nginx 註冊為服務的方式(其實,也沒有那麼多啦)。
1. Mac OS X
參照 在 OS X 中使用 OpenResty ? 2. 配置 OpenResty 環境 進行配置即可。
2. CentOS
根據 CentOS Nginx的一個初始化指令碼(用於啟動、停止、查看狀態) 一文提供的方法,我整理了代碼到 gist 上,只需要將 nginxd 下載到 /etc/init.d 並執行 addnginxservice 指令碼即可。
下面的代碼自動幫你做了上面的事:
wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/77eada5f92dd5583838390f26cc9790b00e63137/nginxd
wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/a0084d1ae6d5175c913e4593c99d493487d14c75/addnginxservice && source addnginxservice
3. Ubuntu
已經都是 Ubuntu了,自然是直接 apt-get 啦。這個沒什麼好說的。
4. Windows
nginx 的 Windows 二進位包並沒有提供註冊成為服務的功能。官方提供的方法和 Linux 相同,都是使用命令列參數進行操作。例如下面的 來自官方wiki 的方法,進入 nginx 檔案夾,啟動nginx進程:
cd nginx/
start nginx.exe
使用下面的命令查看 nginx 進程是否正在運行:
tasklist /fi "imagename eq nginx.exe"
關閉 nginx 進程:
nginx.exe -s quit
nginx 並不是為 windows 開發的,windows 版本的作用是為了方便在 windows 上工作的程式員們使用 nginx 。因此,nginx 好像並沒有什麼需要成為一個服務的動力。儘管 Running as a service. 出現在了 Possible future enhancements 列表中。
如果一定要在 windows 下將其註冊為服務的話,把 Nginx 建立為 Windows 的一個服務 (原文)一文提供了一種方式。這是一篇寫於 2009 年的文章,我並沒有在我的 Windows 8.1 上嘗試,因為我直接使用 Vagrang 了。