標籤:改變 mode 修改註冊表 安裝 快速 啟動 最新版 alt 微軟雅黑
今天看到nginx這個小伺服器軟體正式版更新到了1.4.2,想玩下它。這個伺服器軟體雖小,但功能強大,是開源軟體,有著良好的效能,被很多個人、企業,甚至大型企業所使用!
由於是在Windows下,所以只能雙擊運行,然後通過以下命令來管理:
Nginx/Win32是運行在一個控制台程式,而非windows服務方式的。伺服器方式目前還是開發嘗試中,Nginx/Win32可以使用以下開關來管理它:Nginx -s stop 快速關閉Nginx,可能不儲存相關資訊,並迅速終止web服務。(快速退出)Nginx -s quit 平穩關閉Nginx,儲存相關資訊,有安排的結束web服務。(平滑退出)Nginx -s reload 因改變了Nginx相關配置,需要重新載入配置而重載。(重新載入配置)Nginx -s reopen 重新開啟記錄檔。(重新載入日誌) |
如果能把它安裝成Windows服務運行,那就爽了!!在網上找了個Windows服務安裝工具:srvinstw。這個工具是可以把nginx安裝成服務,但不能被正常啟動,無法運行。只能作罷!
經過一番尋找以後,終於找到瞭解決辦法:
這裡我們需要用到一個軟體:Windows Service Wrapper,這個軟體也是開源的,而且已經很久沒有更新了,我找到的最後版本是1.9,如果你看到有新版本,記得通知我哦!使用這個軟體可以將程式安裝成服務運行。
下面我們就來具體操作:
1、下載nginx的最新版本1.10.2,解壓縮到D:\nginx,下載Windows Service Wrapper軟體1.9,拷貝到D:\nginx目錄,並重新命名為winsw。(點擊上面串連下載軟體)
2、開啟記事本,複製以下內容到裡面,另存新檔:D:\nginx\winsw.xml
<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>D:\nginx\nginx.exe</executable> <logpath>D:\nginx\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p D:\nginx</startargument> <stopargument>-p D:\nginx -s stop</stopargument> </service> |
如果你的目錄和我的不一樣,就自行修改吧!
3、以管理員身份運行cmd,輸入:D:\nginx\winsw.exe install,斷行符號,提示安裝服務完成。
此時,你的nginx可以以Windows服務運行了,可以開啟服務管理員進行服務的啟動、停止、修改自動或手動運行等,更可以使用Windows的cmd命令:net start/stop nginx來管理。是不是很方便呢?
4、驗證nginx是否工作正常:在瀏覽器中輸入
localhost或者
127.0.0.1,看到如所示,說明nginx工作正常,恭喜了! 註:這種方法在win8上好像有問題,在重新啟動電腦以後,不能隨系統啟動,原因不詳!如果你知道,請告訴我,謝謝!
補充另外一種方法: 使用微軟自己的工具來將nginx安裝為服務運行。微軟的Windows NT Resource Kit裡面有2個小工具,即:Instsrv.exe和Srvany.exe,Instsrv.exe可以給系統安裝和刪除服務,Srvany.exe可以讓程式以服務的方式運行。srvany.exe可用於將任何EXE程式作為Windows服務運行。也就是說srvany只是其註冊程式的服務外殼,這個特性對於我們來說非常實用,我們可以通過它讓我們的程式以SYSTEM賬戶啟動,或者實現隨機器啟動而自啟動,也可以隱藏不必要的視窗,比如說控制台視窗等等。 當然這個是命令列工具,而且還需要修改註冊表,比較麻煩,那麼我們就用別人的一個UI小工具來實現。點擊這裡下載這個小工具 把檔案解壓到nginx目錄裡,運行srvanyui.exe,點擊左上方綠色的加號,然後設定好,點確定(如),服務就建立好了!哈哈,簡單吧。 但是,當使用windows服務管理員停止Nginix服務後,訪問瀏覽器仍然能看到網站。查看進程,你會發現,Nginx的其中一個進程還在運行!nginx進程(根據nginx.conf的配置worker_processes 1;),Fork出來的進程顯然沒有被停止,結果就是nginx永遠關不掉。因此徹底關閉nginx請使用taskkill命令! 那麼我們只好做個stop_nginx指令碼來處理nginx停止的所有操作:
@echo offecho stopping nginx service...net stop nginxecho Kill nginx process...taskkill /F /IM nginx.exe>nul
PS:2016.10.26日更新軟體下載連結和版本!
Windows下將nginx安裝為服務運行