J'essaie d'exécuter nginx (proxy inverse) en tant que service Windows afin de pouvoir envoyer une requête par proxy même lorsqu'un utilisateur n'est pas connecté.
J'ai beaucoup cherché et trouvé winsw qui pourrait créer un service à partir d'un fichier .exe (tel que nginx).
j'ai trouvé de nombreux tutoriels en ligne disant de créer un fichier XML comme suit
<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>
(J'ai nginx.exe dans un dossier appelé nginx sous c: o les chemins sont corrects).
Maintenant, le problème est que le service est créé mais que je n'arrive pas à le faire démarrer, chaque fois que j'essaie de le démarrer, une fenêtre s'ouvre en disant
Error 1053: The service didn't respond to the start or control request in a timely fashion
Est-ce que quelqu'un sait comment puis-je réparer cela ou une autre façon d'exécuter nginx en tant que service de fenêtre?
J'ai trouvé NSSM (le gestionnaire de services non-suceurs): un programme qui fait exactement ce que je veux et qui est beaucoup plus facile à configurer.
Je suis tombé par hasard ici et j'ai réussi à faire fonctionner les choses avec cette alternative gratuite à source ouverte: https://nssm.cc/
Il s’agit essentiellement d’une interface graphique destinée à vous aider à créer un service. Les étapes que j'ai utilisées:
Vous devriez être bon à partir de là.
J'ai trouvé une autre solution que NSSM . C’est Windows Service Wrapper et voici les instructions:
Téléchargez la dernière version de Windows Service Wrapper via github .
Renommez winsw-xxxx.exe en quelque chose comme 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>
Vous trouverez des informations actualisées sur la configuration sur la page config GitHub et un exemple générique montrant toutes les options possibles ici .
La réponse ci-dessus a été prise à partir d'un post .
Comme indiqué dans d'autres réponses, NSSM est le meilleur outil pour exécuter Nginx en tant que service.
Si vous ne souhaitez utiliser aucun logiciel tiers externe, vous pouvez implémenter l'une de ces deux méthodes.
Planificateur de tâches Windows
Windows raccourci de démarrage
Créez un raccourci de nginx.exe et placez-le dans le dossier de démarrage de Windows.
Suivez cette réponse _ pour trouver votre emplacement de démarrage.
Vous en aurez besoin pour 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>
Vous aurez besoin d'un <executable>
en supposant que vous utilisez le fichier nginx.conf. Par conséquent, vous n'avez pas besoin d'arguments de démarrage, ainsi que d'un <stopexecutable>
et d'un <stopargument>
s (pour afficher nginx -s stop
).