首页 > 代码库 > 部署环境:基于fastcgi的主机服务分离的LAMP

部署环境:基于fastcgi的主机服务分离的LAMP

一、FastCgi与PHP-fpm

  参考: http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/


二、LAMP分离架构

wKiom1NiMKuCTbt_AAC24vJNDZM535.jpg

   资源规划:

   静态层:172.16.1.1,httpd服务器

   动态层:172.16.1.2,PHP服务器,启动php-fpm

   数据层:172.16.1.3, mysql服务器,lvm


三、数据库服务器搭建

   略,参考上一篇:部署环境:LAMP+Xcache


四、httpd服务器的搭建

    略,参考上一篇:部署环境:LAMP+Xcache


五、php服务器的搭建

   1.编译安装php

        略,参考上一篇:部署环境:LAMP+Xcache

   2.配置php-fpm

       a).为php提供配置文件

# cd /php-5.4.26
# cp php.ini-produciton /etc/php.ini

       b).为php-fpm提供服务启动脚本(编译安装默认不会生成)

# cd /php.5.4.26
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
                    //ph默认提供有脚本文件
# chmod +x /etc/rc.d/init.d/php-fpm
                    //赋予执行权限
# chkconfig --add php-fpm    
                    //将php-fpm进程添加为系统服务进程
# chkconfig php-fpm on       
                    //开机启动
# chkconfig --list php-fpm   
                    //查看启动情况

       c).为php-fpm脚本提供配置文件

# cp /usr/local/php/php-fpm.conf.default /usr/local/php/php-fpm.conf
# vim /usr/local/php/php-fpm.conf
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 2
    pm.max_spare_servers = 8
    pid = /usr/local/php/var/run/php-fpm.pid
        //配置线程池,并提供pid

       d).启动php-fpm服务进程

# service php-fpm start
# ps aux | grep php-fpm
#ss -ntl | grep ":9000"


六、http服务器与php-fpm相关配置

   1.启动httpd中fastcgi相关模块

#httpd2.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

   2.配置虚拟主机支持使用fastcgi

# vim /etc/httpd/httpd.conf
    //先禁用主配置文件的DocumentRoot项,同时启用httpd-vhost.conf配置文件
    #DocumentRoot /usr/local/apache/htdocs
    Include /etc/httpd/extra/httpd-vhosts.conf
#vim /etc/httpd/extra/httpd-vhosts.conf  //配置虚拟主机
  <VirtualHost *:80>
    DocumentRoot "/www/hoo.com"
    ServerName hoo.com
    ServerAlias www.hoo.com
   Errolog "logs/www.hoo.com_error_log"
   Customlog "logs/www.hoo.com_access_log" common
   ProxyRequsts Off    //关闭正向代理
   ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.1.2:9000/www/hoo.com/$1
        // apache服务器把以.php结尾的文件请求通过fasftcgi协议发送给PHP服务器的php-fpm进程去处理,因此php服务器上的php-fpm服务进程至少需要知道网页文件运行的目录和URI
   <Directory "www/hoo.com">
      Options none
      AllowOverride none
      Require all granted
   </Directory>
</VirtualHost>
// 172.16.1.2 为规划中的PHP服务器ip地址

    3.测试

       a).mysql授权测试用户

           参考上一篇:部署环境:LAMP+Xcache 中mysql配置

       b).新建测试页面

#vim /www/jungege.com/index.php
 <?php
$link = mysql_connect(‘172.16.1.3‘,‘test‘,‘testpass‘);
if ($link)
echo "Success...";
else
echo "Failure...";
mysql_close();
phpinfo();
?>


七、xcache配置

    略,参考上一篇:部署环境:LAMP+Xcache

本文出自 “狐狸胡” 博客,请务必保留此出处http://7944938.blog.51cto.com/7934938/1405387