LAMP架构之分离式-php-fpm

一、LAMP架构之分离式拓扑


二、架构说明


当客户端访问Web服务器时,Web服务器根据客户端访问的资源进行判断,如果是静态的页面Web服务器就直接返回给给客户端,如果是动态的页面,Web服务器就请求PHP服务器进行解析,在解析过程有需要MySQL数据的PHP服务器就请求MySQL服务器,PHP服务器解析完后封装发送给Web服务器,Webt器在封装发送给客户端。

三、架构规划


主机 网卡1 网卡2 备注
客户端 172.16.9.6 - -
Web服务器 172.16.9.21 10.0.9.21 提供Web服务
PHP服务器 10.0.9.31 10.0.9.41 提供PHP程序解析
MySQL服务器 10.0.9.51 - 提供MySQL服务

四、LAMP程序包版本

apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
httpd-2.4.10.tar.bz2
mariadb-5.5.43-linux-x86_64.tar.gz
php-5.6.4.tar.xz
phpMyAdmin-4.0.5-all-languages.zip
Discuz_X3.2_SC_UTF8.zip

五、准备安装开发环境

yum groupinstall  "Server Platform Development"  "Development tools" -y
yum install pcre-devel -y
yum install bzip2-devel libmcrypt-devel -y
yum install libxml2-devel -y

六、Web服务器上安装httpd服务程序


1)安装httpd程序依赖apr程序包

tar xf apr-1.5.0.tar.bz2
cd apr-1.5.0
./configure --prefix=/usr/local/apr
make && make install

2)安装httpd程序依赖apr-util程序包

tar xf apr-util-1.5.3.tar.bz2
 cdapr-util-1.5.3
 ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr/
 make&& make install

3)安装http程序包

[[email protected] httpd-2.4.10]#useradd -r bbs
[[email protected] httpd-2.4.10]# ./configure--prefix=/usr/local/apache-2.4.10 --sysconfdir=/etc/apache24 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-so--enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork  --user=bbs
[[email protected] httpd-2.4.10]# make &&make install

4)创建apahce软链接

[[email protected] ~]# ln -s/usr/local/apache-2.4.10/ /usr/local/apache
[[email protected] ~]# ll /usr/local/apache
lrwxrwxrwx 1 root root 25 May  3 11:27 /usr/local/apache ->/usr/local/apache-2.4.10/

5)提供服务脚本/etc/rc.d/init.d/httpd

修改httpd的配置文件中指定pid文件存放路径

   PidFile"/var/run/httpd.pid"

服务脚本通过复制系统原有的httpd服务脚本,在此基础上进行简单的修改,修改的内容如下:

[[email protected] ~]# cp/etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
    apachectl=/usr/local/apache/bin/apachectl
    httpd=${HTTPD-/usr/local/apache/bin/httpd}

添加到开机自启动服务中:

[[email protected] ~]# chkconfig --add httpd24
[[email protected] ~]# chkconfig httpd24 on

6)设置httpd环境变量

[[email protected] httpd-2.4.10]# vim/etc/profile.d/httpd.sh
         PATH=/usr/local/apache/bin/:$PATH
[[email protected] httpd-2.4.10]# ./etc/profile.d/httpd.sh

7)启用http的相关php-fpm模块/etc/apache24/httpd.conf

在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModule proxy_modulemodules/mod_proxy.so
LoadModule proxy_fcgi_modulemodules/mod_proxy_fcgi.so

9)启用http对php的支持/etc/apache24/httpd.conf

 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
 DirectoryIndex index.php index.html

10)提供httpd虚拟机为www.blog.com和www.phpmysql.com

修改/etc/apache24/httpd.conf的配置文件,开启虚拟文件:

#DocumentRoot "/usr/local/apache-2.4.10/htdocs"
Include/etc/apache24/extra/httpd-vhosts.conf

在编辑/etc/apache24/extra/httpd-vhost.conf文件,内容如下:

<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot "/web/discuz"
   ServerName www.bbs.com
   ServerAlias bbs.com
   ErrorLog "logs/bbs.com-error_log"
   CustomLog "logs/bbs.com-access_log" combined
   ProxyRequests Off
   ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.9.31:9000/web/discuz/$1
   <Directory "/web/discuz">
     AllowOverride None
     Options None
      Require all granted
  </Directory>
</VirtualHost>
 
<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot "/web/pma"
   ServerName www.phpmysql.com
   ServerAlias phpmysql.com
   ErrorLog "logs/phpmysql.com-error_log"
   CustomLog "logs/phpmysql.com-access_log" combined
   ProxyRequests Off
   ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.9.31:9000/web/pma/$1
   <Directory "/web/pma">
     AllowOverride None
     Options None
     Require all granted
   </Directory>
</VirtualHost>

11)启用httpd服务

service httpd24 start

七、MySQL服务器上安装MariaDb数据库


1)创建MariaDB运行的用户

[[email protected] ~]# groupadd -r mysql
[[email protected] ~]# useradd -r -g mysql mysql

2)创建数据库存放目录并设置属主、属组

[[email protected] ~]# mkdir /data/mysql -p
[[email protected] ~]# chown -R  mysql.mysql /data/mysql/

3)解压MariaDB程序包到/usr/local目录下

[[email protected] tools]# tar xfmariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/

4)创建软链接

[[email protected] mysql tools]# cd /usr/local/
[[email protected] mysql local]# ln -smariadb-5.5.43-linux-x86_64/ mysql

5)初始化数据库

[[email protected] mysql local]# cd mysql
[[email protected] mysql mysql]# chown -R  root.mysql ./*
[[email protected] mysql mysql]#scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql

6)提供MySQL的主配置文件

[[email protected] mysql mysql]# mkdir /etc/mysql
[[email protected] mysql mysql]# cpsupport-files/my-large.cnf /etc/mysql/my.cnf

7)编辑/etc/mysql/my.cnf配置文件

在/etc/mysql/my.cnf配置文件中在[mysqld]标签中添加数据库存放目录。

datadir = /data/mysql

8)为MySQL提供服务脚本

[[email protected] mysql mysql]# cpsupport-files/mysql.server /etc/rc.d/init.d/mysqld
[[email protected] mysql mysql]# chmod +x/etc/rc.d/init.d/mysqld
[[email protected] mysql mysql]# chkconfig --add mysqld
[[email protected] mysql mysql]# chkconfig mysqld on

9)设置mysql命令的环境变量

[[email protected] mysql mysql]# vim/etc/profile.d/mysql.sh
    PATH=/usr/local/mysql/bin:$PATH
[[email protected] mysql mysql]# ./etc/profile.d/mysql.sh

10)设置mysql命令的man帮助手册

在/etc/man.cnf中添加如下一行

   MANPATH/usr/local/mysql/man

11)导出mysql头文件至/usr/include

[[email protected] mysql mysql]# ln -s/usr/local/mysql/include/mysql/ /usr/include/

12)输出MySQL库文件

[[email protected] mysql mysql]# echo ‘/usr/local/mysql/lib‘> /etc/ld.so.conf.d/mysql.conf
[[email protected] mysql mysql]# ldconfig

12)添加用于BBS的数据库和设置管理MySQL的用户名和密码

MariaDB [(none)]> CREATE DATABASE bbs;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON bbs.* TO‘userbbs‘@‘10.%.%.%‘ IDENTIFIED BY ‘bbspass‘;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON *.* TO‘root‘@‘10.%.%.%‘ IDENTIFIED BY ‘bbspass‘;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

八、PHP服务器上安装PHP程序


创建php的运行用户bbs

useradd -r bbs

1)编译安装php

tar xf php-5.6.4.tar.xz
cd php-5.6.4
./configure--prefix=/usr/local/php5.6.4 --with-openssl --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/php --with-config-file-scan-dir=/etc/php/php.d --with-bz2  --user=bbs
make && make install

2)为/usr/local/php-5.6.4创建软链接

[[email protected] php-5.6.4]# ln -s/usr/local/php5.6.4/ /usr/local/php
[[email protected] php-5.6.4]# ll /usr/local/php
lrwxrwxrwx 1 root root 20 May  3 18:42 /usr/local/php ->/usr/local/php5.6.4/

3)为PHP提供配置文件

[[email protected] php-5.6.4]# mkdir -p/etc/php/php.d/
[[email protected] php-5.6.4]# cpphp.ini-development /etc/php/php.ini

4)配置php-fpm

[[email protected] php-5.6.4]# cpsapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[[email protected] php-5.6.4]# chmod +x/etc/rc.d/init.d/php-fpm
[[email protected] php-5.6.4]# chkconfig --addphp-fpm
[[email protected] php-5.6.4]# chkconfig php-fpmon

5)为php-fpm提供配置文件

[[email protected] php-5.6.4]# cp /usr/local/php5.6.4/etc/php-fpm.conf.default  /usr/local/php5.6.4/etc/php-fpm.conf

6)编辑php-fpm配置文件/etc/local/php/etc/php-fpm.conf

pid = /usr/local/php/var/run/php-fpm.pid
listen = 10.0.9.31:9000
pm.max_children = 60
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8

6)启动php-fpm

[[email protected] pma]# service php-fpm start
Starting php-fpm  done

九、安装和配置phpMyAdmin程序


1)分别在Web服务器上和PHP服务器解压PHPMyAdmin程序

在解压完之后,把PHPMyAdmin复制至/web/pma目录中,如果你看懂PHPMyAdmin的程序是可以把动态的面面放PHP服务器,静态的页面放在Web服务器的,这样可以实现动静的分离。

# mkdir /web/
# unzip phpMyAdmin-4.0.5-all-languages.zip
# mv phpMyAdmin-4.0.5-all-languages/web/pma

2)修复PHP服务器中的PHPMyAdmin的数据库连接文件

# cd /web/pma
# cp config.sample.inc.php config.inc.php
# vim config.inc.php

将$cfg[‘Servers‘][$i][‘host‘]= ‘localhost‘;更改为:

$cfg[‘Servers‘][$i][‘host‘] = ‘10.0.9.51‘;

3)编辑本地电脑上hosts文件

编辑本地电脑上hosts文件,以实现解析域名的目的,内容如下:

172.16.9.21 www.bbs.com
172.16.9.21 www.phpmysql.com

4)在浏览器访问

在浏览器访问www.phpmysql.com,出现登录界面,根据在数据库的授权登录数据库,登录后就可以轻松的管理MySQL数据库了,登录后的效果如图:

 

十、安装和配置Discuz程序


安装Discuz程序需要在Web服务器和PHP服务器都要有程序,静态的内容的Web服务器将调用本地的文件,php页面就将交给PHP服务器来进行解析完成。

1)解压Discuz程序包

# unzip Discuz_X3.2_SC_UTF8.zip
# mv upload/ /web/discuz

2)更改Discuz文件的属主和属组

[[email protected] discuz]# chown -R  bbs.bbs ./*

2)安装Discuz程序

安装Discuz时很简单,因为前面已经把文件的属主和属组已经更改了,进行对相应的目录和文件都有写的权限,只需要要同意、下一步、全新安装、填写相应的数据库名等,填写数据库内容如图:

3)访问www.bbs.com

十一、安装Discuz问题集


1)打开网页缺少CSS样式

在安装之后,发出打开Discuz页面缺少CSS样式,后来经过分析,Discuz在安装时把所有内容都安装在PHP服务器了,而Web服务器没有相应的文件,而生成的文件都是静态的文件,所以Web服务器找不到相应的文件,效果如下:

通过调用Google Chrome浏览器的调试功能F12,发现页面找不到相应的文件,把PHP服务器相应的文件复制过来就可以解决问题了。

解决过程

在PHP服务器打包cache目录中的文件

[[email protected] discuz]# cd data/
[[email protected] data]# tar jcf cache.tar.gzcache/
[[email protected] data]# scp cache.tar.gz172.16.9.21:/web/discuz/data/
[email protected]‘s password:
cache.tar.gz                    100%  32KB  32.3KB/s   00:00

在Web服务器中解压cache目录

[[email protected] discuz]# cd data/
[[email protected] data]# rm -fr cache
[[email protected] data]# tar xf cache.tar.gz

2)网页页面加载慢

在实验环境中,客户端在没有与互联网连网时,只有内网的环境中,就会出现网页页面加载很慢,但在有外网的环境网页页面加载就会很快,后来经过使用HttpWatch的分析,页面在加载时会使用互联网上指定的链接;在没有外网是就是出现加载页面慢的情况。

小结:

此架构是有一种的缺点:

1)Web服务器文件缺少;安装时有些文件被安装在PHP服务器而调用去要使用Web服务器上的文件;

2)用户上传文件无法显示;用户上传文件时被放置于PHP服务器,显示去查找的Web服务器上的文件;

改进方法:

1)Web服务器与PHP服务器站点文件目录同步使用,如rsync+inotify;

2)使用共享存储,如NFS;

3) 对程序进行二次开发

时间: 2024-11-04 21:35:20

LAMP架构之分离式-php-fpm的相关文章

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

利用lamp架构搭建Discuz论坛,并实现对数据库的高可用

lamp架构=LAMP指的Linux(操作系统).Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. #############源码安装php########### tar jxf php-5.6.20.tar.bz2 cd php-5.6.20 解决依赖性: yum install freetype-devel libmcrypt-2.5.8-9.el6.x86_64.rpm net-snmp-d

LAMP架构之PHP-FPM 服务器

PHP简介 安装PHP 解决依赖关系 # 请配置好yum源(系统安装源及epel源)后执行如下命令: yum -y groupinstall "Desktop Platform Development" yum -y install bzip2-devel libmcrypt-devel mhash-devel 编译安装php-5.4.26 tar xf php-5.4.26.tar.bz2 cd php-5.4.26 ./configure --prefix=/usr/local/p

第十八章 lamp架构

18.1 lamp简介 有了前面学习的知识的铺垫,今天可以来学习下第一个常用的web架构了. 所谓lamp,其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件,除Linux外其它各部件本身都是各自独立的程序,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台. LAMP指的是Linux(操作系统).Apache(HTTP服务器).MySQL(也指MariaDB,数据库软件)和PH

Linux中详细搭建lamp架构

1.LAMP架构介绍 LAMP是Linux+Apache(httpd)+MySQL+PHP的简写,即把Apache.MySQL以及PHP安装在linux系统上,组成一个运行环境来运行PHP脚本语言,通常是网站.比如Google.淘宝.百度.51cto博客.猿课论坛等就是用PHP语言写出来的. 2.web服务器工作流程 在说lamp架构平台的搭建前,我们先来了解下什么的CGI,什么是FastCGI,什么是 web服务器的资源分为两种,静态资源和动态资源.静态资源就是指静态内容,客户端从服务器获得的

基础运维终章:深入浅出LAMP架构

一.LAMP之初成牛犊 1.LAMP定义 LAMP指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台..虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件).当一起使用的时候,它们表现的像一个具有活力的解决方案包.其他的方案包有苹果的WebObjects(最初

手动搭建lamp架构

#lamp平台搭建:*环境说明: 系统平台 ip地址 需要安装的服务 centos7 192.168.110.128 httpd-2.4 mysql-5.7 php php-mysql 一.安装httpd:#安装开发工具: [[email protected] ~]# yum groups mark install 'Development Tools' 安装过程已省略 #创建apache用户和组: [[email protected] ~]# groupadd -r apache [[emai

Centos7.3 部署 LAMP 架构动静分离

一.LAMP动静分离当需要搭建一个高效的web架构时,采用动静分离无疑是最好的选择,这篇博文将写下来LAMP的动静分离部署方式. 所谓LAMP?LAMP架构是目前最成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境.与之并肩的还有LNMP.LTMP等,LAMP说白了就是Linux操作系统上安装Apache网站服务,构建php/perl/Python运行环境来连接mysql数据库,四个组件合起来就简称"LAMP". LNMP只不过

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a