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

前言:
php

FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行爲是將CGI解釋器進程保持在內存中並所以得到較高的性能。衆所周知,CGI解釋器的反覆加載是CGI性能低下的主要緣由,若是CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則能夠提供良好的性能、伸縮性、Fail-Over特性等等。html


CentOS 7:node

httpd-2.4:rpm包默認編譯支持了fcgi模塊;mysql

php-fpm包:專用於將php運行於fpm模式;linux


============================================================web


CentOS 7, lamp(php-fpm);sql

實現:數據庫

(1) 三者分離於三臺主機;apache

(2) 一個虛擬主機用於提供phpMyAdmin;另外一個虛擬主機用於提供wordpress;vim

(3) 爲php提供xcache;

wKioL1anZuqhFk0uAABa2yTbdPo955.png

ON http(172.16.17.71):


1)安裝httpd程序包

[root@node1 ~]# yum -y install httpd

2)編輯httpd的配置文件

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以及www.wordpress.com

<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程序

[root@node1 ~]# mkdir -pv /web/{pma,wordpress}
[root@node1 ~]# unzip phpMyAdmin-4.4.14.1-all-languages.zip -d /web/pma/
[root@node1 ~]# mv /web/pma/phpMyAdmin-4.4.14.1-all-languages/ /web/pma/htdocs   
[root@node1 ~]# cd /web/pma/htdocs
[root@node1 htdocs]# cp config.sample.inc.php config.inc.php
[root@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程序

[root@node1 ~]# unzip wordpress-4.3.1-zh_CN.zip -d /web/wordpress/
[root@node1 ~]# mv /web/wordpress/wordpress/ /web/wordpress/htdocs
[root@node1 ~]# cd /web/wordpress/htdocs
[root@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服務

[root@node1 ~]# httpd -t                     
Syntax OK
[root@node1 ~]# systemctl start httpd.service



ON php(172.16.17.72):


1)安裝php-fpm相關程序包

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

2)編輯配置文件,更監聽地址及容許請求的客戶端

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

3)建立session目錄,並確保運行php-fpm進程的用戶對此目錄有讀寫權限

[root@node2 ~]# mkdir /var/lib/php/session

[root@node2 ~]# chown -R apache.apache /var/lib/php/session

4)複製web服務器的網頁某到php服務器上一份,客戶端訪問時,獲取靜態資源會訪問到web服務器,訪問動態資源將訪問到php服務器

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

5)啓動php-fpm進程

[root@node2 ~]# service php-fpm start
[root@node2 ~]# ss -tnl | grep 9000
LISTEN     0      128            172.16.17.72:9000                     *:*     
[root@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的用戶

[root@node3 ~]# groupadd -r mysql
[root@node3 ~]# useradd -r -g mysql mysql

2)建立數據庫存放目錄

[root@node3 ~]# mkdir -pv /data/mysql
[root@node3 ~]# chown -R mysql.mysql /data/mysql/

3)解壓mariadb程序包至/usr/local,並建立mysql軟連接

[root@node3 ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/
[root@node3 ~]# cd /usr/local/
[root@node3 local]# ln -sv mariadb-5.5.46-linux-x86_64/ mysql

4)初始化數據庫

[root@node3 local]# chown -R root.mysql mysql/
[root@node3 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysql

5)提供mysql主配置文件並編輯之

[root@node3 mysql]# mkdir /etc/mysql
[root@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服務腳本

[root@node3 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@node3 mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@node3 mysql]# chkconfig --add mysqld
[root@node3 mysql]# chkconfig mysqld on

7)啓動mysqld服務

[root@node3 ~]# service mysqld start

8)建立wpdb庫,受權wpuser用戶鏈接

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.png


wKiom1aiBiXQ4zB1AAAxb2Jvj28463.png

wKioL1aiBmeTHYcJAABcfAI1lJs141.png

wKioL1aiBm7C_LpMAADHw3HD6hk011.png




wKiom1aiBjTSjbGhAAA-3AG8vs0055.png

wKioL1aiBnXBz_7sAABH8JgzHUM406.png


客戶端使用ab命令對服務器進行壓力測試:

[root@localhost ~]# ab -c 100 -n 1000 http://www.pma.com/index.php

wKiom1anfjiTcUy6AABIQOKI6T4073.png



ON http(172.16.17.72):爲php服務器編譯安裝xcache

1)安裝php-devel包及開發工具包組

[root@node2 ~]# yum -y install php-devel
[root@node2 ~]# yum -y groupinstall "Development Tools" "Server Platform Development"

2)解壓xcache源碼包至/usr/local下

[root@node2 ~]# tar xf xcache-3.2.0.tar.bz2 -C /usr/local/
[root@node2 ~]# mv /usr/local/xcache-3.2.0/ /usr/local/xcache

3)生成configure腳本

[root@node2 xcache]# phpize

4)執行編譯安裝

[root@node2 xcache]# ./configure --enable-xcache --with-php-config=/usr/bin/php-config
[root@node2 xcache]# make -j 4 && make install

5)複製xcache的ini文件至/etc/php.d目錄下 

[root@node2 xcache]# cp xcache.ini /etc/php.d/

6)重啓php-fpm服務

[root@node2 ~]# systemctl restart php-fpm.service


再次在客戶端使用ab命令對服務器進行壓力測試:

[root@localhost ~]# ab -c 100 -n 1000 http://www.pma.com/index.php

wKiom1anf3jAi--dAAA8BbY***U615.png

相關文章
相關標籤/搜索