Windows命令行在任意位置啟動和退出nginx

寫在前面

本文給出Windows系統中能在任意路徑下通過命令行啟動和退出nginx的方法。不想看過程的讀者可以直接跳轉到結論,一樣能解決問題。

正文

過程

很多Windows下的nginx教程都教我們先cd到nginx安裝目錄(即nginx.exe所在目錄),再執行 start nginx 和 nginx -s quit 來分別啟動和退出nginx。但實測發現,在非安裝目錄下,執行這兩條命令會失敗,即使你已經為nginx.exe配置了環境變數。

本文中,nginx安裝目錄如下圖所示:

 

注意,除非特別說明,否則後文中nginx的安裝目錄一律用 D:\software\nginx 表示。

非安裝目錄下使用 start nginx 啟動nginx的結果如下圖所示:

注意,正常(即nginx能啟動)情況下,執行 start nginx 後會有一個窗口一閃而過,這是正常的。在非安裝目錄下,執行 start nginx 後也會有一個窗口一閃而過,但nginx根本沒起來(有上圖為證),只不過是窗口閃退,我們沒辦法看清報錯資訊罷了。

同樣,非安裝目錄下使用 nginx -s -quit 退出nginx也會失敗,好在這次直接報錯了,如下圖:

 事實上,nginx內部使用相對路徑而非絕對路徑,因此,在非安裝目錄下執行可執行文件 nginx.exe 就會出現找不到安裝路徑下的文件的情況,上圖中劃紅線部分也證實了這一點。

找到了原因,就可以對症下藥了。我們可以使用 – p 參數(使用 nginx -h 可以查看所有參數及含義)為nginx顯式指出文件路徑。具體地,啟動時使用 start nginx -p D:/software/nginx ,停止時使用 nginx -p D:/software/nginx -s quit 。

注意:

  1. 推薦使用Windows PowerShell而非cmd。親測,cmd下啟動、退出nginx後,再次啟動,會失敗,目前還未搞清原因(這裡懇請了解原因的讀者不吝賜教),但Windows PowerShell下不會出現該問題。
  2. 啟動命令中, -p D:/software/nginx 必須用英文雙引號括起來。
  3. Windows PowerShell下可直接使用 D:/software/nginx ,當然, D:\\software\\nginx 或 D:\software\nginx 也可以。

結論

第一步:將nginx.exe所在目錄加入環境變數的Path中,不會操作的讀者請自行學習。

第二步:在任意目錄下,按如下方式啟動或退出nginx:

啟動使用

start nginx "-p xxx"

 

退出使用

nginx -p xxx -s quit

 

注意:

  1.  xxx 表示 nginx.exe 所在的絕對路徑。
  2. 啟動命令中記得加英文雙引號。
  3. 推薦使用 Windows PowerShell 而非 cmd 。

寫在後面

在下剛接觸nginx,文中錯誤疏漏之處在所難免,歡迎廣大讀者批評指正,您的批評是在下前進的不竭動力。