提供软件包:
httpd:httpd.2.4.27.tar.gz 源码包在 http://httpd.apache.org
apr、apr-util:需要在官网上下载 http://apr.apache.org
openssl-devel、pcre-devel:yum安装即可
最新版本的apr-util还需要安装expat-devel-2.0.1-11.el6_2.x86_64 在光盘上就有这个包
Php:php-5.6.31-tar .gz 源码包在 https://www.php.net/
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
源码包:https://www.mysql.com/downloads/
系统环境 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/apachetl httpd=${HTTPD-/usr/sbin/httpd} 修改为你安装的目录的二进制文件/usr/local/httpd/bin/httpd pidfile=${PIDFILE-/var/run/httpd/httpd.pid} 在系统上创建一个/var/run/httpd目录或者把run后面的httpd目录取消变成/var/run/httpd.pid 修改httpd配置文件添加 /etc/httpd/httpd.conf PidFile “/var/run/httpd.pid” //跟上面pidfile一定要对应,不然不能关闭httpd服务 [root@servers ~]# service httpd rstart
后续配置:
导出二进制文件
vim /etc/profile.d/httpd.sh export PATH=$PATH:/usr/local/httpd/bin
导出头文件
ln -sv /usr/local/httpd/include/ /usr/include/httpd
导出man文件
vim /etc/man.config MANPATH /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: NOKEY Preparing... ########################################### [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: NOKEY Preparing... ########################################### [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 ~]# ls anaconda-ks.cfg libmcrypt-2.5.8-9.el6.x86_64.rpm php-5.6.31.tar.bz2 install.log libmcrypt-devel-2.5.8-9.el6.x86_64.rpm phpMyAdmin-4.0.5-all-languages.zip install.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 ~]# ls anaconda-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]# ll total 200 drwxr-xr-x. 2 root root 4096 Aug 16 23:33 bin -rw-r--r--. 1 7161 wheel 17987 Jul 15 2013 COPYING drwxr-xr-x. 3 root root 4096 Aug 16 23:33 data drwxr-xr-x. 2 root root 4096 Aug 16 23:33 docs drwxr-xr-x. 3 root root 4096 Aug 16 23:33 include -rw-r--r--. 1 7161 wheel 134493 Jul 15 2013 INSTALL-BINARY drwxr-xr-x. 3 root root 4096 Aug 16 23:33 lib drwxr-xr-x. 4 root root 4096 Aug 16 23:33 man drwxr-xr-x. 10 root root 4096 Aug 16 23:33 mysql-test -rw-r--r--. 1 7161 wheel 2496 Jul 15 2013 README drwxr-xr-x. 2 root root 4096 Aug 16 23:33 scripts drwxr-xr-x. 27 root root 4096 Aug 16 23:33 share drwxr-xr-x. 4 root root 4096 Aug 16 23:33 sql-bench drwxr-xr-x. 3 root root 4096 Aug 16 23:33 support-files [root@mysql mysql]# chown -R root:mysql * //将此目录下的所有文件属主改为root属组改为mysql [root@mysql mysql]# ll total 200 drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 bin -rw-r--r--. 1 root mysql 17987 Jul 15 2013 COPYING drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 data drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 docs drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 include -rw-r--r--. 1 root mysql 134493 Jul 15 2013 INSTALL-BINARY drwxr-xr-x. 3 root mysql 4096 Aug 16 23:33 lib drwxr-xr-x. 4 root mysql 4096 Aug 16 23:33 man drwxr-xr-x. 10 root mysql 4096 Aug 16 23:33 mysql-test -rw-r--r--. 1 root mysql 2496 Jul 15 2013 README drwxr-xr-x. 2 root mysql 4096 Aug 16 23:33 scripts drwxr-xr-x. 27 root mysql 4096 Aug 16 23:33 share drwxr-xr-x. 4 root mysql 4096 Aug 16 23:33 sql-bench drwxr-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.sh export 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/lib ldconfig -v 重新加载库文件
导出man文件
vim /etc/man.config MANPATH /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> quit Bye
至此,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 = 9000 pm.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 php tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 119616/php-fpm [root@php php-5.6.31]# ss -tnlp |grep php LISTEN 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.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModeule前面的#号注释掉即可开启
3、配置虚拟主机支持使用fcgi
(1)启用虚拟主机
将Include前面的#号注释掉即可
在相应的虚拟主机中添加类似如下两行。
ProxyRequests Off关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
<VirtualHost *:80> 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 <Directory "/www/test.com"> Options none AllowOverride none Require all granted </Directory> </VirtualHost>
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
本文出自 “linux菜鸟” 博客,请务必保留此出处http://geekb0y.blog.51cto.com/10743719/1956852
原文地址:http://geekb0y.blog.51cto.com/10743719/1956852