nginx安装成windows服务方法

老刘

Nginx装成Windows服务,这事儿比你想的简单多了

我前两天帮同事折腾服务器,他盯着命令行窗口一脸懵:“这黑框框一关,Nginx不就歇菜了吗?”

说实话,我第一次用Nginx的时候也这反应。在Linux上习惯了systemctl,到了Windows这儿,总不能一直开着个CMD窗口吧?那也太不专业了。

这玩意儿到底有啥用?

说白了,就是把Nginx变成一个随系统启动、能在后台默默运行的服务。你不用每次开机都手动去点那个启动脚本,系统重启了它自己就起来了——这才是正经服务器的样子嘛。

很多人觉得在Windows上搞服务配置特别麻烦,其实真不是。我折腾了这么些年,发现最靠谱的方法就两种,而且十分钟内绝对搞定

方法一:用Windows自带的SC命令(最原生)

nginx安装成windows服务方法

这个办法吧,有点“硬核”,但一旦配置好了,稳得一批。

首先,你得找到Nginx的安装目录。我习惯放D:\nginx,你放哪儿都行,记住路径就好。

然后,以管理员身份打开命令提示符(这点很重要!不然权限不够)。

接下来这行命令,你照着敲就行:

sc create Nginx binPath= "D:\nginx\nginx.exe" start= auto

敲黑板了——等号后面必须有个空格,这是Windows的奇葩规定,没这空格绝对报错。

执行完,你会看到“[SC] CreateService SUCCESS”这么一行字。成了!

这时候你打开服务管理器(Win+R,输入services.msc),就能看到一个名叫“Nginx”的服务躺在那里了。

不过先别急着启动——这里有个坑我得提醒你。直接用SC创建的服务,默认是用LocalSystem账户运行的。这个账户权限太高,有时候反而会出问题(比如某些目录访问不了)。

我建议你这么改:

  1. 在服务管理器里找到Nginx服务,右键属性
  2. 切到“登录”选项卡
  3. 选“此账户”,然后点“浏览”
  4. 输入“NETWORK SERVICE”(注意大小写),确定
  5. 密码留空就行

这样配置之后,Nginx就用网络服务账户运行了,既安全又稳定。

方法二:用WinSW(我的首选推荐)

如果你觉得SC命令太geek,那我强烈推荐WinSW。这工具本质上是个小包装器,能把任何exe包装成Windows服务。

真绝了,这玩意儿用起来简单到不像话。

先去GitHub上搜“WinSW”,下载最新版。你会得到两个文件:一个exe(主程序),一个xml(配置文件)。

把这两个文件扔到你的Nginx目录里,然后给exe改个名,比如改成nginx-service.exe

接着编辑那个xml文件,用记事本打开就行。关键配置就这几行:

<service>
  <id>nginx</id>
  <name>Nginx</name>
  <description>高性能HTTP和反向代理服务器</description>
  <executable>D:\nginx\nginx.exe</executable>
  <logpath>D:\nginx\logs</logpath>
  <logmode>rotate</logmode>
</service>

保存之后,管理员身份打开CMD,cd到Nginx目录,执行:

nginx-service install

看到“Service 'nginx' was installed successfully”就妥了。

WinSW的好处在于,它自带日志轮转、服务恢复(服务挂了自动重启)这些高级功能——这些你用SC命令得折腾半天。

那些你可能遇到的幺蛾子

我遇到过最奇葩的情况是,服务创建成功了,但死活启动不了。检查了一圈,发现是配置文件里有个中文路径没加引号。Windows对路径中的空格和特殊字符特别敏感,这种细节真能卡你半天。

还有一次,服务能启动,但就是监听不了80端口。一查,好家伙,Skype占着80端口不放(这玩意儿默认会抢80端口,你说气不气人)。要么改Skype设置,要么给Nginx换个端口。

如果你在日志里看到“bind() to 0.0.0.0:80 failed”这种错误,八成就是端口被占了。用netstat -ano | findstr :80查一下谁在捣乱。

几个实用小技巧

  1. 测试配置别用服务:改完nginx.conf之后,先直接在命令行里跑nginx -t测试语法,没问题了再重启服务。不然配置有误,服务起不来,你还得去事件查看器里翻日志。

  2. 日志是个好东西:WinSW会把服务自己的日志写在nginx-service.out.lognginx-service.err.log里。服务启动有问题,先看这里。

  3. 卸载服务别留尾巴:用SC创建的就sc delete Nginx,用WinSW的就nginx-service uninstall。删完之后,最好重启一下,确保清理干净了。

写在最后

其实吧,把Nginx装成Windows服务这事儿,真没那么多玄学。选对方法,注意细节,一次配置能用好几年。

我个人的建议是,如果你是偶尔用用,SC命令足够了。但要是正经做服务器用,WinSW更省心——它那些额外的管理功能,关键时刻能救急。

对了,最后说句大实话:长期跑Web服务,还是上Linux吧。Windows下的Nginx更多是用来本地开发测试,或者一些不得不用的场景。

但话说回来,既然现在就得在Windows上跑,那就把它跑利索了。至少别让那个黑框框一直挂在任务栏上,看着多业余啊。

行了,该说的都说完了。去配置你的服务吧,遇到问题评论区见——我通常半夜回消息,比客服靠谱多了。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,33人围观)

还没有评论,来说两句吧...

目录[+]