之前的 这篇文章 似乎是挖了个坑一直没填,然而每每出现这种情况的时候,都会发现还偏偏总有人通过 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