最近要为公司搭建新的开发环境,打算舍弃用了n年的apache,换换口味,装个nginx试试。
在网上找了很多文档,没有一个能让我顺利安装完成的。还是自己来整理整理吧……
1,Install Pcre
来这里获取Pcre的最新版本
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
#tar -zxf pcre-7.8.tar.gz
#cd pcre-7.8
#./configure
#make
#make install
2. Install Nginx(http://www.nginx.net/)
#tar -zxf nginx-0.6.32.tar.gz
#cd nginx-0.6.32
#./configure –prefix=/usr/local/nginx-0.6.32
#make
#make install
3. Install PHP with php-fpm (http://www.php.net/)
nginx是通过fastcgi来支持PHP的,使用php-fpm补丁是一个比较方便的管理fastcgi进程的解决方案。
比通过脚本或是lighttpd的spawn模块要简单的多。
下载好PHP后,来这里获取与PHP版本相对应的php-fpm补丁:http://php-fpm.anight.org/
#tar -zxf php-5.2.6.tar.gz
#cd php-5.2.6
#zcat ../php-5.2.6-fpm-0.5.8.diff.gz | patch -p1 #为PHP打补丁
#./configure –prefix=/usr/local/php-5.2.6 –with-sqlite=shared –enable-fastcgi –enable-fpm
#make
#make install
注:PHP的其他模块(如mysql、gd等)请按需自己配置#cp php.ini-recommended /usr/local/php-5.2.6/lib/php.ini
修改php.ini
cgi.fix_pathinfo=1
4. Configuring
A. 配置nginx,在/usr/local/nginx-0.6.32/conf目录下新建名为php_fcgi.conf的文件,内容如下:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
修改nginx.conf文件,在需要支持PHP的虚拟主机配置中,加入如下一行:
include php_fcgi.conf;
B. 配置php-fpm模块,编辑/usr/local/php-5.2.6/etc/php-fpm.conf文件
找到“Unix user of processes”和“Unix group of processes”两段,将前面注释去掉,并将值改为与nginx配置相同的用户和组。如下:
Unix user of processes
<value name=”user”>www</value>Unix group of processes
<value name=”group”>www</value>
5. Test and Over
至此,所有安装配置的工作都已经完成。运行下面两行命令来启动nginx和php-fpm服务:
/usr/local/php-5.2.6/sbin/php-fpm start
/usr/local/nginx-0.6.32/sbin/nginx
正确配置后,phpinfo() 页应如下显示:
CGI/FastCGI work as Server API
由于文件内容太长,nginx.conf和虚拟主机的配置文件的内容就不放上来了
将这些乱七八糟的配置文件和php-fpm.conf一起打个包,放在这里提供下载吧
在这一堆东西里,还有一个名为nginx.sh的启动控制脚本。
当确认nginx和php-fpm均正确的配置并可以正常运行后,可以使用此脚本进行日常维护。
我根本没看懂…………..汗!
你好,我是nginx初学者,看了你的文章对我有很大的帮助。但现在我遇到一个问题需要你指点一下:
php-fpm和NGINX以及MYSQL都成功启动了,并且可以读出html文件,但无法解析php,总是提示No input file specified.
请问这个问题应该如何处理?
“No input file specified”这个信息是并不是nginx返回的,是由php-fpm模块返回。意思就是没有找到要解析的php文件。
nginx是通过类似这一块来将php的解析请求发给php-fpm来处理的
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
我估计你应该是最后一句路径的配置有问题。
感謝 kevin 的文章, 總算成功安裝, 但有一個問題
我發現在 php 文件中
使用 <? 會令文件不能運行, 必須使用 <?php 才行
但我的文件全都用了 <?, 請問有否方法解決這問題呢?
修改你的php.ini文件,找到“short_open_tag”这一行,将等号后面的“Off”改为“On”即可。
至于怎么知道你目前系统使用的php.ini在什么地方,用你的<?php方式,写一个只包含“phpinfo();”这么一行内容的程序,在显示的页面的第一屏就可以看到“Loaded Configuration File”这一项。