啟動nginx報錯問題


為了解決生產環境的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來結束進程,可以保留完整的相關信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM