當前位置: 首頁>>技術教程>>正文


僅在Ubuntu上的配置測試成功後,才如何重啟nginx?

, ,

問題描述

當我在Ubuntu服務器上的命令行上重新啟動Nginx服務時,當Nginx配置文件有錯誤時,該服務將崩潰。在multi-site服務器上,這會放下所有站點,甚至沒有配置錯誤的站點。

為了防止這種情況,我首先運行nginx配置測試:

nginx -t

測試成功運行後,我可以重新啟動服務:

/etc/init.d/nginx restart

或僅在不重新啟動的情況下重新加載nignx站點配置:

nginx -s reload

在重啟命令取決於配置測試結果的情況下,是否有辦法組合這兩個命令?

我無法在網上找到它,對此的the official documentation很基本。我不太了解Linux,所以我不知道我要尋找的東西是否就在眼前。

我正在使用nginx v1.1.19。

最佳方法

實際上,據我所知,nginx會顯示一條空消息,並且如果配置錯誤,它實際上不會重新啟動。

搞砸的唯一方法是先停止nginx,然後再重新啟動。它會成功停止,但無法啟動。

次佳方法

從nginx 1.8.0開始,正確的解決方案是

sudo nginx -t && sudo service nginx reload

請注意,由於存在錯誤,即使配置文件有錯誤,configtest始終返回零退出代碼。

第三種方法

僅當配置測試成功時,我才使用以下命令重新加載Nginx(版本1.5.9):

/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload

如果您需要經常執行此操作,則可能要使用別名。我使用以下內容:

alias n='/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload'

“&&”可以完成此技巧,隻有在第一個命令成功的情況下,它才會執行第二個命令。您可以看到here有關”&&”運算符用法的更詳細說明。

如果您確實要重新啟動服務器,則可以使用”restart”代替”reload”。

第四種方法

alias nginx.start='sudo nginx -c /etc/nginx/nginx.conf'
alias nginx.stop='sudo nginx -s stop'
alias nginx.reload='sudo nginx -s reload'
alias nginx.config='sudo nginx -t'
alias nginx.restart='nginx.config && nginx.stop && nginx.start'
alias nginx.errors='tail -250f /var/logs/nginx.error.log'
alias nginx.access='tail -250f /var/logs/nginx.access.log'
alias nginx.logs.default.access='tail -250f /var/logs/nginx.default.access.log'
alias nginx.logs.default-ssl.access='tail -250f /var/logs/nginx.default.ssl.log'

然後使用命令”nginx.reload”等。

第五種方法

您可以使用/etc/init.d/nginx reloadsudo service nginx reload重新加載

如果nginx -t拋出一些錯誤,則不會重新加載

因此請使用&&同時運行

喜歡

nginx -t && /etc/init.d/nginx reload

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8081.html,未經允許,請勿轉載。