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
下一篇 2017-12-20

相關推薦

  • 重定向與管道

         本次內容    1.三種I/O設備    2.把I/O從定向入文件    3.命令tr    4.使用管道鏈接命令    5.tee   我們都知道程序是由:指令+數據    &n…

    2017-07-23
  • 正則表達式基礎以及grep的簡單使用

    正則表達式基礎以及grep的簡單使用   1,定義 正則表達式是你所定義的模式模板,Linux可以用它來過濾文本。Linux工具(比如grep、sed、gawk)能夠在處理數據時使用正則表達式對數據進行模式匹配。如果數據匹配模式,它就會被接受并進一步處理;如果數據不匹配,它就會被濾掉。 2,正則表達式的原則 (1)正則表達式模式都區分大小寫。(2)…

    2017-04-09
  • N28-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
    2、取出最后登錄到當前系統的用戶的相關信息。
    3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
    4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
    5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
    7、顯示/var目錄下一級子目錄或文件的總個數。
    8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
    10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
    (1)、創建組distro,其GID為2016;
    (2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
    (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
    (4)、給用戶mageia添加密碼,密碼為mageedu;
    (5)、刪除mandriva,但保留其家目錄;
    (6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
    (7)、修改slackware的默認shell為/bin/tcsh;
    (8)、為用戶slackware新增附加組admins;

    2017-12-17
  • 選擇判斷專題腳本編程_第九周練習

    Q1:寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i y=0 declare -i n=0 for i in $(cut…

    Linux干貨 2016-12-25
  • rpm和yum的使用,程序包編譯安裝以及編譯apache過程中出現的問題

    一、rpm包管理          用法: rpm [選項…]              查詢/驗證軟件包選項:   &nbsp…

    Linux干貨 2016-03-19
  • session sticky + session cluster 實戰

    前言 在做負載均衡集群的時候,如果后端是應用服務器,我們就有一個不得不考慮的一個問題:會話綁定。為了追蹤會話,我們常見的有三種方式:(1)session sticky:會話粘性,常見有2種方式: source_ip:采用源地址綁定方式 nginx:ip_hash,ip地址哈希 haproxy:source lvs:sh,源地址哈希 cookie:基于cook…

    Linux干貨 2017-02-13
欧美性久久久久