Cygwin安装nginx启用cgi并转为daemon模式

Cygwin安装nginx就不多说了,需要PCRE和zlib,我这安装的1.2.6版本,因为是windows环境,需要修改主配置worker_connections到64以下,超过64会报错,可以用如下方式解决。

  • 把ngx_select_module事件处理模块去掉,通过在执行configure时指定参数—without-select_module。
  • 修改nginx的配置文件(c:\nginx\conf\nginx.conf),把这个文件第13行的1024改为64(worker_connections指令的值)。
  • 在执行configure时指定额外的编译选项(--with-cc-opt=”-D FD_SETSIZE=2048”),这同样也可以解决上面的问题。

关键在于如何加载cgi,老外有个安装php-fpm的文章将的比较详细,也有翻译过来的,那个需要修改多个源码文件,文章具体地址我就懒的再找了,自己搜。这里不用php-fpm,php-cgi.exe就可以实现类似的功能,测试环境性能完全可以忽略了,php-cgi -b :9000 -c D:\Program Files\php-5.3.10-Win32-VC9-x86\php.ini 监听9000端口。

这里贴一个通用的PHP cgi调用,需要解析php的地方直接包含这个文件就可以了。

conf/php5

location ~* \.php($|/) {
	include fastcgi_params;
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_param SCRIPT_FILENAME   $winPath$fastcgi_script_name;
	fastcgi_param SERVER_NAME       $server_name;
	fastcgi_param PATH_INFO         $fastcgi_script_name;
}

$winPath是上层配置中设置的,$document_root是cygwin格式的,应该就是root设置的那个路径。但是PHP在windows中(没有在cygwin中安装PHP)只认识windows格式的路径,所以需要单独设置这个路径。

conf/conf.d/test.conf

server {
	listen       80;
	server_name  test;
	root /cygdrive/e/document/www_root/test;

	set $winPath e:/document/www_root/test;

	location / {

	}
	include php5;
}

php-cgi转为daemon模式

web server环境没问题了,但是每次都要开着cgi的窗口,而且开机需要手动启动。

cygwin可以把程序安装成windows的系统服务,这样就可以后台运行并且自动启动了,cgi的参数睁大眼睛看清楚了。

$ cygrunsrv -I php-fcgi -p /cygdrive/d/Program\ Files/php-5.3.10-Win32-VC9-x86/php-cgi.exe -a "-b 127.0.0.1:9000 -c \"D:\Program Files\php-5.3.10-Win32-VC9-x86\php.ini\""
$ cygrunsrv -S php-fcgi

虽然在cygwin下,但是php-cgi.exe本质是windows程序所以-c不能使用cygwin格式的路径

也可以使用bat脚本实现开机自动启动,因为windows下可以穿透cygwin直接执行shell命令

Cygwin安装nginx启用cgi并转为daemon模式》上有1条评论

  1. Pingback引用通告: Cygwin安装nginx启用cgi并转为daemon模式 | 乐都网技术团队博客

发表评论

电子邮件地址不会被公开。

CAPTCHA

*