apache+配置+mod_php,apache+php用fastcgi模式代替mod_php模式

林冥夜
2023-12-01

apache下php配置fastcgi代替mod_php

(大红色字体表示关键部分)

环境rhed5.4

所需包

httpd-2.2.17.tar.gzphp-5.2.13.tar.gzmod_fastcgi-2.4.6.tar.gz php-5.2.13-fpm-0.5.13.diff.gz

apache 的安装

#cd /usr/local/src/tarbag

#wget http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.17.tar.gz

#tar -zxvf http-2.2.17.tar.gz -C  ../software

# cd ../software/http-2.2.17

#./configure --prefix=/usr/local/apache2.2.17--with-mpm=worker--enable-so--enable-rewrite --enable-headers --enable-expires--enable-mods-shared=all

# make

# make install

给apache安装mod_fastcgi模块

#cd /usr/local/src/tarbag

#wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz

#tar -zxvf mod_fastcgi-2.4.6.tar.gz -C ../softwar

#cd ../software/mod_fastcgi-2.4.6

#cp Makefile.AP2 Makefile

编辑Makefile文件

#vim Makefile

修改 apache的安装路径

top_dir=/usr/local/apache2.2.17

#make

#make install

查看在apache的modules的目录下是否有mod_fastcgi.so模块

有,则说明成功

Php的安装

#cd /usr/local/src/tarbag

#wget http://museum.php.net/php5/php-5.2.13.tar.gz

#tar -zxvfphp-5.2.13.tar.gz-C  ../software

#cd ../software/php-5.2.13.tar.gz

#wget  http://php-fpm.org/downloads/php-5.2.13-fpm-0.5.14.diff.gz

在下一步要给PHP打个补丁

#gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d  /usr/local/src/software/php-5.2.13  -p1

(这条的命令的作用解压php-5.2.13-fpm-0.5.13.diff.gz给/usr/local/src/software/php-5.2.13的顶层目录打上个补丁)

#./configure --prefix=/usr/local/php5.2.13 --with-config-file-path=/usr/local/php5.2.13/etc--enable-fastcgi --enable-force-cgi-redirect --enable-fpm--with-bz2 --with-curl --with-curlwrappers --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local  --with-zlib --enable-zend-multibyte --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql

#make

#make install

#cp -a php.ini-dist /usr/local/php2.2.13/etc/php.ini

编辑php-fpm的配置文件/usr/local/php5.2.13/etc/php-rmp.conf

将这两行的注释去掉

否则会出现如下错误

[ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool 'default'

这里试下是否安装rmp成功

#/usr/local/php5.2.13/sbin/php-fpm start

netstat -ntlp 查看9000端口是否开启,开启则代表插件安装成功

先关闭php

#/usr/local/php5.2.13/sbin/php-fpm stop

下面有两种方法来启用php

1.利用apache来管理php进程

#mkdir /usr/local/apache2.2.17/fcgi-bin

#ln -s /usr/local/php/bin/php-cgi /usr/local/apache2.2.17/fcgi-bin/php-cgi

如果用apache的内部的fpm(fastcgi process manager)

LoadModule fastcgi_module modules/mod_fastcgi.so  添加模块

#

ScriptAlias /fcgi-bin/ "/usr/local/apache2.2.17/fcgi-bin/"  程序目录的别名

FastCgiServer /usr/local/apache2.2.17/fcgi-bin/php-cgi -processes 10

开启10个php进程

AddType application/x-httpd-php .php  添加php的格式

AddHandler php-fastcgi .php     .php的文件都由php-fastcgi来处理

Action php-fastcgi /fcgi-bin/php-cgi   php-fastcgi的程序的定义

   设置放这个的程序目录的权限

SetHandler fastcgi-script       所有的文件由fastcgi-script来处理

Options FollowSymLinks

Order allow,deny

Allow from all

2.如果用php-fpm来管理php进程

必须打开开启php-fpm进程

LoadModule fastcgi_module modules/mod_fastcgi.so  添加模块

ScriptAlias /fcgi-bin/ "/usr/local/apache2.2.17/fcgi-bin/"

# 将php进程管理交给127.0.0.1:9000,这正是php_fpm的监听端口

FastCgiExternalServer /usr/local/apache2.2.17/fcgi-bin/php-cgi -host 127.0.0.1:9000

AddType application/x-httpd-php .php

AddHandler php-fastcgi .php

Action php-fastcgi /fcgi-bin/php-cgi

SetHandler fastcgi-script

Options FollowSymLinks

Order allow,deny

Allow from all

重启apache

下面我们来做下性能的测试.

1. 使用fastCGI

[root@localhost http]#/usr/local/apache2.217/bin/ab -c 50 -n 800

(总共请求800次,每次的并发数是50)

This is ApacheBench, Version 2.3 

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking lin.com (be patient)

Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Completed 600 requests

Completed 700 requests

Completed 800 requests

Finished 800 requests

Server Software:        Apache/2.2.3

软件版本

Server Hostname:        lin.com

主机名

Server Port:            80

端口

Document Path:          /test.php

文件路径

Document Length:        706 bytes

文件大小

Concurrency Level:      50

并发数

Time taken for tests:   33.278 seconds

测试总用时

Complete requests:      800

完成的请求

Failed requests:        725

(Connect: 0, Receive: 0, Length: 725, Exceptions: 0)

失败请求

Write errors:           0

Total transferred:      768926 bytes

总共传输字节

HTML transferred:       568926 bytes

用于HTML传输的字节

Requests per second:    24.04 [#/sec] (mean)

每秒的处理的事物数

Time per request:       2079.873 [ms] (mean)

平均每个事物的响应时间

Time per request:       41.597 [ms] (mean, across all concurrent requests)

每个请求运行的时间

Transfer rate:          22.56 [Kbytes/sec] received

每秒的流量

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:      232 1424 1697.9    264    9261

Processing:   255  401 455.0    291    3758

Waiting:      255  375 416.9    290    3758

Total:        491 1825 1737.0    574   10490

Percentage of the requests served within a certain time (ms)

50%    574

66%   3524

75%   3545

80%   3552

90%   3571

95%   3862

98%   4591

99%   9539

100%  10490 (longest request)

每次请求的响应时间的统计,在574ms一下的占50%以此类推。

 类似资料: