ユーザーが接続していない場合でもリクエストをプロキシできるように、nginx(リバースプロキシ)をWindowsサービスとして実行しようとしています。
いろいろ調べてみたところ、 winsw が.exeファイル(nginxなど)からサービスを作成できることがわかりました。
次のようにxmlファイルを作成するように言っているオンラインの多くのチュートリアルを見つけました
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>c:\nginx\nginx.exe</executable>
<logpath>c:\nginx\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p c:\nginx</startargument>
<stopargument>-p c:\nginx -s stop</stopargument>
</service>
(私はcの下のnginxと呼ばれるフォルダーにnginx.exeを持っています:oパスは正しいです)。
今問題は、サービスが作成されますが、私はそれを開始しようとすることができないようです、私はそれを開始しようとするたびに、ウィンドウがポップアップ表示されます
Error 1053: The service didn't respond to the start or control request in a timely fashion
これを修正する方法や、nginxをウィンドウサービスとして実行する別の方法をどのように修正できますか?
私は見つけました [〜#〜] nssm [〜#〜] (Non-Sucking Service Manager):私が望むことを正確に行うプログラムで、セットアップがはるかに簡単です。
ただここにつまずいて、この無料のオープンソースの選択肢で物事を動作させることができました: https://nssm.cc/
基本的には、サービスの作成に役立つGUIにすぎません。私が使用した手順:
あなたはそれから行くのが良いはずです。
[〜#〜] nssm [〜#〜] 以外のソリューションが見つかりました。それはWindows Service Wrapperであり、次の指示があります。
github を使用して、Windows Service Wrapperの最新バージョンをダウンロードします。
Winsw-xxxx.exeの名前をnginxservice.exeなどに変更します。
<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>c:\nginx\nginx.exe</executable> <logpath>c:\nginx\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p</startargument> <startargument>c:\nginx</startargument> <stopexecutable>c:\nginx\nginx.exe</stopexecutable> <stopargument>-p</stopargument> <stopargument>c:\nginx</stopargument> <stopargument>-s</stopargument> <stopargument>stop</stopargument> </service>
config GitHub page とすべての可能なオプションを示す一般的な例 here で設定に関する最新の詳細を見つけることができます。
上記の回答は、 post から取られました。
他の回答で述べたように、NSSMはNginxをサービスとして実行するのに最適なツールです。
外部のサードパーティソフトウェアを使用しない場合、これら2つの方法のいずれかを実装できます。
Windowsタスクスケジューラ
Windowsスタートアップショートカット
Nginx.exeのショートカットを1つ作成し、Windowsのスタートアップフォルダーに配置します。
この回答 に従って、起動場所を見つけます。
これはwinswに必要です
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>c:\...\nginx.exe</executable>
<logpath>...</logpath>
<logmode>roll</logmode>
<stopexecutable>c:\nginx\nginx-1.14.0\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
Nginx.confを使用していると仮定すると、<executable>
が必要です。したがって、起動引数も必要ありません。また、<stopexecutable>
および<stopargument>
s(nginx -s stop
をエミュレートするため)