1)解决Apache与FastCGI的协同工作
a)Apache服务器的操作
[root@jie1 ~]# vim /usr/local/apache/conf/httpd.conf
###########vim /usr/local/apache/conf/httpd.conf ###########
#DocumentRoot "/usr/local/apache/htdocs" #注释这行
LoadModule proxy_module modules/mod_proxy.so #开启代理的模块
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so#开启连接fastcgi的模块
Include conf/extra/httpd-vhosts.conf #开启让主配置文件载入虚拟主机的配置文件
############################################################
[root@jie1 ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
#####vim /usr/local/apache/conf/extra/httpd-vhosts.conf############
#开启一个虚拟主机即可
<VirtualHost *:80>
DocumentRoot "/web/htdocs/" #Apache服务器存放网页的目录
ServerName
<Directory "/web/htdocs">
AllowOverride None
Options None
Require all granted
</Directory>
ProxyRequests Off #关闭代理请求
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.22.2:9000/website/$1
#把接收客户端来着php的请求,转到FastCGI服务器上面去执行,website是指
#FastCGI服务存放php网页的目录
</VirtualHost>
#####################################################################
[root@jie1 ~]# mkdir -pv /web/htdocs
mkdir: created directory `/web'
mkdir: created directory `/web/htdocs'
[root@jie1 ~]# vim /web/htdocs/test.php
####vim /web/htdocs/test.php####
#测试php网页的页面
<?php
phpinfo();
?>
#####################################
[root@jie1 htdocs]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@jie1 htdocs]#
b)FastCGI服务器的操作
[root@jie2 ~]# mkdir /website #建立存放网页的目录
[root@jie2 website]# scp 172.16.22.1:/web/htdocs/test.php ./ #把Apache服务器上面的网页文件copy到FastCGI服务器上面,且存放在website目录下
[root@jie2 website]# service php-fpm restart #重启FastCGI服务器
Gracefully shutting down php-fpm . done
Starting php-fpm done
c)测试结果
2、解决PHP-FPM(FastCGI)怎么连接Memcached
因为我们之前已经在FastCGI安装了连接memcached的软件包memcache且把memcache.so模块装载到php的配置文件中了,这样就实现了PH-FPM(FastCGI)连接Memcached。
a)在Apache服务器上网页存放路径下新建mem.php的测试页面
[root@jie1 htdocs]# cat /web/htdocs/mem.php
<?php
$mem = new Memcache;
$mem->connect("172.16.22.3", 11211);
$mem->set('key','test info');
print_r($mem->get('key'));
print_r($mem->getstats());
?>
b)在FastCGI服务器上面copy mem.php的测试页面
[root@jie2 website]# scp 172.16.22.1:/web/htdocs/mem.php ./
c)测试结果
在生产环境中是否要用memcached服务器缓存数据,取决于客户请求的php程序,当用户请求的php程序中,开发人员将此程序开发需要请求memcached服务器则会用到memcached服务器来缓存客户的数据。在此仅供测试FastCGI服务器是否能连接memcached服务器。
3、解决PHP-FPM(FastCGI)怎么连接MySQL
PHP-FPM连接mysql,在编译的时候可以加这三个参数,然后PHP-FPM服务器上也可以不用安装mysql也可以连接mysqld服务器。
--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
a)在Apache服务器上网页存放路径下新建testdb.php的测试页面
[root@jie1 htdocs]# cat testdb.php
<?php
$link=mysql_connect('172.16.22.4','root','mypass');
if($link) echo "mysql test success!!";
else echo "mysql test failed!!!";
mysql_close();
?>
b)在FastCGI服务器上面copy testdb.php的测试页面
[root@jie2 website]# scp 172.16.22.1:/web/htdocs/testdb.php ./
c)测试结果
自此,已经解决WEB怎么连接PHP-FPM(FastCGI),解决PHP-FPM(FastCGI)怎么连接Memcached,解决PHP-FPM(FastCGI)怎么连接Mysql,LAMMP分别搭建在不同的服务器上且可以协同工作已经完成。
三、LAMMP适用的生产环境
由于memcached只是把数据缓存到内存中,当memcached服务器宕机之后,memcached保存的数据就丢失了,所以在电商站点对session的数据要求严格是memcached服务器不能适用于此生成环境,如果不是电商站点,只是想加快客户访问自己的网站的速度,那memcached所能提供的速度还是很大的,因为数据时直接缓存在内存中了,那速度就可以而知,“尽情期待能保存电商站点的session回话中的数据之Redis架构的搭建”。