為了解決生產環境的bug,模擬生產環境,我使用了nginx,在安裝啟動的過程中,出現了很多問題。
1、nginx下載地址
http://nginx.org/en/download.html 這是nginx的下載地址,下載穩定版
2、安裝
解壓壓縮包后,將解壓后文件放到沒有中文路徑的目錄下(若有中文,則報錯log顯示No mapping for the Unicode character exists in the target multi-byte code page)
3、啟動
可以雙擊nginx.exe啟動,或者通過命令行進入對應路徑,使用start nginx命令啟動。啟動成功后,在logs文件夾下,會多出一個nginx.pid的文件,在任務管理器中也會出現nginx.exe進程(可能會有多個)。
在這一步,啟動的時候出現了報錯,查詢錯誤日志,顯示bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)。查詢官網后,發現引起該報錯的,有三種可能。
1)防火牆開啟;
2)端口被占用;
3)嘗試修改端口;
我的本地防火牆沒開,而且也沒有修改過端口,因此直接定位為第二個原因。
通過命令行netstat -aon|findstr "80",查看端口被哪個進程占用。然后根據對應的pid進行再次查詢,tasklist | findstr "pid號",查詢具體的進程名稱。如果查詢的結果,進程並不重要,可以直接打開任務管理器關閉該進程,再重新啟動nginx,就會正常。但是,我查詢的結果為一個系統進程,不能通過任務管理器關閉,因此,我們需要更改注冊表,是端口不再被占用,然后重啟電腦。
在搜索框輸入regedit,進入注冊表編輯器,然后找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP路徑,找到里邊的start(一個reg_dword文件),將數值由3改為0,保存修改后,重啟電腦,使修改生效。
重啟后,再次啟動nginx.exe,啟動就能成功了。
4、關閉
可以通過使用命令行進入對應路徑,然后使用nginx.exe -s stop來結束進程,但是這個命令可能不會保留相關信息。
推薦使用nginx.exe -s quit來結束進程,可以保留完整的相關信息。