Apache使用fcgi方式与PHP结合
2018-01-16 20:52
381 查看
简介
FCGI全称Fast Common Gateway Interface(快速通用网关协议),是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本,FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使服务器可以同时处理更多的网页请求。
早期的CGI技术使外部程序与Web服务器之间交互成为可能,但CGI程序运行在独立的进程中,并对每个Web请求创建一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量创建和消亡使操作系统性能大大下降,此外由于地址空间无法共享,也限制了资源重用。
FastCGI使用持续的(守护)进程来处理一连串的请求,这些进程由FastCGI服务器管理,而不是web服务器。当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器(都位于本地)或者一个TCP connection(FastCGI进程在远端的server farm)传递给FastCGI进程。
FPM介绍
FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。
具体特性和安装方式可以参照官方网站:FastCGI 进程管理器(FPM)
开始吧,GOGOGO
1.下载解压及准备编译环境不再赘述
2.创建FPM使用的用户和组
3.配置编译选项
与编译为apache模块不同的是:
删除选项 --with-apxs2=/usr/local/httpd24/bin/apxs
添加选项 --enable-fpm //启用php
--with-fpm-user=php //指定运行用户
--with-fpm-group=php //指定运行组
4.编译安装
5.更改相关文件的所属组和所属用户
配置FPM和Apache
1.复制相关配置文件
2.编辑fpm配置文件
取消如下项前的;注释符
看到有文章要配置进程数量等等,更多内容参考fpm配置文档吧,不得不说现在php的中文文档真心不错,这里我就使用dynamic了,懒.....另有关进程模型已经有很多文章了,比如这篇PHP FPM源代码反刍品味之三:
多进程模型。
对于我这个菜鸟用来玩玩的话已经够了,不用配置了,保存退出吧。
3.启用fpm
看到如下输出并使用netstat -tnl验证
4.配置apche
这里使用PROXYPASSMATCH的方式,目前应该是有4种方式可以配置的,图个简单就它了。
先填个坑,好像之前编译httpd的时候没有编译fcgi模块....我的天啊...怎么那么多坑...
编辑httpd配置文件,取消proxy_module这个模块前面的#注释符并添加如下内容:
然后重启apache测试,完工。
总结
总算给FCGI形式的php玩了一下,基本上还是能理解这种操作方式的,FCGI主要是可以将php安装到单独的主机,然后将网站使用NFS的方式进行存储。嗯,大概就是这样,唉,又快11点了,睡觉吧。
本文转载自:http://www.linuxprobe.com/fcgi-apache-php.html
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com
FCGI全称Fast Common Gateway Interface(快速通用网关协议),是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本,FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使服务器可以同时处理更多的网页请求。
早期的CGI技术使外部程序与Web服务器之间交互成为可能,但CGI程序运行在独立的进程中,并对每个Web请求创建一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量创建和消亡使操作系统性能大大下降,此外由于地址空间无法共享,也限制了资源重用。
FastCGI使用持续的(守护)进程来处理一连串的请求,这些进程由FastCGI服务器管理,而不是web服务器。当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器(都位于本地)或者一个TCP connection(FastCGI进程在远端的server farm)传递给FastCGI进程。
FPM介绍
FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。
具体特性和安装方式可以参照官方网站:FastCGI 进程管理器(FPM)
开始吧,GOGOGO
1.下载解压及准备编译环境不再赘述
2.创建FPM使用的用户和组
[root@rhel6-1 php-5.6.31]# groupadd -r php [root@rhel6-1 php-5.6.31]# useradd -r php -s /sbin/nologin -g php
3.配置编译选项
./configure --prefix /usr/local/php56 --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d --with-libxml-dir --with-openssl --with-zlib --enable-mbstring --with-mysql --enable-fpm --with-fpm-user=php --with-fpm-group=php
与编译为apache模块不同的是:
删除选项 --with-apxs2=/usr/local/httpd24/bin/apxs
添加选项 --enable-fpm //启用php
--with-fpm-user=php //指定运行用户
--with-fpm-group=php //指定运行组
4.编译安装
make -j 2 & make install
5.更改相关文件的所属组和所属用户
chown :php php56/ -R
配置FPM和Apache
1.复制相关配置文件
cp php.ini-production /etc/php.ini chown :php /etc/php.ini mkdir /etc/php.d;chown :php /etc/php.d cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm chmod +x /etc/rc.d/init.d/php-fpm
2.编辑fpm配置文件
cd /usr/local/php56/etc/ cp -p php-fpm.conf.default php-fpm.conf vim php-fpm.conf //此配置文件的路径定义在启动脚本中,如需修改可自定义
取消如下项前的;注释符
pid = run/php-fpm.pid //配置pid文件的位置,默认前缀是/usr/local/php56/var,应与启动脚本中设置的一致
看到有文章要配置进程数量等等,更多内容参考fpm配置文档吧,不得不说现在php的中文文档真心不错,这里我就使用dynamic了,懒.....另有关进程模型已经有很多文章了,比如这篇PHP FPM源代码反刍品味之三:
多进程模型。
对于我这个菜鸟用来玩玩的话已经够了,不用配置了,保存退出吧。
3.启用fpm
service php-fpm start
看到如下输出并使用netstat -tnl验证
Starting php-fpm done tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN //netstat -tnl 看到已经监听了9000端口
4.配置apche
这里使用PROXYPASSMATCH的方式,目前应该是有4种方式可以配置的,图个简单就它了。
先填个坑,好像之前编译httpd的时候没有编译fcgi模块....我的天啊...怎么那么多坑...
/root/httpd-2.4.27/modules/proxy /usr/local/httpd24/bin/apxs -c -i -a mod_proxy_fcgi.c
编辑httpd配置文件,取消proxy_module这个模块前面的#注释符并添加如下内容:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/webroot/$1 //根据自己的网站目录修改路径
然后重启apache测试,完工。
总结
总算给FCGI形式的php玩了一下,基本上还是能理解这种操作方式的,FCGI主要是可以将php安装到单独的主机,然后将网站使用NFS的方式进行存储。嗯,大概就是这样,唉,又快11点了,睡觉吧。
本文转载自:http://www.linuxprobe.com/fcgi-apache-php.html
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com
相关文章推荐
- Apache利用fcgi方式与php结合
- Apache httpd 2.4.x 使用 mod_proxy_fcgi 和 PHP-FPM 的方式
- LAMP编译安装之PHP以fpm的方式结合apache工作
- centos apache 使用 mod_proxy_fcgi 支持多版本 php
- 使用apt-get方式为Kubuntu安装PHP+MYSQL+Apache
- 关于php-fpm方式和apache配合使用的几点记录
- Apache结合spawn-fcgi使用FastCGI模式,加速数倍以上!
- PHP学习笔记:APACHE配置虚拟目录、一个站点使用多域名配置方式
- centos apache 使用 mod_proxy_fcgi 支持多版本 php
- php在apache运行的几种方式比较和使用
- Apache 配置------FastCGI方式使用PHP(包含:linux下编译安装fmod_fcgid,配置apache以支持FastCGI)
- Php与Apache的三种结合方式以及各自优缺点
- php的安装、以module方式,将php与apache结合使你的网站服务器支持php服务器脚本程序
- LAMP编译介绍一、 php以模块化的方式结合apache工作
- LAMP编译介绍二、 php以fpm的方式结合apache工作
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
- 关于php-fpm方式和apache配合使用的几点记录
- Apache,PHP,MySQL的单独安装以及使用时的相关配置(主要结合之前博客配合安装php和mysql)
- Php与Apache的三种结合方式以及各自优缺点
- 高性能PHP apache httpd 2.4.x使用mod_proxy_fcgi和php-fpm