J’ai configuré NGINX comme serveur frontal pour le contenu statique et j’utilise Apache comme serveur principal pour autre chose.
La chose est que je ne peux pas trouver une réponse logique qui me permet de faire nginx.exe
un service de système Windows (comme mon Apache).
Quelqu’un a rencontré une réponse à cela?
Comment le faire avec Windows Service Wrapper
(Remarque: il existe des alternatives prometteuses – voir aussi la solution NSSM décrite dans la réponse ci-dessous d’ Adamy .)
winsw-1.xx-bin.exe
en quelque chose comme nginxservice.exe
.
Placez un fichier XML à côté de l’exe avec le même nom de base, par exemple nginxservice.xml
. Le contenu devrait être comme ci-dessous (vérifiez votre emplacement nginx).
nginx nginx nginx c:\nginx\nginx.exe c:\nginx\ roll -p c:\nginx c:\nginx\nginx.exe -p c:\nginx -s stop
nginxservice.exe install
. Vous aurez maintenant un service nginx
dans vos services! (Il est configuré pour démarrer automatiquement au démarrage; si vous souhaitez démarrer votre serveur, vous devez le démarrer manuellement ( 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- un service/
Informations supplémentaires non contenues dans l’article ci-dessus:
Vous pouvez également trouver la dernière version de Windows Service Wrapper via ce référentiel Maven: http://repo.jenkins-ci.org
Exemple:
com.sun.winsw winsw 2.1.2 bin exe jenkinsci jenkinsci-releases http://repo.jenkins-ci.org/releases
Téléchargez le formulaire NSSM http://nssm.cc/download . “Exécutez% NSSM_HOME% \ nssm.exe installez” Nginx “”
Sélectionnez l’exécutable Nginx dans la boîte de dialog NSSM, puis sur OK. Allez dans Services et lancez le nouveau service créé “Nginx”, terminé.
SC.EXE ne fonctionnera que pour les exécutables qui prennent déjà en charge l’API Windows Services et peuvent répondre correctement pour démarrer et arrêter les requêtes du Gestionnaire de contrôle des services (SCM). Les autres applications régulières, non spécifiquement écrites en tant que service, ne pourront tout simplement pas démarrer (généralement avec l’erreur 1053) …
Pour ces exe, vous avez besoin d’un “wrapper de service” – 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 consulter ce guide montrant comment exécuter Nginix en tant que service , en particulier l’étape 7 qui explique comment arrêter correctement Nginix. Tous les wrapper ne supporteront pas cette fonctionnalité (Srvany ne le fait pas) …
Vous pouvez utiliser start.bat et stop.bat pour obtenir le même effet.
@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. )
@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. )
Le moyen le plus simple que j’ai trouvé était d’utiliser le gestionnaire de paquets Chocolatey .
Une fois que Chocolatey est installé, vous ouvrez une invite d’administration et tapez:
choco install nginx
Vous avez maintenant un service Windows nommé ‘nginx’ en cours d’exécution.
Téléchargez le fichier zip ici .
Extrayez nginx-service.exe
de winginx\build
et exécutez-le.
Wiki officiel nginx fait référence à winginx à cette fin. Il construit exe-installer dans un environnement Linux. Processus ressemble à ceci:
sudo apt-get install nsis make wget https://github.com/InvGate/winginx/archive/master.zip unzip master.zip cd winginx-master/ make ls -lh ./build/nginx-service.exe
Pour obtenir des versions réelles, vous devez les spécifier dans Makefile
.
Plutôt que de transformer nginx en un service ou d’utiliser CMD pour démarrer un processus, ce qui ne semble vraiment pas fonctionner. J’ai trouvé que Powershell facilite le démarrage de nginx en tant que processus indépendant. J’ai combiné le démarrage de nginx avec PHP. Ci-dessous le script nommé “start-nginx.ps1”
$fcgiPort = "127.0.0.1:9000" $PHPini = "c:\php\php.ini" $ErrorActionPreference = "SilentlyContinue" function restart { Push-Location /nginx Stop-Process -Force -Name nginx Start-Process ./nginx.exe -WindowStyle Hidden Stop-Process -Force -Name php-cgi Start-Process "c:\php\php-cgi.exe" -ArgumentList ("-b" + $fcgiPort + " -c " + $PHPini) -WindowStyle Hidden Pop-Location } restart
Ce script peut être exécuté à partir de n’importe quel répertoire, mais doit être personnalisé pour l’emplacement de votre installation nginx.
Ce script inclut une tentative silencieuse de tuer nginx et PHP avant de lancer les deux.
Les systèmes Windows sont supposés reconnaître les fichiers “.ps1” en tant que powershell, même dans l’invite CMD.
J’ai créé un autre petit script pour tuer les processus en cours d’exécution, ce qui supprime simplement les lignes “start-process” de ce fichier.
Pour lancer au démarrage, j’ai utilisé la commande win-R pour naviguer dans le répertoire shell: startup
En plaçant un raccourci vers le script de démarrage dans ce répertoire, nginx démarre au démarrage!
Powershell inclut également une capacité beaucoup plus sophistiquée de planifier des tâches, et il est possible de planifier l’exécution de ce script au démarrage. Voir ce lien
De l’article:
>powershell $sortinggger = New-JobTrigger -AtStartup -RandomDelay 00:00:30 Register-ScheduledJob -Trigger $sortinggger -FilePath $HOME/start-nginx.ps1 -Name startNginx
Combiné, je pense que cette approche vous permet d’obtenir tout ce dont vous avez besoin d’un service Windows nginx et ne nécessite aucune application tierce.
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
Raccourci de démarrage Windows
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.