提供软件包:
httpd:httpd.2.4.27.tar.gz 源码包在
apr、apr-util:需要在官网上下载
openssl-devel、pcre-devel:yum安装即可
最新版本的apr-util还需要安装expat-devel-2.0.1-11.el6_2.x86_64 在光盘上就有这个包
Php:php-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/
Mysql:mysql-5.5.33-linux2.6-x86_64.tar.gz
源码包:
系统环境 centos.6.5 X86_64三台
第一台安装httpd:IP地址为:192.168.0.201 负责外网访问
10.0.0.1 负责跟php服务器通信
第二台安装php:IP地址为:10.0.0.2负责跟web通信
11.0.0.1负责跟mysql通信
第三台安装mysql:IP地址为: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,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 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