1.准备工作
下载相关的软件包,并安装软件所需要用到的rpm包
#wget http://nginx.org/download/nginx-1.1.18.tar.gz
#wget http://sourceforge.net/projects/pcre/files/pcre/8.31/pcre-8.31.tar.gz/download
#wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
#wget http://museum.php.net/php5/php-5.2.17.tar.gz
#wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
#wget"http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.13.tar.gz/from/http://mysql.cs.pu.edu.tw/"
#yum -y install gcc openssl-devel zlib-devel libtermcap-devel libxml2 libxml2-devel gcc-c++ make gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype* patch
2.安装PCRE
PCRE(Perl Compatible Regular Expressions)是perl语言正则表达式。安装此软件的目的是为了让nginx支持正则表达式,让nginx转发php请求到指定的应用服务器上
#tar zxvf pcre-8.31.tar.gz
#cd pcre-8.31
#./configure
#make
#make install
3.安装Nginx
#tar zxvf nginx-1.1.18.tar.gz
#cd nginx-1.1.18
#./configure --prefix=/home/soft/nginx --with-http_stub_status_module --with-http_ssl_module
#make
#make install
#ln -s /usr/local/lib/libpcre.so.1 /lib64
# ln -s /home/soft/nginx/sbin/nginx /sbin/nginx
4.安装cmake,mysql,mysql5.5版本后,需要使用cmake进行编译
#groupadd mysql
#useradd -g mysql -s /sbin/nologin -M mysql
#tar zxvf cmake-2.8.6.tar.gz
#cd cmake-2.8.6 && ./configure;make && make install
#cd ../;tar zxvf mysql-5.6.13.tar.gz
#cd mysql-5.6.13
#cmake \
-DCMAKE_INSTALL_PREFIX=/home/soft/mysql \
-DMYSQL_DATADIR=/home/soft/mysql/data \
-DSYSCONFDIR=/etc \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1
#make && make install
#chown -R mysql /home/soft/mysql/data
#/home/soft/mysql/scripts/mysql_install_db --user=mysql --basedir=/home/soft/mysql --datadir=/home/soft/mysql/data #初始化数据库
#[ -f /etc/my.cnf ] && rm -rf /etc/my.cnf
#cp support-files/my-default.cnf /etc/my.cnf
#cp support-files/mysql.server /etc/init.d/mysqld
#chmod u+x /etc/init.d/mysqld
#chkconfig --add mysqld
#ln -s /home/soft/mysql/bin/mysql /usr/bin
#ln -s /home/soft/mysql/bin/mysqladmin /usr/bin
#ln -s /home/soft/mysql/mysql/bin/mysqldump /usr/bin
#service mysqld start
5.安装PHP并整合FastCGI
在这里要说下php-fpm,这是一个用于管理FastCGI的一个PHP的补丁,安装时应该把补丁打到PHP的源码中!使用FastCGI技术可以实现应用服务器和web服务器的逻辑隔离,因此具有非常好的扩展性。启动php-fpm程序,他可以监听来至nginx转发过来的请求,并通过php应用程序对请求进行处理。这种技术和apache+php是不同的,apache是采用加载动态库的形式运行并处理php的请求。
#ln -s /usr/lib64/libjpeg.so /usr/lib/
#ln -s /usr/lib64/libpng.so /usr/lib/
#tar zxvf libmcrypt-2.5.7.tar.gz #一个php扩展模块
#cd libmcrypt-2.5.7.tar.gz;
#./configure --prefix=/usr/local/mcrypt;make;make install
#tar zxvf php-5.2.17.tar.gz
#gzip -cd php-5.2.17-fpm-0.5.14.diff.gz |patch -d php-5.2.17 -p1
#cd php-5.2.17
./configure --prefix=/home/soft/php --with-openssl --enable-fastcgi \
--enable-mbstring --enable-fpm --enable-force-cgi-redirect --enable-sockets \
--with-curl --with-gd --with-zlib --with-png-dir --with-freetype-dir \
--with-jpeg-dir --with-mysqli=/home/soft/mysql/bin/mysql_config \
--with-mysql=/home/soft/mysql --with-mcrypt=/usr/local/mcrypt
#make ;make install
#cp php.ini-dist /home/soft/php/lib/php.ini
注意:必须选择版本号向对应的php和php-fpm进行安装!!!
6.整合Nginx、FastCGI、PHP
完成了以上的安装,下面来要整合这些东西,否则无法完成请求处理!那么如何整合呢?下面我们给他们分工一下,Nginx接受访问本站点的全部请求,如果请求是静态文件就用Nginx进行处理,如果是动态的php程序文件就转发给php程序进行处理(这就涉及到正则表达式,所以在安装PCRE并让Nginx支持)。通过php-fpm进行监听转发过来的请求,并把这些请求交给php程序进行处理。处理完后返回给客户端。明白了工作原理,就可以修改Nginx和php-fmp的配置文件进行整合!
1)修改Nginx的配置文件
#vi /home/soft/nginx/conf/nginx.conf
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
# include fastcgi_params;
#}
找到以上这段,去除前面的注释号#
2)修改php-fpm的配置文件
#vi /home/soft/php/etc/php-fpm.conf
Unix user of processes
<--! <value name="user">nobody</value> -->
Unix group of processes
<--! <value name="group">nobody</value> -->
找到以上选项去掉注释 "<--!" 和 "-->"
3)测试
vi /home/soft/nginx/html/info.php
<?php
phpinfo();
?>
写下以上内容。
在浏览器上输入:http://IP/info.php ,正确的显示了php设置相关的页面,CentOS6下nginx+fastcgi+php+mysql的环境设置成功!