如何部署LAMP环境(fastcgi)

PHP

1 前言
fastcgi的性能相信不用我多说各位都知道,这是我研究apache加载fastcgi模块的动力。
经过一天的奋战,终于成功地实现完全yum安装环境下fastcgi模块加载并配置成功。说实话笔者比较喜欢yum的简单易用,同时创作本文时在baidu上参阅了很多技术文档,暂时没有发现非编译安装的资料,故而本文算是首发吧!
另外在这里我要谢谢一些前辈的无私贡献,创作出已经接近的技术文档(仅fastcgi部分编译安装),同时也让我更加坚信看官网会少走弯路。所以说,做技术的英文要不断地修炼。
2 实验部分
2.1 实验环境
lampSer:
hostname=lamp-fcgi
ipaddress=10.168.0.171

client:
hostnmae=client
ipaddress=10.168.0.8
2.2 yum源的安装

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum -y install httpd mod_proxy_fcgi php-fpm mysql mysql-server php-mysql
yum -y install policycoreutils-python

2.3 配置部分
2.3.1 step1
注:如果你不想了解fastcgi的加载方式本步骤请直接跳过
检查是否引入fastcgi模块(默认开启),主配置文件:

grep ^Include /etc/httpd/conf/httpd.conf

包含如下内容:

Include conf.d/*.conf

查看fastcgi支持模块配置文件:

grep LoadModule /etc/httpd/conf.d/mod_proxy_fcgi.conf

包含如下内容:

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

2.3.2 step2
1)启动php-fpm、httpd&mysqld服务:

/etc/init.d/php-fpm start
chkconfig php-fpm on
/etc/init.d/httpd start
chkconfig httpd on
/etc/init.d/mysqld start
chkconfig mysqld on

注:关于mysql的安全设置请运行以下指令,这里不再详述!

mysql_secure_installation

2)确认php-fpm服务启用

netstat -anp | grep php

应当显示如下:

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      2547/php-fpm
unix  3      [ ]         STREAM     CONNECTED     34665  2547/php-fpm
unix  3      [ ]         STREAM     CONNECTED     34664  2547/php-fpm

2.3.3 step3
1)修改配置文件

vim /etc/httpd/conf/httpd.conf

启用并更改ServerName(去掉ServerName前面的#)
启用NameVirtaulHost(去掉ServerName前面的#)

ServerName www.cmdschool.org:80
NameVirtualHost *:80

2)新建虚拟目录:

mkdir /var/www/www.cmdschool.org

3)添加测试页面:

echo '<?php phpinfo(); ?>' > /var/www/www.cmdschool.org/index.php

4)确保selinux是Enforcing状态:

getenforce

5)恢复预设的selinux type:

restorecon -RFvv /var/www/www.cmdschool.org/

显示如下:

restorecon reset /var/www/www.cmdschool.org/index.php context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:httpd_sys_content_t:s0

6)检查当前的selinux type:

ll -dZ /var/www/www.cmdschool.org/

7)开启虚拟目录对fastcgi的支持并设置虚拟目录:

vim /etc/httpd/conf.d/www.cmdschool.org.conf

加入如下配置:

DirectoryIndex /index.php index.php
<VirtualHost *:80>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/www.cmdschool.org/$1
DocumentRoot /var/www/www.cmdschool.org
ServerName www.cmdschool.org
</VirtualHost>

<Directory /var/www/www.cmdschool.org>
Options All
AllowOverride all
</Directory>

8)重启php-fpm&httpd服务:

/etc/init.d/php-fpm restart
/etc/init.d/httpd restart

2.3.4 step4
设置防火墙:

vim /etc/sysconfig/iptables

加入如下配置:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启防火墙:

/etc/init.d/iptables restart

2.4.5 step5
In client
测试服务器
1)修改名称解析

vim /etc/hosts

确保包含www.cmdschool.org的指向10.168.0.171的唯一值:

10.168.0.171 www.cmdschool.org

2)curl测试

curl www.cmdschool.org

3)浏览器测试

参阅资料:
======================================
http://www.linuxidc.com/Linux/2013-08/88571.htm
官方参阅资料:
http://wiki.apache.org/httpd/PHP-FPM
其他参考:
http://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/#ProxyPassMatch

没有评论

发表回复

PHP
如何隐藏PHP的版本号?

1 前言 一个问题,一篇文章,一出故事。 最近外部的安全扫描发现我们一个站点对外宣告PHP的版本号, …

PHP
如何编译安装php-fpm的模块?

1 前言 一个问题,一篇文章,一出故事。 笔者最新部署了一个PHP-FPM的环境,本章将整理如何部署 …

PHP
如何获取PHP编译的配置参数?

1 前言 一个问题,一篇文章,一出故事。 笔者有时候编译PHP需要参考其他组织的编译的配置参数,于是 …