Chinaunix首页 | 论坛 | 博客
  • 博客访问: 428983
  • 博文数量: 94
  • 博客积分: 3066
  • 博客等级: 中校
  • 技术积分: 908
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-25 17:10
文章分类

全部博文(94)

文章存档

2016年(3)

2015年(4)

2014年(1)

2013年(9)

2012年(8)

2011年(1)

2010年(8)

2009年(4)

2008年(2)

2007年(6)

2006年(48)

我的朋友

分类: Windows平台

2013-07-17 00:33:54

http://koda.iteye.com/blog/600725


    1. 下载nginx windows版本




2. 下载微软的2个工具: instsrv.exe、srvany.exe

去微软网站下载安装Windows Server 2003 Resource Kit Tools(rktools.exe),它包括标题提及的所有必要的工具,下载完安装好。



3. 运行命令

在rktools安装目录下(一般在C:\Program Files\Windows Resource Kits\Tools目录)可以发现这两个程序.在运行下面命令之前,确保将srvany.exe复制到nginx的安装(解压)目录下,然后运行:

Command代码  收藏代码
  1. instsrv Nginx D:\nginx\srvany.exe  


这样就安装了一个名为Nginx的服务。也就是将srvany.exe注册成一个服务Nginx。Net start Nginx时,肯定会运行srvany.exe。



4. 配置Nginx的运行参数:目的是运行srvany.exe时,附带运行D:\nginx\nginx.exe程序。



可以直接将配置导入到注册表

Window register代码  收藏代码
  1. Windows Registry Editor Version 5.00  
  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]  
  3. "Application"="D:\\nginx\\nginx.exe"  
  4. "AppParameters"=""  
  5. "AppDirectory"="D:\\nginx\\"  




现在就可以通过控制面板->管理员工具->服务中找到该服务,并启动和停止了。

但是,当停止Nginix服务后,访问浏览器仍然能看到网站。查看进程,你会发
现,Nginx启动了两个nginx进程(根据nginx.conf的配置worker_processes 
1;),Fork出来的进程显然没有被停止,结果就是nginx永远关不掉。因此彻底关闭nginx请使用taskkill命令:


Command代码  收藏代码
  1. taskkill /F /IM nginx.exe > nul  


结果是写一个stop_nginx脚本来处理nginx停止的所有操作

Command代码  收藏代码
  1. @echo off  
  2. echo Stopping nginx service...  
  3. net stop nginx  
  4. echo Kill nginx process...  
  5. taskkill /F /IM nginx.exe > nul  




顺便,如果想删除服务,使用命令:

Command代码  收藏代码
  1. sc delete Nginx  




说到这,大家一定会重新思考:如果同样写一个start_nginx脚本,那么还有使用windows服务的必要吗?脚本方式运行nginx除了
有运行控制台窗口,似乎没有区别了。有好事者写了一个RunHiddenConsole.exe,可以隐藏控制台窗口。似乎完全不必考虑使用
windows服务方法了。



峰回路转,别忘记我们的初衷,使用windows服务可以在用户退出登陆时,仍然可以运行nginx进程 ,而脚本方式想如此运行就得颇费点周折,结论是windows服务仍然是有必要的,但仅用于启动nginx,至于停止nginx请使用前述脚本。


 


 


 
 
 

   
   
分享到:
     
     
   

 
阅读(2712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~