CentOS 7, lamp (php-fpm);(Blog 15)

要求:
(1) 三者分離于三臺主機;
(2) 一個虛擬主機用于提供phpMyAdmin;另一個虛擬主機用于提供wordpress;
(3) xcache

HTTP反代動態資源至fpm

程序包:httpd php-fpm php-mysql mariadb-server

172.16.0.67 httpd
172.16.0.68 fpm, php-mysql
172.16.0.69 mariadb-server

172.16.0.67 httpd
# yum install httpd
# systemctl start httpd.service
# ss -tnl
測試訪問: http://172.16.0.67/
iptables -F
setenforce 0

提供虛擬主機:
# vim /etc/httpd/conf.d/ilinux.conf
<VirtualHost *:80>
ServerName www.ilinux.io
DocumentRoot “/data/web/ilinux”
<Directory “/data/web/linux”>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
CustomLog logs/ilinux_access_log combined
ErrorLog logs/ilinux_error_log
</VirtualHost>

# cp /etc/httpd/conf.d/ilinux.conf /etc/httpd/conf.d/iunix.conf
# sed -i ‘s,linux,unix,g’ iunix.conf

提供測試頁面測試:
# mkdir -pv /data/web/i{linux,unix}
# echo “<h1>hi! unix.</h1>” > /data/web/iunix/index.html
# echo “<h1>hi! linux.</h1>” > /data/web/ilinux/index.html
# httpd -t
# systemctl restart httpd.service
訪問:www.ilinux.io www.iunix.io

172.16.0.68 php-fpm, php-mysql
配置yum源:
[base]
name=base repo
#baseurl=file:///media/cdrom
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
enabled=1

[epel]
name=epel repo
baseurl=http://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=1

~]# yum install php-fpm php-mysql php-mbstring php-mcrypt php-zlib
php-mbstring: 多字節字符支持
php-mcrypt: 整合Libmcrpt至php加密傳輸
php-zlib: 壓縮傳輸

程序環境:
# rpm -ql php-fpm
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm

配置格式:
listen = 127.0.0.1:9000 跨主機需要修改,
ip 監聽在指定地址上,與非本機通信,要監聽在能通信的地址上;
port: 監聽在所有地址上;
listen.allowd_clients = 127.0.0.1 授權哪些來連接
pm.status_path = /pmstatus 內建的狀態頁
ping.path = /ping 內建的
ping.response = pong 健康狀態
php_value[session.save_path] = /var/lib/php/session
保存會話持久位置;
目錄的屬主的屬組為apache用戶

修改配置:
listen = 172.16.0.68:9000 <–只能是ip地址,不能是網絡地址
listen.allowed_clients = 172.16.0.67 <–只能是ip地址,不能是網絡地址
pm = dynamic <–動態是prefork模型
ping.path = /ping [啟用 ]
ping.response = pong [啟用 ]
pm.status_path = /pmstatus [啟用 ]
php_value[session.save_path] = /var/lib/php/session [創建修改屬主或屬組]

創建所需目錄:
# mkdir -pv /var/lib/php/session
# chown apache:apache /var/lib/php/session

啟動:
# systemctl start php-fpm.service
# ss -tnl

172.16.0.67主機中,在虛擬機中添加反代至fcgi服務器的選項:
# vim /etc/httpd/conf.d/ilinux.conf
DirectoryIndex index.php
<VirtualHost *:80>
ServerName www.ilinux.io
DocumentRoot “/data/web/ilinux”
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.0.68:9000/data/web/ilinux/$1

<Directory “/data/web/ilinux”>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
CustomLog logs/ilinux_access_log combined
ErrorLog logs/ilinux_error_log
</VirtualHost>
# cp /etc/httpd/conf.d/ilinux.conf /etc/httpd/conf.d/iunix.conf
# sed -i ‘s,linux,unix,g’ iunix.conf
# httpd -t
# systemctl restart httpd.service
注意:先測試能否訪問index.html:
www.ilinux.io/index.html
www.iunix.io/index.html

172.16.0.68的主機中/data/web/ilinux/添加php測試頁:
# mkdir -pv /data/web/i{linux,unix}
# vim /data/web/ilinux/index.php
<html>
<title>Test Page</title>
<body>
<h1>Welcome to MageEdu</h1>
<h2>PHP Info Page</h2>
<?php
phpinfo();
?>
</body>
</html>
# cp /data/web/ilinux/index.php /data/web/iunix/index.php

網頁測試: www.ilinux.io/index.php
www.iunix.io/index.php

172.16.0.69 mariadb-server
~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve=on
innodb_file_per_table=on
log_bin=mysql-bin

~]# systemctl start mariadb.service
~]# ss -tnl
~]# mysql_secure_installation
~]# mysql -uroot -h127.0.0.1 -pmagedu
Welcome to the MariaDB monitor. Commands end with ; or \g.

MariaDB [(none)]>

添加用戶提供wordpress數據庫:
> CREATE DATABASE wordpress;
> GRANT ALL ON wordpress.* TO ‘wpuser’@’172.16.%.%’ IDENTIFIED BY ‘wppass’;
> FLUSH PRIVILEGES;

172.16.0.67主機上測試連接:
# mysql -uwpuser -h172.16.0.69 -pwppass
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘172.16.0.69’ (113)
~]# iptables -F (172.16.0.69)
# mysql -uwpuser -h172.16.0.69 -pwppass
MariaDB [(none)]>

用php連接mysql
172.16.0.68
~]# vim /data/web/ilinux/php-mysql.php
<?php
$conn = mysql_connect(‘172.16.0.69′,’wpuser’,’wppass’);
if ($conn)
echo “OK”;
else
echo “False”;
?>
~]# cp /data/web/ilinux/php-mysql.php /data/web/iunix/php-mysql.php
網頁訪問: www.ilinux.io/php-mysql.php www.iunix.io/php-mysql.php

(2) 一個虛擬主機用于提供phpMyAdmin;另一個虛擬主機用于提供wordpress;
(3) xcache

注意: wordpress-4.9.1-zh_CN.tar.gz phpMyAdmin-4.0.10.20-all-languages.zip 已經下載至httpd和php-fpm的兩個DocumentRoot目錄中;

進入httpd主機的ilinux DocumentRoot目錄;
172.16.0.68:
# tar xf wordpress-4.9.1-zh_CN.tar.gz
# ln -sv wordpress wp
# cp wp/wp-config-sample.php wp/wp-config.php
# vim wp/wp-config.php
define(‘DB_NAME’, ‘wordpress’);
define(‘DB_USER’, ‘wpuser’);
define(‘DB_PASSWORD’, ‘wppass’);
define(‘DB_HOST’, ‘172.16.0.69’);
因為動態內容在php-fpm,所以在那個主機有相同的目錄
172.16.0.68:
# tar xf wordpress-4.9.1-zh_CN.tar.gz
# ln -sv wordpress wp
# cp wp/wp-config-sample.php wp/wp-config.php
# vim wp/wp-config.php
define(‘DB_NAME’, ‘wordpress’);
define(‘DB_USER’, ‘wpuser’);
define(‘DB_PASSWORD’, ‘wppass’);
define(‘DB_HOST’, ‘172.16.0.69’);
網絡訪問: http://www.ilinux.io/wp

上傳權限取決于apache用戶于wp-content目錄; 一般是靜態資源所以只對172.16.0.68進行賦權;
172.16.0.68: # setfacl -R -m u:apache:rwx wp-content

提供phpMyadmin
# unzip phpMyAdmin-4.0.10.20-all-languages.zip
# ln -sv phpMyAdmin-4.0.10.20-all-languages pma
# cp pma/config.sample.inc.php pma/config.inc.php
$cfg[‘Servers’][$i][‘host’] = ‘172.16.0.69’;

因為動態內容在php-fpm,所以在那個主機有相同的目錄
# unzip phpMyAdmin-4.0.10.20-all-languages.zip
# ln -sv phpMyAdmin-4.0.10.20-all-languages pma
# cp pma/config.sample.inc.php pma/config.inc.php
$cfg[‘Servers’][$i][‘host’] = ‘172.16.0.69’;

網頁訪問時,roo沒有遠程訪問的權限;需要授權:
或者用wpuser, wppass登陸也行

(3) 提供xcache
先用ab壓測;
172.16.0.69
# yum -y install httpd (提供ab命令)
# ab -n 10000 -c 10 http://172.16.0.67/pma/index.php

測試3次:
Server Software: Apache/2.4.6
Server Hostname: 172.16.0.67
Server Port: 80

Document Path: /pma/index.php
Document Length: 16 bytes

Concurrency Level: 100
Time taken for tests: 37.842 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10000
Total transferred: 1 950 000 bytes
HTML transferred: 160000 bytes
Requests per second: 264.26 [#/sec] (mean) 每秒264請求
Time per request: 378.421 [ms] (mean) 平均每批請求
Time per request: 3.784 [ms] (mean, across all concurrent requests) 平均每個請求
Transfer rate: 50.32 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 150.6 0 15029
Processing: 1 312 2882.0 63 33129
Waiting: 1 312 2882.0 62 33129
Total: 1 315 2886.3 63 33130

172.16.0.68:添加xcache模塊
# yum install php-xcache
php-xcache x86_64 3.1.1-1.el7 epel
# systemctl restart php-fpm.service

測試3次:
Server Software: Apache/2.4.6
Server Hostname: 172.16.0.67
Server Port: 80

Document Path: /pma/index.phpa
Document Length: 212 bytes

Concurrency Level: 1000
Time taken for tests: 0.903 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 391000 bytes
HTML transferred: 212000 bytes
Requests per second: 1108.00 [#/sec] (mean) 每秒264請求
Time per request: 902.528 [ms] (mean) 平均每批請求
Time per request: 0.903 [ms] (mean, across all concurrent requests) 平均每個請求
Transfer rate: 423.07 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 15 19.9 0 65
Processing: 4 110 157.0 27 828
Waiting: 4 110 157.0 27 828
Total: 17 125 170.7 27 828

Percentage of the requests served within a certain time (ms)
50% 27
66% 41
75% 288
80% 300
90% 483
95% 491
98% 495
99% 497
100% 828 (longest request)

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90440

(1)
逆神陽逆神陽
上一篇 2017-12-20 00:20
下一篇 2017-12-20 02:40

相關推薦

  • DNS高級應用之ACL和View

    一、環境準備:     1、準備三臺主機,要求如下      (1) DNS服務器雙網卡:eth0:192.168.10.203  eth1: 172.16.2.10       (2)測試機1雙網卡: eth0: 172.16.…

    Linux干貨 2015-06-01
  • 文件查找

    文件查找     一.文件查找locate和find 1.     locate命令 非實時查找( 數據庫查找) 查詢系統上預建的文件索引數據庫 依賴于事先構建 的索引 索引的構建是在系統較為空閑時自動進行( 周期性任務) 管理員手動更新數據庫(updatedb) 索引構建過程需要遍歷整個根文件系統…

    Linux干貨 2017-08-12
  • Linux文件權限及ACL

    文件權限 文件或目錄可存取的身份分為3類,owner/group/others (所屬者/所屬組/其他人) ,所以訪問一個文件或目錄的權限分為三種, 所有者權限,所屬組權限,其他人權限 (通過ll text.log查看)。 在linux系統中常用的權限分為3種 r(read) w(write) x(excute)。 對文件或目錄的權限進行修改時,要用到chm…

    Linux干貨 2017-06-01
  • Linux源程序包相關概念整理

    一、      Linux源程序包介紹 1)    linux源程序包基礎 1.         遵循常用開源協議:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系統運維 2015-09-22
  • grep,find等相關命令

    Q1:顯示當前系統上root、fedora或user1用戶的默認shell; ~]# grep -E "^root|^fedora|^user1" /etc/passwd | awk -F: '{print $1,$NF}' ro…

    Linux干貨 2016-11-27
  • n28 第二周作業

    n28 第二周作業

    Linux干貨 2017-12-09
欧美性久久久久