设为首页 收藏本站
查看: 1292|回复: 0

LAMP架构之httpd+(php-fpm)+mariadb

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-28 08:47:28 | 显示全部楼层 |阅读模式
                      

前言:

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等等。


CentOS 7:
httpd-2.4:rpm包默认编译支持了fcgi模块;
php-fpm包:专用于将php运行于fpm模式;

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

CentOS 7, lamp(php-fpm);

实现:

(1) 三者分离于三台主机;

(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;

(3) 为php提供xcache;

wKioL1anZuqhFk0uAABa2yTbdPo955.jpg
ON http(172.16.17.71):

1)安装httpd程序包
1
[iyunv@node1 ~]# yum -y install httpd



2)编辑httpd的配置文件
1
2
3
4
5
6
7
ServerName www.example.com:80    //启用ServerName,否则httpd会反解ip地址,可能会报错
#DocumentRoot "/var/www/html"    //注释掉默认的中心主机
<IfModule dir_module>
    DirectoryIndex index.html index.php      //添加对index.php主页的支持
</IfModule>
AddType application/x-httpd-php .php          //添加对.php页面文件的支持
AddType application/x-httpd-php-source .phps



3)新建/etc/httpd/conf.d/vhosts.conf,提供虚拟主机www.pma.com以及[url]www.wordpress.com[/url]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<VirtualHost *:80>
    ServerName www.pma.com
    DocumentRoot "/web/pma/htdocs"
    ProxyRequests Off              //httpd以反向代理方式跟后端的php-fpm建立连接,所以这里将正向代理关闭从而启用反向代理
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.17.72:9000/web/pma/htdocs/$1    //定义将以.php结尾的URL请求通过fcgi协议转发至后端的php-fpm,注意fcgi后跟的是本地文件路径,$1就表示^/(.*\.php)$
    <Directory "/web/pma/htdocs">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.wordpress.com
    DocumentRoot "/web/wordpress/htdocs"
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.17.72:9000/web/wordpress/htdocs/$1
    <Directory "/web/wordpress/htdocs">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>



4)安装配置PHPmyadmin程序
1
2
3
4
5
6
7
8
9
10
[iyunv@node1 ~]# mkdir -pv /web/{pma,wordpress}
[iyunv@node1 ~]# unzip phpMyAdmin-4.4.14.1-all-languages.zip -d /web/pma/
[iyunv@node1 ~]# mv /web/pma/phpMyAdmin-4.4.14.1-all-languages/ /web/pma/htdocs   
[iyunv@node1 ~]# cd /web/pma/htdocs
[iyunv@node1 htdocs]# cp config.sample.inc.php config.inc.php
[iyunv@node1 htdocs]# openssl rand -base64 20
5Cfn69rDk+6I3Twd4KtgLfT/v5k=
编辑config.inc.php文件,将生成的随机数复制到里面,然后更改数据库连接主机:
$cfg['blowfish_secret'] = '5Cfn69rDk+6I3Twd4KtgLfT/v5k';
$cfg['Servers'][$i]['host'] = '172.16.17.73';



5)安装配置wordpress程序
1
2
3
4
5
6
7
8
9
[iyunv@node1 ~]# unzip wordpress-4.3.1-zh_CN.zip -d /web/wordpress/
[iyunv@node1 ~]# mv /web/wordpress/wordpress/ /web/wordpress/htdocs
[iyunv@node1 ~]# cd /web/wordpress/htdocs
[iyunv@node1 htdocs]# cp wp-config-sample.php wp-config.php
编辑wp-config.php文件,配置数据库连接信息:
define('DB_NAME', 'wpdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'wppasswd');
define('DB_HOST', '172.16.17.73');



6)启动httpd服务
1
2
3
[iyunv@node1 ~]# httpd -t                     
Syntax OK
[iyunv@node1 ~]# systemctl start httpd.service





ON php(172.16.17.72):

1)安装php-fpm相关程序包

1
[iyunv@node2 ~]# yum -y install php-fpm php-mysql php-mbstring



2)编辑配置文件,更监听地址及允许请求的客户端

1
2
3
[iyunv@node2 ~]# vim /etc/php-fpm.d/
listen = 172.16.17.72:9000
listen.allowed_clients = 172.16.17.71



3)创建session目录,并确保运行php-fpm进程的用户对此目录有读写权限
[iyunv@node2 ~]# mkdir /var/lib/php/session
[iyunv@node2 ~]# chown -R apache.apache /var/lib/php/session
4)复制web服务器的网页某到php服务器上一份,客户端访问时,获取静态资源会访问到web服务器,访问动态资源将访问到php服务器

1
[iyunv@node2 ~]# scp -r root@172.16.17.71:/web /



5)启动php-fpm进程
1
2
3
4
5
6
7
8
9
10
11
[iyunv@node2 ~]# service php-fpm start
[iyunv@node2 ~]# ss -tnl | grep 9000
LISTEN     0      128            172.16.17.72:9000                     *:*     
[iyunv@node2 ~]# ps aux | grep php-fpm
root      28850  0.3  2.1 323968 10292 ?        Ss   06:39   0:00 php-fpm: master process (/etc/php-fpm.conf)
apache    28852  0.0  1.0 326052  4940 ?        S    06:39   0:00 php-fpm: pool www
apache    28853  0.0  1.0 326052  4944 ?        S    06:39   0:00 php-fpm: pool www
apache    28854  0.0  1.0 326052  4944 ?        S    06:39   0:00 php-fpm: pool www
apache    28855  0.0  1.0 326052  4944 ?        S    06:39   0:00 php-fpm: pool www
apache    28856  0.0  1.0 326052  4944 ?        S    06:39   0:00 php-fpm: pool www
root      28875  0.0  0.1 112640   960 pts/0    R+   06:40   0:00 grep --color=auto php-fpm






ON mariadb(172.16.17.73):

1)创建运行mariadb的用户
1
2
[iyunv@node3 ~]# groupadd -r mysql
[iyunv@node3 ~]# useradd -r -g mysql mysql



2)创建数据库存放目录
1
2
[iyunv@node3 ~]# mkdir -pv /data/mysql
[iyunv@node3 ~]# chown -R mysql.mysql /data/mysql/



3)解压mariadb程序包至/usr/local,并创建mysql软链接
1
2
3
[iyunv@node3 ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/
[iyunv@node3 ~]# cd /usr/local/
[iyunv@node3 local]# ln -sv mariadb-5.5.46-linux-x86_64/ mysql



4)初始化数据库
1
2
[iyunv@node3 local]# chown -R root.mysql mysql/
[iyunv@node3 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysql



5)提供mysql主配置文件并编辑之
1
2
3
4
5
6
[iyunv@node3 mysql]# mkdir /etc/mysql
[iyunv@node3 mysql]# cp support-files/my-medium.cnf /etc/mysql/my.cnf
在my.cnf配置文件中的[mysqld]端添加以下内容:
datadir = /data/mysql         //设置mysql的数据存储目录
innodb_file_per_table = ON         //设置innodb存储引擎独立存储数据库
skip_name_resolve = ON         //禁止mysql进行反解主机名



6)提供mysql服务脚本
1
2
3
4
[iyunv@node3 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[iyunv@node3 mysql]# chmod +x /etc/rc.d/init.d/mysqld
[iyunv@node3 mysql]# chkconfig --add mysqld
[iyunv@node3 mysql]# chkconfig mysqld on



7)启动mysqld服务
1
[iyunv@node3 ~]# service mysqld start



8)创建wpdb库,授权wpuser用户连接
1
2
3
4
MariaDB [(none)]> CREATE SCHEMA wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'172.16.%.%' IDENTIFIED BY 'wppasswd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY '123qwe!@#';
MariaDB [(none)]> FLUSH PRIVILEGES;





加本地hosts文件解析,打开浏览器添访问网站(配置好php-fpm后需要重启一下httpd服务):
wKiom1ane1qR6ZctAAALME6h9ss257.jpg

wKiom1aiBiXQ4zB1AAAxb2Jvj28463.jpg
wKioL1aiBmeTHYcJAABcfAI1lJs141.jpg
wKioL1aiBm7C_LpMAADHw3HD6hk011.jpg



wKiom1aiBjTSjbGhAAA-3AG8vs0055.jpg
wKioL1aiBnXBz_7sAABH8JgzHUM406.jpg

客户端使用ab命令对服务器进行压力测试:
1
[iyunv@localhost ~]# ab -c 100 -n 1000 http://www.pma.com/index.php



wKiom1anfjiTcUy6AABIQOKI6T4073.jpg


ON http(172.16.17.72):为php服务器编译安装xcache
1)安装php-devel包及开发工具包组
1
2
[iyunv@node2 ~]# yum -y install php-devel
[iyunv@node2 ~]# yum -y groupinstall "Development Tools" "Server Platform Development"



2)解压xcache源码包至/usr/local下
1
2
[iyunv@node2 ~]# tar xf xcache-3.2.0.tar.bz2 -C /usr/local/
[iyunv@node2 ~]# mv /usr/local/xcache-3.2.0/ /usr/local/xcache



3)生成configure脚本
1
[iyunv@node2 xcache]# phpize



4)执行编译安装
1
2
[iyunv@node2 xcache]# ./configure --enable-xcache --with-php-config=/usr/bin/php-config
[iyunv@node2 xcache]# make -j 4 && make install



5)复制xcache的ini文件至/etc/php.d目录下
1
[iyunv@node2 xcache]# cp xcache.ini /etc/php.d/



6)重启php-fpm服务
1
[iyunv@node2 ~]# systemctl restart php-fpm.service




再次在客户端使用ab命令对服务器进行压力测试:
1
[iyunv@localhost ~]# ab -c 100 -n 1000 http://www.pma.com/index.php



wKiom1anf3jAi--dAAA8BbYSSrU615.jpg

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-170444-1-1.html 上篇帖子: 搭建简单的lamp环境 下篇帖子: 基于php-fpm方式部署LAMP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表