添加nginx.exe作为Windows系统服务(如Apache)?(Add nginx.exe a

2019-06-23 10:49发布

我设置NGINX为静态内容的前端服务器,我使用的Apache作为其他事物的后端服务器。

事情是我无法找到一个符合逻辑的答案,让我做nginx.exe Windows系统服务(像我的Apache)。

任何遇到一个答案?

Answer 1:

如何使用Windows服务包装

(注:有希望的替代品现在- 又见NSSM解决方案在回答下面的描述从Adamy 。)

  1. 下载最新版本的Windows服务包装通过github上或的NuGet 。
    • 当前版本在写这篇文章的是V2.2.0
    • 由于V2.X可执行文件的.NET2.0和.NET4.0可供选择-其他人只能上的需求。
  2. 重命名winsw-*.exe喜欢的东西nginxservice.exe
    • 这是将显示为拥有您的nginx进程的进程名称。
  3. 将旁边的exe文件具有相同的基本名称,如XML文件nginxservice.xml 。 内容应该像下面(验证您的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> 
    • 你可以找到多达约上配置的最新资讯, 配置GitHub的页面 ,显示出所有可能的选择一个通用的例子在这里和安装指南 。
  4. 运行命令nginxservice.exe install作为管理员。

现在,您将有一个nginx服务在您的服务! (它被设置为开机自动启动;如果要启动服务器,则必须手动启动该服务( net start nginx )。)


正确设置的nginx作为Windows服务的详细描述: http://web.archive.org/web/20150819035021/http://misterdai.yougeezer.co.uk/posts/2009/10/16/nginx-windows-服务/

附加信息不包含在上述博客文章:

你可以找到最新版本的Windows服务包装的也可以通过这个Maven仓库: http://repo.jenkins-ci.org

对Maven +摇篮例子:

<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 }
}


Answer 2:

下载NSSM形式http://nssm.cc/download 。 “快跑%NSSM_HOME%\ nssm.exe安装‘Nginx的’”

选择Nginx的可执行文件在NSSM对话框,然后单击确定。 转到服务并启动新创建的服务“的Nginx”,完成。



Answer 3:

SC.EXE将只用于已支持Windows服务API和可以正常启动和停止从服务控制管理器(SCM)请求做出响应的可执行文件的工作。 其他常规应用,而不是专门写作为一种服务,就干脆无法启动(通常与错误1053)...

对于那些exe文件的,你需要一个“服务包装” - 一个小工具,可以接受起动/从SCM停止命令和运行/终止相应的应用程序。 微软提供了SRVANY (这是免费的,但很基本的),但也有其他一些免费的和商业的替代品。

顺便说一句,你应该看看这个指南展示如何运行Nginix作为一种服务 ,特别是第7步,其中讨论了如何正确地停止Nginix。 不是每个包装将支持该功能(SRVANY没有)...



Answer 4:

您可以使用的start.batstop.bat且实现同样的效果。

的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.
)


Answer 5:

我发现最简单的方法,是用巧克力味包管理器。

一旦安装了的巧克力,你打开一个行政提示符下输入:

choco install nginx

现在,您有一个名为“nginx的”运行Windows服务。



Answer 6:

从下载ZIP文件在这里 。

提取nginx-service.exewinginx\build并运行它。



Answer 7:

官方nginx的维基上referes winginx用于这一目的。 它建立在Linux环境下的exe安装程序。 过程是这样的:

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

要获得实际的版本中,你应该指定它们Makefile



Answer 8:

NSSM is the best tool to run Nginx as a service.
If you do not want to use any external 3rd party software then you can implement any of these two methods.

  • Windows Task Scheduler
  • Windows startup shortcut

Windows Task Scheduler

  • As mentioned in this answer prepare one start.bat file.
  • Put this file where nginx.exe is present.
  • Open windows task scheduler and set up the task as described in this answer to run it indefinitely.
  • Do not forget to run this task as the highest privilege with the system account, more details can be found here.
  • Make the task to start daily at a certain time, through the bat file it will check whether the service is already running to avoid creating multiple nginx.exe instances.
  • If due to some reason Nginx shuts down, within 5 minutes it will start.

Windows Startup shortcut

  • Create one shortcut of nginx.exe and put it in the startup folder of Windows.

  • Follow this answer to find your startup location.

  • Nginx will run automatically whenever you log in to the system.
  • This one is the easiest. However, it is dependent on user profile i.e. if you are running Nginx on a server, it will run only for your user account, when you log off it stops.
  • This is ideal for dev environment.


Answer 9:

而不是转向的nginx到服务,或使用CMD启动一个过程,这确实似乎没有工作。 我发现,Powershell的可以很容易地nginx的启动作为分离的进程。 我组合式点燃nginx的用PHP。 下面是剧本,名为“启动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

该脚本可以从任何目录执行,但需要进行自定义您的nginx的安装位置。

该脚本包括一个沉默的尝试发射之前都杀nginx的和PHP。

Windows系统都应该承认”的.ps1" 文件作为PowerShell中,即使是在CMD提示。

我创建了另一个小的脚本来杀死正在运行的进程,它只是将删除此文件中的“启动程序”行。

在启动时运行,我用了胜利-R命令导航到该目录壳:启动

放置一个快捷方式到该目录下的启动脚本,nginx的启动在启动!

PowerShell还包括更为复杂的能力,安排任务,并有可能安排此脚本在启动时运行。 看到此链接

从文章:

 >powershell

 $trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:30
 Register-ScheduledJob -Trigger $trigger -FilePath $HOME/start-nginx.ps1 -Name startNginx

结合起来,我觉得这个方法可以让你你需要从nginx的windows服务,并且不需要任何第三方应用程序的一切。



文章来源: Add nginx.exe as Windows system service (like Apache)?