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

LAMP架构之编译安装httpd+(php-fpm)+mariadb

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-28 08:17:56 | 显示全部楼层 |阅读模式
php-fpm:
    CentOS 6:
        PHP-5.3.2-:默认不支持fpm机制;需要自行打补丁并编译安装;
        httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;
解决方案:编译安装httpd-2.4, php-5.3.3+;

CentOS 6, lamp (编译安装http和php-fpm);
实现:
(1) 三者分离于三台主机;
(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;
(3) 为php提供xcache
(4) 切换mpm为非prefork机制;
wKioL1anhdmy5_0wAABaMxKyE70113.jpg
On http(172.16.17.61):
1)配置编译环境,安装开发包组

1
[iyunv@node1 ~]# yum -y groupinstall "Development Tools" "Server Platform Development"



2)安装httpd依赖的apr及apr-util,apr需要先安装

1
2
3
4
5
6
7
8
9
[iyunv@node1 ~]# tar xf apr-1.5.0.tar.bz2
[iyunv@node1 ~]# cd apr-1.5.0
[iyunv@node1 apr-1.5.0]# ./configure --prefix=/usr/local/apr
[iyunv@node1 apr-1.5.0]# make -j 4 && make install
============================================================
[iyunv@node1 ~]# tar xf apr-util-1.5.3.tar.bz2
[iyunv@node1 ~]# cd apr-util-1.5.3
[iyunv@node1 apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[iyunv@node1 apr-util-1.5.3]# make -j 4 && make install



3)编译安装httpd程序
1
2
3
4
5
6
7
[iyunv@node1 ~]# yum -y install pcre-devel openssl-devel
[iyunv@node1 ~]# tar xf httpd-2.4.10.tar.bz2
[iyunv@node1 ~]# cd httpd-2.4.10
[iyunv@node1 httpd-2.4.10]# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 \
> --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all \
> --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-mpm=prefork
[iyunv@node1 httpd-2.4.10]# make -j 4 && make install



4)提供httpd服务脚本,复制CentOS6的httpd2.2服务脚本,简单修改即可
1
2
3
4
5
6
7
[iyunv@node1 ~]# cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
[iyunv@node1 ~]# vim /etc/rc.d/init.d/httpd24
apachectl=/usr/local/apache24/bin/apachectl
httpd=${HTTPD-/usr/local/apache24/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}



5)添加httpd的PATH环境变量
1
2
3
4
5
[iyunv@node1 ~]# chkconfig --add httpd24
[iyunv@node1 ~]# chkconfig httpd24 on
[iyunv@node1 ~]# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache24/bin:$PATH
[iyunv@node1 ~]# . /etc/profile.d/httpd24.sh



6)启用httpd2.4的fcgi模块

1
2
3
[iyunv@node1 ~]# vim /etc/httpd24/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so



7)添加http对php页面文件的支持,启用虚拟主机
1
2
3
4
5
6
7
8
9
[iyunv@node1 ~]# vim /etc/httpd24/httpd.conf
ServerName www.example.com:80
#DocumentRoot "/usr/local/apache24/htdocs"
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
AddType application/x-httpd-php .php
AddType application/x-httpd-source .phps
Include /etc/httpd24/extra/httpd-vhosts.conf



8)提供虚拟主机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
24
25
26
27
28
29
30
31
32
[iyunv@node1 ~]# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@pma.com
DocumentRoot "/web/pma/htdocs"
ServerName www.pma.com
ServerAlias web.pma.com
ErrorLog "logs/pma.com-error_log"
CustomLog "logs/pma.com-access_log" combined
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.17.62:9000/web/pma/htdocs
<Directory "/web/pma/htdocs">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@wordpress.com
DocumentRoot "/web/wordpress/htdocs"
ServerName www.wordpress.com
ServerAlias web.wordpress.com
ErrorLog "logs/wordpress.com-error_log"
CustomLog "logs/wordpress.com-access_log" combined
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.17.62:9000/web/wordpress/htdocs
<Directory "/web/wordpress/htdocs">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>



9)安装配置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
vNVkpLUPfn2a4dz/ZKnJkBmvH54=
编辑config.inc.php文件,将生成的随机数复制到里面,然后更改数据库连接主机:
$cfg['blowfish_secret'] = 'vNVkpLUPfn2a4dz/ZKnJkBmvH54';
$cfg['Servers'][$i]['host'] = '172.16.17.63';



10)安装配置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.63');



11)启动httpd服务
1
2
3
4
5
6
7
[iyunv@node1 ~]# httpd -t
Syntax OK
[iyunv@node1 ~]# service httpd24 start
Starting httpd: [ OK ]
[iyunv@node1 ~]# ss -tnl | grep 80
LISTEN 0 128 *:48075 *:*
LISTEN 0 128 :::80 :::*





On php(172.16.17.62):
1)配置编译环境,安装开发包组
1
2
[iyunv@node2 ~]# yum -y groupinstall "Development Tools" "Server Platform Development"
[iyunv@node2 ~]# yum install -y libxml2-devel libmcrypt-devel openssl-devel bzip2-devel



2)编译安装php程序,默认启用php-fpm
1
2
3
4
5
6
7
8
[iyunv@node2 ~]# tar xf php-5.6.4.tar.xz -C /usr/local/src
[iyunv@node2 ~]# cd /usr/local/src/php-5.6.4
[iyunv@node2 php-5.6.4]# ./configure --prefix=/usr/local/php --sysconfdir=/etc/php \
> --enable-mbstring --enable-xml --enable-fpm --enable-sockets --enable-maintainer-zts \
> --with-openssl --with-freetype-dir --with-png-dir --with-jpeg-dir --with-zlib --with-bz2 \
> --with-libxml-dir=/usr --with-mcrypt --with-config-file-scan-dir=/etc/php.d \
> --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --user=apache
[iyunv@node2 php-5.6.4]# make -j 4 && make install



3)为php提供配置文件

1
[iyunv@node2 php-5.6.4]# cp php.ini-production /etc/php/php.ini



4)配置php-fpm
1
2
3
4
5
[iyunv@node2 php-5.6.4]# mkdir /etc/php.d
[iyunv@node2 php-5.6.4]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[iyunv@node2 php-5.6.4]# chmod +x /etc/init.d/php-fpm
[iyunv@node2 php-5.6.4]# chkconfig --add php-fpm
[iyunv@node2 php-5.6.4]# chkconfig php-fpm on



5)为php-fpm提供配置文件并编辑之

1
2
3
4
5
6
7
8
9
[iyunv@node2 php-5.6.4]# cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
[iyunv@node2 php-5.6.4]# vim /etc/php/php-fpm.conf
pid = /usr/local/php/var/run/php-fpm.pid
listen = 172.16.17.62:9000
listen.allowed_clients = 172.16.17.61
pm.max_children = 60
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8



6)复制web服务器的网页某到php服务器上一份,客户端访问时,获取静态资源会访问到web服务器,访问动态资源将访问到php服务器
1
[iyunv@node2 ~]# scp -r root@172.16.17.61:/web /



7)启动php-fpm

1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@node2 ~]# service php-fpm start
Starting php-fpm  done
[iyunv@node2 ~]# ss -tnl | grep --color "9000"
LISTEN     0      128            172.16.17.62:9000                     *:*     
[iyunv@node2 ~]# ps aux | grep --color "php-fpm"
root     108087  0.0  1.0  71880  5128 ?        Ss   00:07   0:00 php-fpm: master process (/etc/php/php-fpm.conf)                                                                    
apache   108088  0.0  0.9  71880  4436 ?        S    00:07   0:00 php-fpm: pool www                                                                                                  
apache   108089  0.0  0.9  71880  4440 ?        S    00:07   0:00 php-fpm: pool www                                                                                                  
apache   108090  0.0  0.9  71880  4440 ?        S    00:07   0:00 php-fpm: pool www                                                                                                  
apache   108091  0.0  0.9  71880  4440 ?        S    00:07   0:00 php-fpm: pool www                                                                                                  
apache   108092  0.0  0.9  71880  4440 ?        S    00:07   0:00 php-fpm: pool www                                                                                                  
root     108096  0.0  0.1 103304   892 pts/0    S+   00:08   0:00 grep --color php-fpm





On mariadb(172.16.17.73):

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



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



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



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



5)提供mysql主配置文件并编辑之
1
2
3
4
5
6
[iyunv@node2 mysql]# mkdir /etc/mysql
[iyunv@node2 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@node2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[iyunv@node2 mysql]# chmod +x /etc/rc.d/init.d/mysqld
[iyunv@node2 mysql]# chkconfig --add mysqld
[iyunv@node2 mysql]# chkconfig mysqld on



7)设置mysql命令的环境变量
1
2
3
[iyunv@node3 ~]# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[iyunv@node3 ~]# . /etc/profile.d/mysql.sh



8)导出mysql头文件
1
[iyunv@node3 ~]# ln -sv /usr/local/mysql/include/mysql/ /usr/include/



9)导出mysql库文件路径
1
2
[iyunv@node3 ~]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
[iyunv@node3 ~]# ldconfig



10)导出mysql的man帮助手册
1
2
[iyunv@node3 ~]# vim /etc/man.config
MANPATH /usr/local/mysql/man         //添加此行



11)启动mysqld服务
1
[iyunv@node2 ~]# service mysqld start



8)创建wpdb库,授权wpuser用户连接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@node3 ~]# mysql
MariaDB [(none)]> USE mysql;
MariaDB [mysql]> DELETE FROM mysql.user WHERE User='';
MariaDB [mysql]> DELETE FROM mysql.user WHERE Host='node3';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123qwe!@#';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '123qwe!@#';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' IDENTIFIED BY '123qwe!@#';
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;
MariaDB [mysql]> SELECT Host,User,Password FROM user;
+------------+--------+-------------------------------------------+
| Host       | User   | Password                                  |
+------------+--------+-------------------------------------------+
| localhost  | root   | *A47CB5FB12B47CBF12AB43B7EC865013906E10BD |
| 127.0.0.1  | root   | *A47CB5FB12B47CBF12AB43B7EC865013906E10BD |
| ::1        | root   | *A47CB5FB12B47CBF12AB43B7EC865013906E10BD |
| 172.16.%.% | wpuser | *7CD61EFBFDDDBD978EA9017F2A26A59DE4589025 |
| 172.16.%.% | root   | *A47CB5FB12B47CBF12AB43B7EC865013906E10BD |
+------------+--------+-------------------------------------------+




重启httpd24服务,添加本地hosts文件解析,打开浏览器添访问网站(配置好php-fpm后需要重启一下httpd服务):
1
2
3
[iyunv@node1 ~]# service httpd24 restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]



wKiom1aon4biO62OAAAJC24bIkA246.jpg
wKiom1aonYTxNCrBAAAxb2Jvj28262.jpg
wKiom1aonYXTRkeOAABcfAI1lJs812.jpg
wKioL1aonc7RqszbAADHw3HD6hk296.jpg
wKiom1aonYmSVWtsAAA-3AG8vs0702.jpg
wKioL1aondCx-mSSAABH8JgzHUM385.jpg

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



wKiom1aonhqjybFRAABa7hcgH10337.jpg

ON php(172.16.17.72):为php服务器编译安装xcache

1)解压xcache源码包至/usr/local下

1
2
[iyunv@node2 xcache]# tar xf xcache-3.2.0.tar.bz2 -C /usr/local/
[iyunv@node2 xcache]# mv /usr/local/xcache-3.2.0/ /usr/local/xcache



2)生成configure脚本

1
[iyunv@node2 xcache]# /usr/local/php/bin/phpize



3)执行编译安装
1
[iyunv@node2 xcache]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config



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



5)建立php测试页面
1
2
3
4
[iyunv@node2 ~]# vim /web/pma/htdocs/test.php
<?php
    phpinfo();
?>



6)重启php-fpm服务

1
2
3
[iyunv@node2 xcache]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done



wKioL1aonnfAXHOIAAAtje4II0w519.jpg

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



wKiom1aonkHxHOCrAABa45ntWUA607.jpg


On http(172.16.17.61):切换mpm为event机制:
1
2
3
4
5
6
7
[iyunv@node1 ~]# vim /etc/httpd24/httpd.conf
Include /etc/httpd24/extra/httpd-mpm.conf
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so     //注释prefork模块,配置event模块
[iyunv@node1 ~]# service httpd24 restart
[iyunv@node1 ~]# httpd -M | grep mpm
mpm_event_module (shared)



运维网声明 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-170384-1-1.html 上篇帖子: 【Linux】以分层架构方式搭建LAMP 下篇帖子: 搭建简单的lamp环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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