Add nginx.exe as Windows system service (like Apache)?
我将nginx设置为静态内容的前端服务器,并将apache用作其他内容的后端服务器。
问题是我找不到一个合乎逻辑的答案来让我把
有没有遇到这个问题的答案?
如何与Windows服务,它的包装
(注:有前途的替代解决方案现在也对国有企业nssm中描述下面的答案来自adamy)。
- 这是当前版本的写作V2.2.0
- 由于v2.x executables是.net2.0 .net4.0只可用-和其他点播。
- 这是一个名称,这将出现在你的owns nginx的工艺过程。
一个XML文件到下一个地方的名称相同的文件为基础的,例如,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>c: ginx ginx.exe</executable> <logpath>c: ginx\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p</startargument> <startargument>c: ginx</startargument> <stopexecutable>c: ginx ginx.exe</stopexecutable> <stopargument>-p</stopargument> <stopargument>c: ginx</stopargument> <stopargument>-s</stopargument> <stopargument>stop</stopargument> </service> |
- 你可以找到最新信息关于在GitHub页面配置在线配置通用的例子显示,在所有可能的选项和一个安装指南。
现在你将有一个
详细描述:正确设置nginx的服务:http:/ / / / / 20150819035021 web.archive.org网站http://misterdai.yougeezer.co.uk /岗位/ 2009/10/16/nginx的服务窗口
额外的信息不包含在以上的博客帖子:
你可以找到最新版本的Windows服务包,这也通过Maven仓库:http://repo.jenkins-ci.org
实例:在Maven的+工具
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <dependency> <groupId>com.sun.winsw</groupId> 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 } } |
nssm表格下载http://nssm.cc /下载。"运行"nssm _ %家庭% nssm.exe nginx的"安装"
选择对话框中的可执行nssm nginx的,然后确定。去创造新的服务和服务"启动nginx的,"完成的。
You can using start.bat and stop.bat to realize the same effect.
start.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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 ginx start nginx.exe ECHO Nginx started. ) else ( ECHO Nginx is already running. ) |
stop.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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 ginx nginx.exe -s quit ECHO Nginx quit issued. ) else ( ECHO Nginx is not currently running. ) |
这只会工作的sc.exe executables已经支持的Windows API和服务的启动和停止恰当可以响应请求从服务控制管理器(SCM)。其他的应用程序,不写具体的服务,将我们的启动失败(通常与错误1053)…………………
这些文件是需要的,你的"服务包"——小实用工具可以在命令行启动/停止从单片机的应用和相应的运行/停止你。(这是微软提供的免费srvany还非常基本的),但有一些免费的和商业的其他替代品。
顺便说一下,你应该检查这个nginix指南显示如何运行的服务,这是讨论如何停止的STEP 7 nginix恰当。不支持这一功能,将srvany包装不是)……
我发现的方法easiest味巧克力,是使用包管理器。
一旦你安装的是一味巧克力,开放型管理和提示:
1 | choco install nginx |
你现在有一个叫nginx的运行Windows服务。
NSSM是将nginx作为服务运行的最佳工具。如果您不想使用任何外部第三方软件,那么您可以实现这两种方法中的任何一种。
- Windows任务计划程序
- Windows启动快捷方式
Windows任务计划程序
- 如本答案所述,准备一个start.bat文件。
- 把这个文件放在nginx.exe存在的地方。
- 打开Windows任务计划程序,并按照此答案中的说明设置任务以无限期运行它。
- 不要忘记以系统帐户的最高权限运行此任务,可以在此处找到更多详细信息。
- 使任务在特定时间每天启动,通过BAT文件检查服务是否已经运行,以避免创建多个nginx.exe实例。
- 如果由于某种原因nginx关闭,5分钟内它将启动。
Windows启动快捷方式
创建nginx.exe的一个快捷方式,并将其放到Windows的启动文件夹中。
按照此答案查找启动位置。
- 当您登录系统时,nginx将自动运行。
- 这是最简单的。但是,它取决于用户配置文件,即,如果您在服务器上运行nginx,它将仅为您的用户帐户运行,当您注销时,它将停止运行。
- 这是开发环境的理想选择。
而不是把nginx变成一个服务,或者使用cmd来启动一个进程,这看起来确实不起作用。我发现PowerShell可以很容易地将nginx作为独立进程启动。我已经把nginx和php结合起来了。下面是名为"start nginx.ps1"的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $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,即使在命令提示下也是如此。
我创建了另一个小脚本来终止正在运行的进程,它只是从这个文件中删除了"开始进程"行。
要在启动时运行,我使用win-r命令导航到目录shell:startup
在这个目录中放置一个启动脚本的快捷方式,nginx将在启动时启动!
PowerShell还包括一种更复杂的任务调度功能,并且可以调度此脚本在启动时运行。查看此链接
从文章中:
1 2 3 4 | >powershell $trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:30 Register-ScheduledJob -Trigger $trigger -FilePath $HOME/start-nginx.ps1 -Name startNginx |
号
结合起来,我认为这种方法可以从nginx Windows服务获得您所需要的一切,并且不需要任何第三方应用程序。
从这里下载的zip文件。
从
nginx官方Wiki指的是在线winginx用于此目的。它生成exe安装程序在Linux环境。这个过程看起来像:
1 2 3 4 5 6 | 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 |
目前的版本,你应该让他们在