通过3台主机分别安装mysql,apache,php来减少服务器的压力。比如当用户访问静态网页时,静态网页交给apache服务器处理,访问动态php网站时,apache交给php来处理。动态网页要访问数据库时,php与mysql进行通信,这样的话,服务器的压力就小的多了

一、配置环境

服务器
IP 软件版本

apache

前端服务器,提供静态页面。

172.16.251.50 httpd.2.4.9

mysql

数据库服务器

172.16.251.252 mysql-5.5.33

php

后端服务器,提供动态页面。

172.16.251.203 php-5.4.26

二、各个服务器的详细配置

分别在3台主机上装上mysql,httpd,php,具体安装过程参考本博客前面的讲解

安装服务 参考博客地址
apache
mysql
php

1.http服务器的配置

1、启用httpd的相关模块,让apache能识别php格式的页面,并支持php格式的主页

这些内容在本博客中都有详细解释!

2.配置httpd的虚拟主机

先停用httpd主站点,并启用虚拟站点

编辑/etc/httpd24/httpd.conf

编辑/etc/httpd24/extra/httpd-vhosts.conf 虚拟主机的配置文件,添加内容如下:

说明:

  ProxyRequests Off:关闭正向代理

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

2.php的配置

php安装编译时执行这条语句

./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir  --with-libxml-dir=/usr/ --enable-xml --enable-sockets --enable-fpm --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d --with-bz2

其他步骤和博客上写的一样

编辑/usr/local/php/etc/php-fpm.conf  php配置文件,修改其监听的端口号,监听php服务器的地址

php动态文件要放在php服务器上,php服务器上的路径与httpd的虚拟机的站点文件路径一样,

php服务器没有此路径则手动创建

如下:

本次试验httpd的虚拟站点为/usr/local/apache1/htdocs/

则在php服务器上创建此目录:

[root@localhost etc]# mkdir /usr/local/apache1/htdocs/

在此目录下创建个index.php测试文件,内容如下:

3.mysql的配置

创建一个远程访问的账户:

用户名为root,主机地址为php服务器的地址

4.重启各服务,测试

5.安装phpMyAdmin

为了保证在访问phpMyAdmin时,静态图片能够显示,分别在apache和php服务器的站点目录下放置

同样的phpMyAdmin文件

[root@stucw ~]# cp -r php-5.4.26 /usr/local/apache1/htdocs/mysql

在php服务器下,修改phpMyAdmin的配置文件

[root@localhost etc]# cd /usr/local/apache1/htdocs/mysql/[root@localhost mysql]# vim config.inc.php

把host地址改成mysql服务器地址

用刚才创建的远程访问账户root 访问

6、总结

分离式构建LAMP,主要注意以下4点:

         1、php页面应该存储于fcgi服务器,静态资源应该放在http服务器;
         2、php以php-fpm模式工作时,不会编译成httpd的模块的,因此,不要在httpd使用LoadModule去装载模块;
         3、编译php时,如果需要驱动mysql,使用--with-mysql=mysqlnd等几个选项;
         4、授权具有行程连接访问权限的mysql用户帐号;