通过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 | http://584014981.blog.51cto.com/8605371/1379779 |
mysql | http://584014981.blog.51cto.com/8605371/1381592 |
php | http://584014981.blog.51cto.com/8605371/1381634 |
1.http服务器的配置
1、启用httpd的相关模块,让apache能识别php格式的页面,并支持php格式的主页
这些内容在本博客http://584014981.blog.51cto.com/8605371/1381634中都有详细解释!
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
用刚才创建的远程访问账户root 访问
6、总结
分离式构建LAMP,主要注意以下4点:
1、php页面应该存储于fcgi服务器,静态资源应该放在http服务器;
2、php以php-fpm模式工作时,不会编译成httpd的模块的,因此,不要在httpd使用LoadModule去装载模块;
3、编译php时,如果需要驱动mysql,使用--with-mysql=mysqlnd等几个选项;
4、授权具有行程连接访问权限的mysql用户帐号;