httpd結合php的fpm模式

wadeson發表於2017-07-11

 

 

httpd2.4版本的編譯安裝,不再贅述,檢視上一篇:http://www.cnblogs.com/jsonhc/p/7134053.html

從官網下載php原始碼包:php-5.6.30.tar.bz2

1、安裝必要的依賴包

yum install -y libxml2 libxml2-devel bzip2-devel libjpeg-devel  libpng-devel freetype-devel
安裝:libmcrypt
tar xf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make && make install
2、解壓縮並編譯執行
tar xf php-5.6.30.tar.bz2
cd php-5.6.30
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-mcrypt --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets  --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-gd
make && make install
3、新增配置檔案,啟動指令碼
#cp php.ini-production /etc/php.ini
#cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
#chmod +x /etc/rc.d/init.d/php-fpm
#chkconfig --add php-fpm
#chkconfig --list php-fpm
為php-fpm提供配置檔案:
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
並修改其中幾個值:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

[root@wadeson php-5.6.30]# service php-fpm start
Starting php-fpm done

[root@wadeson ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5104/sshd
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 27281/php-fpm

 

4、修改httpd配置檔案以支援php

######load modules####             啟用這兩個模組
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 

######新增php:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

####修改DirectoryIndex:

DirectoryIndex index.html index.php

####然後在虛擬主機中配置用fcgi來處理php檔案

######config fpm####
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2.4/www/$1

ProxyPassMatch ^/(.*\.php)$ fcgi://IP:9000/PATH/TO/DOCUMENT_ROOT/$1   #把以.php結尾的檔案請求傳送到php-fpm程式,php-fpm至少需要知道執行的目錄和URI。注意:這裡的 DOCUMENT_ROOT 只是php檔案的存放路徑,可以不是httpd的站點根目錄。實際環境中,php-fpm與httpd多位於不同的主機上,動態資源部署在php-fpm伺服器上。
 
由於httpd編譯安裝的目錄在/usr/local/apache2.4下面,預設的網站根目錄為htdocs
現在檢驗是否成功:

[root@wadeson apache2.4]# cd htdocs/
[root@wadeson htdocs]# ll
total 4
-rw-r--r--. 1 root root 10 Jul 11 14:35 index.html
[root@wadeson htdocs]# cat index.html
test page

訪問截圖:

剛剛在配置檔案配置的是動態目錄為:ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2.4/www/$1

[root@wadeson apache2.4]# cd www/
[root@wadeson www]# ll
total 4
-rw-r--r--. 1 root root 154 Jul 11 14:34 index.php
[root@wadeson www]# cat index.php
<?php
$conn=mysql_connect('127.0.0.1','root','redhat');
if ($conn)
echo "successful";
else
echo "failure";
mysql_close();
phpinfo();
?>

然後訪問截圖:

所以靜態存放的網站檔案與動態存放的php檔案沒有直接的聯絡,可以隨便安放,當然放在一起也是可以的

 

新增xcache加速:

#tar xf xcache-3.2.0.tar.gz

#cd xcache-3.2.0

#/usr/local/php/bin/phpize

#./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

#make && make install

#mkdir /etc/php.d

#cp xcache.ini /etc/php.d/

#vim /etc/php.d/xcache.ini

extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so

然後訪問檢視:(過載一下服務)

 

相關文章