·软件知识库 ·模板素材库
注册 | 登录

您所在的位置: INDEX > linux > 用cygwin编译一个Windows下的nginx

用cygwin编译一个Windows下的nginx

许杰 Sun Jul 05 12:01:51 CST 2015 字号:

前些日子试着在CYGWIN下编译了一个nginx,然后把需要的DLL和EXE复制到windows环境下单跑,也是可以的,简单试了一下反向代理的功能,也没做啥性能的测试。

后来又网友说关于PHP支持的问题,当时自己想到的是nginx通过fastcgi来解释PHP的,所以应该是与平台没太大关系的。而昨天尝试了一下,却果然没有成功,看上去是fastcgi服务器没有能够正确获得PHP文件,而nginx的日志上却是404。胡乱折腾的最好结果也就是第一次能浏览到PHP运行结果,再刷一下页面就又是No Input File Specified 。

经过很多次的编译尝试、修改配置文件、重启服务,终于搞定了PHP的问题,虽然是最简单的应用,却也许对大家有些帮助。说说过程。

在cygwin下面编译时的配置参数如下:
./configure  --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_stub_status_module --prefix=/cygdrive/c/nginx --sbin-path=/cygdrive/c/nginx --with-cc-opt="-D FD_SETSIZE=4096"

然后复制需要的DLL文件和编译的到的nginx.exe到c:\nginx目录下,建好conf、logs等相关目录,用到的DLL我截了个图:

然后搞个windows下的PHP,我装在了c:\php。

下面是配置文件的一些片段,和PHP的fastcgi配置有关的,红色部分和默认的不太一样,经过多次尝试,貌似只能这样指定一下documentroot,我的实际的网站根目录是在c:\nginx\html

fastcgi_params文件内容:
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_FILENAME    /nginx/html$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

PHP的fastcgi server通过这个命令起来:
c:\PHP\php-cgi.exe -b 127.0.0.1:9001 -c c:\php\php.ini

网上说关于lighttpd的fastcgi的文章里有关于如何隐藏掉上面这个命令出来的dos窗口,找个RunHiddenConsole.exe就可以

nginx的配置文件里
           location ~ .*\.php$
           {
               root   html;
               include fastcgi_params;     
               fastcgi_pass  127.0.0.1:9001;
               fastcgi_index index.php;
           }

其他的貌似也没什么太复杂的地方了,昨天一开始尝试,可能和编译的配置参数有关系,上次configure时,prefix是指定为"."的。

 本来我对PHP也不是熟悉,这个试验的结果也就是phpinfo()能够返回正常的结果,至于PHP里面的一些东西以及和数据库相关的东西,没有研究,精力有限,估计也不会去折腾了。



『相关搜索』
版本信息:kms v1.3 鄂ICP备2023004815号-1 51LA统计