提供软件包:

httpdhttpd.2.4.27.tar.gz 源码包在

aprapr-util:需要在官网上下载

openssl-develpcre-develyum安装即可

最新版本的apr-util还需要安装expat-devel-2.0.1-11.el6_2.x86_64 在光盘上就有这个包

Phpphp-5.6.31-tar .gz 源码包在

Mcrypt扩展:libmcrypt-2.5.8-9.el6.x86_64.rpm

libmcrypt-devel-2.5.8-9.el6.x86_64.rpm:百度搜索

Xcache加速 xcache-3.2.0.tar.gz 源码包在http://xcache.lighttpd.net/

Mysqlmysql-5.5.33-linux2.6-x86_64.tar.gz

源码包:

 

系统环境 centos.6.5 X86_64三台

第一台安装httpdIP地址为:192.168.0.201 负责外网访问

 10.0.0.1 负责跟php服务器通信

第二台安装phpIP地址为:10.0.0.2负责跟web通信

11.0.0.1负责跟mysql通信

第三台安装mysqlIP地址为:11.0.0.2负责跟php通信

 

第一台机器安装:

httpd编译安装,提供开发环境,安装gcc编译器及openssl-devel开发包,pcre-devel开发包,挂载光盘设置yum安装

# yum -y install gcc openssl-devel pcre-devel

//编译apr# tar xf apr-1.6.2.tar.gz# cd apr-1.6.2# ./configure --prefix=/usr/local/apr# make && make install//编译apr-util# tar xf apr-util-1.6.0.tar.gz# cd apr-util-1.6.0# ./configure --prefix=/usr/local/apr  --with-apr=/usr/local/apr-util# make && make install//编译安装httpd# tar xf httpd-2.4.27.tar.bz2# cd httpd-2.4.27# ./configure --prefix=/usr/local/httpd24 --sysconfdir=/etc/httpd24 --enable-so(支持DSO方式动态加载模块) --enable--ssl(开启https) --enable-cgi(支持cgi机制) --enable-rewrite(支持URL重写) --with-zlib(支持压缩) --with-pcre(支持poolcgi) --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most(启用大多数常用的模块) --enable-mpms-shared=all(安装所有mpm运行方式模块) --with-mpm=event(默认的运行方式)# make && make install# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --enable-mpms-shared=all --enable-cgi --enable-rewrite --enable-modeles=most --enable-ssl --with-zlib --with-mpm=event --with-pcre --with-apr-util=/usr/local/apr-util# make && make install

 

编译安装完成

链接:http://pan.baidu.com/s/1jIeLOqE 密码:o4vc

下载上述的httpd启动脚本,然后上传到linux系统,也可以自己安装系统自带的httpd来复制脚本

谨记:安装系统httpd所提供的httpd需要把上述所安装的目录和配置文件存放的目录跟系统的httpd存放目录不能重

 

[root@servers ~]# cp httpd /etc/init.d/[root@servers ~]# chmod +x /etc/init.d/httpd //给httpd执行权限[root@servers ~]# chkconfig --add httpd[root@servers ~]# vim /etc/init.d/httpd修改如下三项apachectl=/usr/sbin/apachectl  修改为你安装的目录的二进制文件/usr/local/httpd/bin/apachetlhttpd=${HTTPD-/usr/sbin/httpd}修改为你安装的目录的二进制文件/usr/local/httpd/bin/httpdpidfile=${PIDFILE-/var/run/httpd/httpd.pid}在系统上创建一个/var/run/httpd目录或者把run后面的httpd目录取消变成/var/run/httpd.pid修改httpd配置文件添加 /etc/httpd/httpd.confPidFile “/var/run/httpd.pid” //跟上面pidfile一定要对应,不然不能关闭httpd服务[root@servers ~]# service httpd rstart

后续配置:

导出二进制文件

vim /etc/profile.d/httpd.shexport PATH=$PATH:/usr/local/httpd/bin

导出头文件

ln -sv /usr/local/httpd/include/ /usr/include/httpd

导出man文件

vim /etc/man.configMANPATH /usr/local/httpd/man

第二台机器安装:php

提供开发环境,安装gcc编译器及openssl-devel开发包

Rpm安装:libmcrypt-2.5.8-9.el6.x86_64.rpm,libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

[root@php ~]# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm warning: libmcrypt-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing...                ########################################### [100%]   1:libmcrypt              ########################################### [100%][root@php ~]# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm warning: libmcrypt-devel-2.5.8-9.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing...                ########################################### [100%]   1:libmcrypt-devel        ########################################### [100%][root@php ~]#

编译安装php

编译安装时,要提供环境  解决依赖关系   libxml2-devel openssl-devel bzip2-devel

[root@php ~]# tar xf php-5.6.31.tar.bz2 [root@php ~]# lsanaconda-ks.cfg     libmcrypt-2.5.8-9.el6.x86_64.rpm        php-5.6.31.tar.bz2install.log         libmcrypt-devel-2.5.8-9.el6.x86_64.rpm  phpMyAdmin-4.0.5-all-languages.zipinstall.log.syslog  php-5.6.31                              xcache-3.2.0.tar.gz[root@php ~]# cd php-5.6.31[root@php php-5.6.31]# # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config(mysql另外一种通信机制) --enable-mbstring(支持多字节子串) --with-freetype-dir(字体相关) --with-jpeg-dir --with-png-dir --with-zlib(支持压缩) --with-libxml-dir=/usr --enable-xml  --enable-sockets(支持基于sockets通信) --with-apxs2=/usr/local/apache/bin/apxs() --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts(如果上面使用了event选项这里必须使用zts);本地安装mysql时使用./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2;mysql在其他主机上是使用

说明:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQLMySQL开发包了。mysqlndphp 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

部分排错:

 

如上图所示检查到gcc编译器未安装:yum -y install gcc安装即可

安装之前要先把yum配置好

 

如上图所示缺少软件包libxml2,一般编译安装都是安装开发包

yum -y install libxml2-devel

 

缺少openssl开发包 

yum -y install openssl-devel

 

缺少bzip2-devel 

yum -y install bzip2-devel

 

检查环境成功

# make && make install

 

编译php完成

 

第三台机器安装mysql

因用的是编译好的Mysql数据库,就不用安装上面所说的开发环境了

[root@mysql ~]# lsanaconda-ks.cfg  install.log  install.log.syslog  mysql-5.5.33-linux2.6-x86_64.tar.gz[root@mysql ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/提示:将mysql解压到/usr/local/目录下[root@mysql ~]# ln -sv /usr/local/mysql-5.5.33-linux2.6-x86_64/ /usr/local/mysql  //建立mysql软连接`/usr/local/mysql' -> `/usr/local/mysql-5.5.33-linux2.6-x86_64/'[root@mysql ~]#  cd /usr/local/mysql[root@mysql mysql]# groupadd -r mysql  //创建mysql组[root@mysql mysql]# useradd -r -s /sbin/nologin -g mysql mysql //创建mysql系统用户[root@mysql mysql]# lltotal 200drwxr-xr-x.  2 root root    4096 Aug 16 23:33 bin-rw-r--r--.  1 7161 wheel  17987 Jul 15  2013 COPYINGdrwxr-xr-x.  3 root root    4096 Aug 16 23:33 datadrwxr-xr-x.  2 root root    4096 Aug 16 23:33 docsdrwxr-xr-x.  3 root root    4096 Aug 16 23:33 include-rw-r--r--.  1 7161 wheel 134493 Jul 15  2013 INSTALL-BINARYdrwxr-xr-x.  3 root root    4096 Aug 16 23:33 libdrwxr-xr-x.  4 root root    4096 Aug 16 23:33 mandrwxr-xr-x. 10 root root    4096 Aug 16 23:33 mysql-test-rw-r--r--.  1 7161 wheel   2496 Jul 15  2013 READMEdrwxr-xr-x.  2 root root    4096 Aug 16 23:33 scriptsdrwxr-xr-x. 27 root root    4096 Aug 16 23:33 sharedrwxr-xr-x.  4 root root    4096 Aug 16 23:33 sql-benchdrwxr-xr-x.  3 root root    4096 Aug 16 23:33 support-files[root@mysql mysql]# chown -R root:mysql *  //将此目录下的所有文件属主改为root属组改为mysql[root@mysql mysql]# lltotal 200drwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 bin-rw-r--r--.  1 root mysql  17987 Jul 15  2013 COPYINGdrwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 datadrwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 docsdrwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 include-rw-r--r--.  1 root mysql 134493 Jul 15  2013 INSTALL-BINARYdrwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 libdrwxr-xr-x.  4 root mysql   4096 Aug 16 23:33 mandrwxr-xr-x. 10 root mysql   4096 Aug 16 23:33 mysql-test-rw-r--r--.  1 root mysql   2496 Jul 15  2013 READMEdrwxr-xr-x.  2 root mysql   4096 Aug 16 23:33 scriptsdrwxr-xr-x. 27 root mysql   4096 Aug 16 23:33 sharedrwxr-xr-x.  4 root mysql   4096 Aug 16 23:33 sql-benchdrwxr-xr-x.  3 root mysql   4096 Aug 16 23:33 support-files[root@mysql mysql]#

 

 

创建存放mysql数据库的目录,如果有条件可以使用单独的硬盘存储

[root@mysql mysql]# mkdir /data[root@mysql mysql]# [root@mysql mysql]# scripts/mysql_install_db --datadir=/data --user=mysql  //执行数据库初始化脚本,数据存放到/data目录下,使用mysql用户运行

 

执行数据库初始脚本完成

配置mysql配置文件

/etc/my.cnf重命名为/etc/my.cnf.bak

[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf

my.cnf[mysqld]条目下添加

datadir=/data

 

设置服务脚本

[root@mysql mysql]# cp -p support-files/mysql.server /etc/init.d/mysqld[root@mysql mysql]# chkconfig --add mysqld //添加到chkconfig列表中可以使用service 调用[root@mysql mysql]# chkconfig mysqld on //开机启动[root@mysql mysql]# service mysqld start

新安装的数据库是没有密码的

 

后续工作

导出二进制文件

vim /etc/profile.d/mysql.shexport PATH=$PATH:/usr/local/mysql/bin

导出头文件

ln -sv /usr/local/mysql/include/ /usr/include/mysql

导出库文件

ldconfig -p 查看所有加载的库文件vim /etc/ld.so.conf.d/mysqld.conf/usr/local/mysql/libldconfig -v 重新加载库文件

导出man文件

vim /etc/man.configMANPATH /usr/local/mysql/man

 

配置mysql服务器

[root@mysql ~]# mysql删除空账号mysql> use mysql;Database changed mysql> select user,host,password from user;+------+-----------+----------+| user | host      | password |+------+-----------+----------+| root | localhost |      || root | mysql   |      || root | 127.0.0.1 |      || root | ::1     |      ||      | localhost |          ||      | mysql   |        |+------+-----------+----------+6 rows in set (0.02 sec) mysql> drop user ''@'localhost';Query OK, 0 rows affected (0.00 sec) mysql> drop user ''@'mysql';Query OK, 0 rows affected (0.00 sec)mysql> select user,host,password from user;+------+-----------+----------+| user | host      | password |+------+-----------+----------+| root | localhost |          || root | mysql     |          || root | 127.0.0.1 |          || root | ::1       |          |+------+-----------+----------+4 rows in set (0.00 sec)设置密码mysql> update user set password=password('密码');Query OK, 4 rows affected (0.02 sec)Rows matched: 4  Changed: 4  Warnings: 0创建允许php登录的用户并授权mysql> grant all on *.* to 'php'@'11.0.0.1' identified by '123456';Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> quitBye

至此,mysql配置完成

 

配置php

 

提供配置文件[root@php php-5.6.31]# pwd/root/php-5.6.31[root@php php-5.6.31]# cp php.ini-production /etc/php.ini提供开机启动脚本 [root@php php-5.6.31]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm[root@php php-5.6.31]# chmod +x /etc/init.d/php-fpm[root@php php-5.6.31]# chkconfig --add php-fpm为php-fpm提供配置文件[root@php php-5.6.31]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

 

编辑php-fpm的配置文件:# vim /usr/local/php5/etc/php-fpm.conf配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):pid = run/php-fpm.pid listen = 127.0.0.1:9000 监听的IP及端口  改为 listen = 9000pm.max_children = 50  最多最大子进程数pm.start_servers = 5   启动几个进程pm.min_spare_servers = 2最小线程数pm.max_spare_servers = 8最大线程数 接下来就可以启动php-fpm了:# service php-fpm start 使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):# ps aux | grep php-fpm 默认情况下,fpm监听在127.0.0.1的9000端口也可以使用如下命令验正其是否已经监听在相应的套接字。[root@php php-5.6.31]# netstat -tnlp |grep phptcp        0      0 0.0.0.0:9000                0.0.0.0:*                   LISTEN      119616/php-fpm   [root@php php-5.6.31]# ss -tnlp |grep phpLISTEN     0      128                       *:9000                     *:*      users:(("php-fpm",119616,7),("php-fpm",119617,0),("php-fpm",119618,0),("php-fpm",119619,0),("php-fpm",119620,0),("php-fpm",119621,0))

至此php已经配置完成

 

配置httpd服务器

1、编辑httpd配置文件httpd.conf,让httpd能识别php格式的页面,并支持php格式的主页

# vim /etc/httpd/httpd.conf

 (1)添加如下二行

  AddType application/x-httpd-php  .php   AddType application/x-httpd-php-source  .phps

 (2)定位至DirectoryIndex index.html

   修改为:

DirectoryIndex  index.php  index.html

 

2、启用httpd的相关模块

 

Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.soLoadModeule前面的#号注释掉即可开启

3、配置虚拟主机支持使用fcgi

(1)启用虚拟主机

 

Include前面的#号注释掉即可

在相应的虚拟主机中添加类似如下两行。 

 ProxyRequests Off关闭正向代理  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

例如:

    DocumentRoot "/www/test.com"    ServerName test.com    ServerAlias www.test.com   ProxyRequests Off  ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.0.2:9000/www/test.com/$1     
        Options none        AllowOverride none        Require all granted    

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://10.0.0.2:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

重新载入配置文件或重启服务

service httpd reload | service httpd restart