手记

php-fpm的LAMP平台

php-fpm的工作原理

用户通过http服务访问web服务器,请求中包含了动态和静态请求,而web服务器将动态请求通过fcgi协议将动态请求交个php服务处理,自己只处理静态请求;php服务器将动态请求处理后,将结果返回给apache服务器 

  apache+php-fpm+mysql

====================================================================================================

 

一、编译安装php-5.4.26

 php的源代码文件请自行下载,这里以安装php2.4为例

1、解决依赖关系:

 请配置好yum源(可以是本地系统光盘)后执行如下命令:

****在编译的过程中可能会需要一些其他的程序,配置好yum源安装就可以了

# yum -y groupinstall "X Software Development" 

 如果想让编译的php支持mcrypt扩展,还需要安装下面两个程序:libmcrypt-devel ;mhash-devel

2、编译安装php-5.4.26

 

# tar xf php-5.4.26.tar.bz2    **解压源文件

# cd php-5.4.26

# ./configure --prefix=/usr/local/php5 --with-mysql --with-openssl --with-mysqli --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

****--prefix=/usr/local/php5  指定安装的路径,其他详细参数的意义请自行查看官方文档

# make  &&  make intall

 

为php提供配置文件:

# cp php.ini-production /etc/php.ini    php解压以后就有

 

3、配置php-fpm

 

为php-fpm提供SysV init脚本,并将其添加至服务列表:

# 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         **将php-fpm加入启动列表

# chkconfig php-fpm on           **为服务添加启动级别

 

为php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 

 

编辑php-fpm的配置文件:

# vim /usr/local/php5/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

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   文件在自己的安装路径下

****这里listen必须监听是本机的IP地址

 

接下来就可以启动php-fpm了:

# service php-fpm start

#ss -tnl  查看php的9000端口是否被监听

 

 

 ==============================================================================================

 

二、配置httpd-2.4.9

 

1、启用httpd的相关模块

 

在Apache httpd 2.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、配置虚拟主机支持使用fcgi

 

在相应的虚拟主机中添加类似如下两行。

  ProxyRequests Off

  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

 

http://www.magedu.com/admin/index.php

 

/web/host1/admin/index.php

fcgi://127.0.0.1:9000/web/hosts/admin/index.php

 

 

 

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

 

3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页

 

 # vim /etc/httpd/httpd.conf

 1、添加如下二行

   AddType application/x-httpd-php  .php

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

 

 2、定位至DirectoryIndex index.html 

   修改为:

    DirectoryIndex  index.php  index.html

 

 

 

补充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。

 ==================================================================================

三、测试apache服务是否能与php服务联通

在php-fpm的服务器的目录中创建一个以.php结尾的文件

<?php

        phpinfo();

?>

使用浏览器登入apache服务器

这里需要注意的是,apache必须有访问php服务器上的以.php结尾文件的权限的

#chown -R nobody:nobody /文件路径

若修改权限后还是无法访问,可能就是防火墙未关

C6:#iptables -F

C7:#systemctl firewall stop

===================================================================================

四、编译安装数据库 mariadb-5.5.36

 

1.在ip地址为172.16.1.72的主机上安装一个mysql数据库: mariadb-5.5.36-linux-x86_64.tar.gz

2.解压并移动到/usr/local目录中

#tar -xvf mariadb-5.5.36-linux-x86_64.tar.gz    解压文件到当前目录下

#mv mariadb-5.5.36-linux-x86_64 /usr/local/mariadb

 

#cd /usr/local/mariadb/ 进入mysql的安装位置目录

 初始化mysql,并指定运行用户和并指定数据存放的位置

# scripts/mysql_install_db --user=mysql --datadir=/mydata  


 将mariadb目录下的所有文件的属主和属组

# chown -R root:mysql  ./*    

为mysql服务提供主配置文件
#cp support-files/my-large.cnf /etc/my.cnf      

编辑mysql的主配置文件

# vim /etc/my.cnf     

    将cpu个数乘以2:thread_concurrency = 4

            指定mysql的数据文件存放的位置:datadir = /mydata/data

为mysql提供SYSV服务脚本,并添加为系统服务

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld     

# chkconfig --add mysqld   

# chkconfig mysqld on      

            

# chown -R mysql /mydata  将mydata目录下的所有文件的属主该为mysql

# service mysqld start   启动服务

# cd ..

# ln -sv mariadb/ mysql  将mariadb目录连接到mysql目录

# service mysqld start  启动mysql服务

# ss -ntl      查看mysql是否被端口监听


# vim /etc/profile.d/mysql.sh  添加环境变量

        export PATH=/usr/local/mariadb/bin:$PATH(将安装位置目录的的bin目录添加上去)

# source /etc/profile.d/mysql.sh       读取修改后的环境变量

#GRANT ALL ON discuz.* TO zhou@172.16.1.71 IDENTIFIED BY '123'; 给用户名周的用户授予discuz目录下所有表的所以权限

==========================================================

测试php-fpm的LAMP平台是否搭建成功

在mysql服务器进行下面的操作

 在apache服务指向的php的目录下创建以.php结尾的文件

===============================================================================

到这里我们的服务就搭建成功了,我们可以添加如blog,bbs的服务

=================================================================

 

四、下面以安装discuz为例来检验php-fpm是否搭建成功

1、下载Discuz软件到本地

2、解压到http服务器的/web/zhou.com

3、解压到php服务器的/web/zhou.com目录下,图中的三个文件复制到http服务器的/web/zhou.com目录,覆盖掉原来的目录

4、现在在浏览器输入:http://172.16.1.70/upload/forum.php。

0人推荐
随时随地看视频
慕课网APP