65 votes

Ajouter nginx.exe comme service système Windows (comme Apache) ?

Je configure NGINX comme serveur frontal pour le contenu statique et j'utilise Apache comme serveur dorsal pour d'autres choses.

Le truc c'est que je n'arrive pas à trouver une réponse logique qui me permette de faire nginx.exe un service système Windows (comme mon Apache).

Avez-vous trouvé une réponse à cette question ?

0 votes

La question appartient à SF

85voto

Jörg Points 810

Comment le faire avec Enveloppeur de service Windows

(Remarque : il existe désormais des solutions plus simples - voir également les solutions décrites ci-dessous. Utilisation du gestionnaire de paquets "chocolatey". par suneg y en utilisant directement le NSSM de Adamy )

  1. Téléchargez la dernière version de Enveloppeur de service Windows via github o nuget .
    • La version actuelle, au moment où nous écrivons ces lignes, est la suivante v2.2.0
    • Depuis la v2.x, des exécutables pour .NET2.0 et .NET4.0 sont disponibles - les autres uniquement sur demande.
  2. Renommer winsw-*.exe à quelque chose comme nginxservice.exe .
    • C'est le nom qui apparaîtra pour le processus qui possède votre processus nginx.
  3. Placez un fichier XML à côté de l'exe avec le même nom de base, par ex. nginxservice.xml . Le contenu devrait être comme ci-dessous (vérifiez l'emplacement de votre nginx).

    <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>
  4. Exécutez la commande nginxservice.exe install en tant qu'administrateur.

Vous aurez maintenant un nginx service dans vos Services ! (Il est configuré pour démarrer automatiquement au démarrage ; si vous voulez démarrer votre serveur, vous devez démarrer manuellement le service ( net start nginx ).)


Description détaillée de la configuration correcte de nginx en tant que service Windows : http://web.archive.org/web/20150819035021/http://misterdai.yougeezer.co.uk/posts/2009/10/16/nginx-Windows-service/

Informations supplémentaires non contenues dans l'article de blog ci-dessus :

Vous pouvez également trouver la dernière version du Windows Service Wrapper via ce dépôt Maven : http://repo.jenkins-ci.org

Exemples pour Maven + Gradle :

<dependency>
    <groupId>com.sun.winsw</groupId>
    <artifactId>winsw</artifactId>
    <version>2.2.0</version>
    <classifier>bin</classifier>
    <packaging>exe</packaging>
</dependency>

<repository>
    <id>jenkinsci</id>
    <name>jenkinsci-releases</name>
    <url>http://repo.jenkins-ci.org/releases</url>
</repository>

compile "com.sun.winsw:winsw:2.2.0"

repositories {
    mavenCentral()
    maven { url http://repo.jenkins-ci.org/releases }
}

57voto

Adamy Points 735

Télécharger le formulaire NSSM http://nssm.cc/download . "Exécutez %NSSM_HOME%". \nssm.exe installer "Nginx""

Sélectionnez l'exécutable Nginx dans la boîte de dialogue NSSM, puis OK. Allez dans Services et démarrez le nouveau service créé "Nginx", terminé.

3 votes

J'ai passé quelques heures à essayer de faire la même chose avec winsw (parce que vous savez, la réponse a plus de votes positifs, donc il faut essayer d'abord) et après avoir échoué, je l'ai fait avec NSSM en quelques minutes. Awesomely merci !!

0 votes

Merci, la prochaine fois, j'essaierai plutôt avec votre solution ! L'outil semble très simple et porte un nom génial ;-)

0 votes

Excellente solution ! Fonctionne parfaitement ! Merci !

8voto

xgqfrms Points 2718

Vous pouvez utiliser start.bat y stop.bat pour obtenir le même effet.

start.bat

@ECHO OFF
REM Start Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   REM Nginx is NOT running, so start it
   c:
   cd \nginx
   start nginx.exe
   ECHO Nginx started.
) else (
   ECHO Nginx is already running.
)

stop.bat

@ECHO OFF
REM Stop Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF "%ERRORLEVEL%"=="0" (
   REM Nginx is currently running, so quit it
   c:
   cd \nginx
   nginx.exe -s quit
   ECHO Nginx quit issued.
) else (
   ECHO Nginx is not currently running.
)

1 votes

Aucune des méthodes ci-dessus n'a fonctionné. Le service a été lancé "avec succès", mais nginx.exe n'était toujours pas exécuté. Cette approche est simple, ne nécessite aucun logiciel supplémentaire, peut être invoquée automatiquement au démarrage et fonctionne toujours. Merci.

7voto

CoreTech Points 1154

SC.EXE ne fonctionnera que pour les exécutables qui prennent déjà en charge l'API des services Windows et qui peuvent répondre correctement aux demandes de démarrage et d'arrêt du gestionnaire de contrôle des services (SCM). Les autres applications ordinaires, qui ne sont pas spécifiquement écrites comme un service, ne démarreront tout simplement pas (généralement avec l'erreur 1053)...

Pour ces exe, vous avez besoin d'un "service wrapper" - un petit utilitaire qui peut accepter les commandes de démarrage/arrêt du SCM et exécuter/terminer votre application en conséquence. Microsoft fournit Srvany (qui est gratuit mais très basique), mais il existe plusieurs autres alternatives gratuites et commerciales.

BTW, vous devriez vérifier ceci guide montrant comment faire fonctionner Nginix en tant que service en particulier l'étape 7 qui explique comment arrêter Nginix correctement. Tous les wrappers ne supportent pas cette fonctionnalité (Srvany ne le fait pas)...

5voto

suneg Points 111

Le moyen le plus simple que j'ai trouvé est d'utiliser la fonction Chocolaté gestionnaire de paquets.

Une fois que Chocolatey est installé, vous ouvrez une invite administrative et tapez :

choco install nginx

Vous avez maintenant un service Windows nommé 'nginx' en cours d'exécution.

0 votes

Ceci installera nginx v1.6.2 à la date d'écriture de ce document.

0 votes

Je sais que c'est vieux, mais utilisez choco install nginx au lieu de

0 votes

Comme nous sommes maintenant en juin 2017 et que la version chocolatée de nginx est toujours la 1.6.2, qui a d'ailleurs été publiée le 16 septembre 2014, je ne l'utiliserais pas en production (même Debian est beaucoup plus à jour !). Quoi qu'il en soit j'ai besoin d'un moyen rapide de tester mon provisionnement de packer avec un serveur web sur ma machine de dev, donc je vais me lancer !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X