Nginx Windows版的服務安裝和管理工具

xiangyuecn發表於2018-07-22

以前研究過負載均衡,最近正在專案上實施(從來沒做過小專案以上級別的東西,哈),nginx挺好,不過Windows有點為難,小流量和本地不追求效能,簡單易用是目標。

Nginx Windows上並沒有提供安裝為服務的方式,Windows Service多好用啊,開機自動執行。因此有了此工具,地址:https://github.com/xiangyuecn/Nginx-Windows-Service-Manager

copy之前說點什麼

一個入口,管理nginx的啟動、關閉、重啟、重新載入配置、擴充套件配置格式,夠簡單了麼,相對於我這個懶人是夠了。

以下內容copy自README

本工具用於Nginx Windows版的服務安裝和管理

xiangyuecn編寫,學習nginx之用,還沒弄懂怎麼配置nginx,先把安裝問題先解決了,不然伺服器一登出nginx也自動關掉了,首次使用於2014-02-20。

使用方法

  1. 把bin目錄內的5個檔案複製到nginx根目錄下(和nginx.exe同一目錄,參考圖1),nginx.txt為可選的配置模板檔案。

  2. 執行start.bat進行安裝/解除安裝Windows服務、管理服務執行/停止/重啟、更新配置、重新載入配置。

關於bin目錄5個檔案說明

start.bat

主指令碼,對nginx服務管理每次都執行這個指令碼即可完成輕鬆管理;如果需要調整服務名稱和配置檔名稱,更改此檔案即可,下面有專門介紹。

rolllog.vbs

配置模板檔案格式處理、日期替換更新指令碼

winsw1.9.exe

windows服務安裝器,用於把nginx安裝為系統服務,下載地址:http://central.maven.org/maven2/com/sun/winsw/winsw/1.9/ 配置介紹:https://github.com/kohsuke/winsw/blob/master/doc/xmlConfigFile.md 。

PsExec.exe

用system使用者身份執行start.bat;雙擊開啟start.bat時的身份預設時Admin,此時並不能管理system身份的nginx;start.bat會通過PsExec.exe跳轉一次執行,使用者身份就變成了system。

nginx.txt

配置模板檔案,支援任意格式重複內容只需定義一次,任何地方引用替換,大大簡化重複配置的編寫;此檔案不提供不影響使用。

關於start.bat

檔案內配置部分可以調整:

  1. 對於nginx.txt模板檔案並非一定要放到根目錄,可以放到其他地方,通過修改nginxTxt定義,指向配置模板檔案。
  2. 配置檔名稱通過confPath指定,預設為conf/nginx.conf,如果需要改成別的檔名,修改即可。
  3. 服務名稱通過svs修改,預設為Nginx。

服務安裝執行後,winsw會產生3個log檔案(參考圖1),可以刪除,winsw1.9.xml檔案不可刪除,否則無法解除安裝和啟動。

關於nginx.txt

此檔案內容可以和nginx配置檔案內容完全一致,也可以使用擴充語法,省去那些不適合手動編輯的場景。

{y}、{m}、{d}、{h}、{M}、{s}

當前時間日期變數 比如log路徑可以動態生成:

logs/access_{y}{m}{d}.log //logs/access_20101229.log
複製程式碼

內容支援巨集定義和替換

定義:DEF(標識) 巨集名稱=巨集內容 (標識)END,巨集名稱支援&、<、>、/、_、-、空格、換行、字母、數字、文字組合,巨集內容可以多行。 使用:在需要替換的地方寫上巨集名稱即可。

DEF <StaticExp>=\.(?:png|js|css|ttf|woff|eot|svg|xml|html|jpg|gif|swf)$ END

location ~*^/static/.*<StaticExp> {}
location ~*<StaticExp> {}
複製程式碼
DEF <Crt>=ssl_certificate xx.crt;
        ssl_certificate_key xx.key; END
		
...
listen 80;
listen 443 ssl;
<Crt>
...
複製程式碼

圖例

檔案組成:

圖1

安裝服務:

圖2

服務管理:

圖3

已安裝服務:

圖4

system程式:

圖5

nginx程式:

圖6

相關文章