之前的这篇文章似乎是挖了个坑一直没填,然而每每出现这种情况的时候,都会发现还偏偏总有人通过 Google 搜索过来……一定让不少人失望了,真是过意不去~于是这次重新写一篇,但愿能把坑填上……
和上次略有不同,这次 Linux 发行版是用的 CentOS,因为最近一段时间来其实我接触最多的还是 RHEL,所以就不写 Ubuntu 了。MySQL 也不在本文叙述范围之内,我实际应用的时候是直接 yum install mysql-server 装的,没有什么好说的。
nginx 用了 0.7.x 开发版。php 当然是通过 fastcgi 运行,不过没有用从 lighttpd 里分离出来的 spawn-fcgi,而是用了 php-fpm 这个补丁。
编译安装 nginx
用 yum 安装依赖包
yum install gcc openssl-devel pcre-devel zlib-devel
下载最新版的 nginx,并解压缩。
cd /usr/local/src wget http://sysoev.ru/nginx/nginx-0.7.53.tar.gz tar zxvf nginx-0.7.53.tar.gz rm -rf nginx-0.7.53.tar.gz
编译选项,取自 nginx wiki,这个配置适合 RHEL/CentOS,已经带了几个常用的模块。
cd /usr/local/src/nginx-0.7.53 ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ make make install
由于编译时指定了默认用户和组都为 nginx,所以还要创建一下。
groupadd nginx useradd -d /home/nginx -g nginx nginx
编译安装 PHP
php-fpm 只有针对 PHP 5.2.8 的补丁,尚不支持最新的 5.2.9,所以只能下载较旧的版本了。
cd /usr/local/src wget http://hk.php.net/distributions/php-5.2.8.tar.bz2 tar jxvf php-5.2.8.tar.bz2 rm -f php-5.2.8.tar.bz2
下载 php-fpm 补丁
cd /usr/local/src wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
配置安装 php
cd /usr/local/src/php-5.2.8 ./configure --enable-fastcgi --enable-fpm --with-mysql --with-mcrypt --with-zlib make make install
这个参数至少可以运行 wordpress,如果要其他更加复杂的 php 应用,可能需要加入其他 extension。
如果缺少依赖的话,试试这些
yum install mysql-devel libmcrypt-devel zlib-devel libxml2-devel libtool-ltdl-devel
nginx 和 php-fpm 的设置
nginx 的配置文件位于 /ect/nginx/nginx.conf
最好在 http {} 的 最后加入 include vhosts/*.conf;
以后其他 virtual host 可以写在 vhosts 下面
比如 一个 PHPMyAdmin 的配置可以这么写
server { listen 80; server_name sql.example.net; location / { index index.php; root /var/host/phpMyAdmin; } location ~ .*.php5?$ { include fastcgi_params; root /var/host/phpMyAdmin; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php_fcgi.sock; fastcgi_index index.php; } }
其中 unix:/var/run/php_fcgi.sock 要和 php-fpm 的配置相对应,php-fpm 的默认配置(/usr/local/etc/php-fpm.conf)也基本上够用了。要修改的大概只有这一段
/var/run/php_fcgi.sock
-1
nginx
nginx
0666
谢了。照着这个配置成功。。只是没 gd
请问怎么运行?
Pingback: nginx配合php与python | PythonCave Blog
Pingback: Nginx+PHP+PHP-FPM | PythonCave Blog