我设置NGINX为静态内容的前端服务器,我使用的Apache作为其他事物的后端服务器。
事情是我无法找到一个符合逻辑的答案,让我做nginx.exe
Windows系统服务(像我的Apache)。
任何遇到一个答案?
我设置NGINX为静态内容的前端服务器,我使用的Apache作为其他事物的后端服务器。
事情是我无法找到一个符合逻辑的答案,让我做nginx.exe
Windows系统服务(像我的Apache)。
任何遇到一个答案?
如何使用Windows服务包装做
(注:有希望的替代品现在- 又见NSSM解决方案在回答下面的描述从Adamy 。)
winsw-*.exe
喜欢的东西nginxservice.exe
。 将旁边的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>
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 }
}
下载NSSM形式http://nssm.cc/download 。 “快跑%NSSM_HOME%\ nssm.exe安装‘Nginx的’”
选择Nginx的可执行文件在NSSM对话框,然后单击确定。 转到服务并启动新创建的服务“的Nginx”,完成。
SC.EXE将只用于已支持Windows服务API和可以正常启动和停止从服务控制管理器(SCM)请求做出响应的可执行文件的工作。 其他常规应用,而不是专门写作为一种服务,就干脆无法启动(通常与错误1053)...
对于那些exe文件的,你需要一个“服务包装” - 一个小工具,可以接受起动/从SCM停止命令和运行/终止相应的应用程序。 微软提供了SRVANY (这是免费的,但很基本的),但也有其他一些免费的和商业的替代品。
顺便说一句,你应该看看这个指南展示如何运行Nginix作为一种服务 ,特别是第7步,其中讨论了如何正确地停止Nginix。 不是每个包装将支持该功能(SRVANY没有)...
您可以使用的start.bat和stop.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.
)
@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.
)
我发现最简单的方法,是用巧克力味包管理器。
一旦安装了的巧克力,你打开一个行政提示符下输入:
choco install nginx
现在,您有一个名为“nginx的”运行Windows服务。
从下载ZIP文件在这里 。
提取nginx-service.exe
从winginx\build
并运行它。
官方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
。
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
Create one shortcut of nginx.exe and put it in the startup folder of Windows.
Follow this answer to find your startup location.
而不是转向的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服务,并且不需要任何第三方应用程序的一切。