您好,登錄后才能下訂單哦!
通過編譯安裝方式部署分離式LAMP+xcache (php-fpm模式)
要求:
(1)采用源碼編譯部署分離式的LAMP,其中php基于php-fpm模式
(2)基于LAMP平臺一個虛擬主機提供WordPress,另一個虛擬主機提供phpMyadmin
(3)利用xcache來為php提供緩存加速頁面的訪問速度
(4)對其中一個站點緩分別做壓力測試,并且比對緩存加速前和加速后的數據。
環境:
192.168.1.103------>提供httpd服務
192.168.1.104------>提供mariadb服務
192.168.1.110------>提供PHP xcache服務
軟件包:
httpd-2.4.6.tar apr-1.5.0.tar apr-util-1.5.2.tar ###httpd2.4版本需要apr和apr-util包的1.4以上版本支持
mariadb-5.5.46-linux-x86_64.tar (二進制包)
php-5.4.26.tar
xcache-3.1.0.tar
wordpress-4.3.1-zh_CN
phpMyAdmin-4.4.14.1-all-languages
---------------------------------------------------分割線------------------------------------------------------------
編譯安裝服務:
一、編譯安裝httpd服務(192.168.1.103)
1、首先確認系統是否已經安裝了httpd服務,如果存在我們需要卸載,為了避免與后面有沖突。
2、安裝開發包組
[root@pxe132 ~]# yum -y groupinstall Desktop Platform Development Development Tools
3、編譯安裝apr和apr-util
centos7中rpm包安裝apr和apr-util就是1.4版本支持httpd,此處我就使用編譯的方式來進行
###編譯安裝apr: [root@pxe132 ~]# tar xf apr-1.5.0.tar.bz2 [root@pxe132 ~]# cd apr-1.5.0/ [root@pxe132 apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@pxe132 apr-1.5.0]# make -j 4 && make install ###編譯安裝apr-util: [root@pxe132 ~]# tar xf apr-util-1.5.2.tar.bz2 [root@pxe132 ~]# cd apr-util-1.5.2/ [root@pxe132 apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@pxe132 apr-util-1.5.2]# make -j 4 && make install ###查看編譯安裝后的結果: [root@pxe132 ~]# rpm -q apr apr-1.4.8-3.el7.x86_64 [root@pxe132 ~]# rpm -q apr-util apr-util-1.5.2-6.el7.x86_64
4、編譯安裝httpd
[root@pxe132 ~]# yum -y install pcre-devel openssl-devel libevent-devel [root@pxe132 ~]# tar xf httpd-2.4.6.tar.bz2 [root@pxe132 ~]# cd httpd-2.4.6/ [root@pxe132 httpd-2.4.6]# ./configure --prefix=/usr/local/apache ##安裝路徑 --sysconfdir=/etc/httpd24 ##配置文件路徑 --enable-so ##支持動態裝卸載DSO機制,DSO是動態共享對象,可實現模塊動態生效 --enable-ssl ##支持SSL/TLS 可實現https功能,需要安裝openssl-devel開發工具 --enable-cgi ##支持CGI腳本 默認對非線程的MPM(多路處理)模塊開啟 --enable-rewrite ##支持URL重寫 --enable-defalte ##支持壓縮功能 --enable-modules=most ##支持動態啟用的模塊 {all|most} --enable-mpms-shared=all ##支持動態加載的MPM模塊 {most|all} --with-mpm=prefork ##設置默認啟用的mpm模式 {prefork|worker|event} --with-pcre ##使用指定的pcre庫,需要安裝pcre-devel工具 --with-zlib ##使用指定的zlib庫 --with-apr=/usr/local/apr ##指定apr安裝路徑 --with-apr-util=/usr/local/apr-util ##指定apr-util安裝路徑 此時我們就可以啟動服務: [root@pxe132 ~]# /usr/local/apache/bin/apachectl start 但是這樣操作不是太方便,所有我們后面還需要做些操作:
5、添加PATH環境變量
[root@pxe132 ~]# vim /etc/profile.d/httpd24.sh export PATH=/usr/local/apache/bin:$PATH [root@pxe132 ~]# source /etc/profile.d/httpd24.sh ###重讀下文件路徑,使其立馬生效 [root@pxe132 ~]# echo $PATH /usr/local/apache/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
6、導出頭文件:
[root@pxe132 ~]# ln -sv /usr/local/apache/include/ /usr/include/httpd24
7、啟動服務
[root@pxe132 ~]# apachectl start [root@pxe132 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6012 *:* LISTEN 0 128 :::80 :::*
9、測試下httpd服務是否正常:
[root@pxe132 ~]# curl 192.168.1.103 <html><body><h2>It works!</h2></body></html>
二、編譯安裝mariadb服務(192.168.1.104)
1、為了安全我們我mysql建立專門的用戶和組,讓其以普通用戶的身份運行
[root@bogon ~]# groupadd -r mysql [root@bogon ~]# useradd -r mysql -g mysql [root@bogon ~]# id mysql uid=988(mysql) gid=983(mysql) groups=983(mysql)
2、建立數據可數據存放的目錄,此處需要注意權限的問題
[root@bogon ~]# mkdir -p /data/mydata [root@bogon ~]# chown -R mysql:mysql /data/mydata/ ###此文件在后面我們安裝包的時候會用到
3、解壓mariadb安裝包到/usr/local目錄下
[root@bogon ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
4、創建一個軟鏈接方便使用
[root@bogon ~]# ln -sv /usr/local/mariadb-5.5.46-linux-x86_64/ mysql ‘mysql’ -> ‘/usr/local/mariadb-5.5.46-linux-x86_64/’
5、此時我們可以進入mysql的目錄去看下,發現里面的屬組合屬主都是root,所有需要改下權限
[root@bogon ~]# cd /usr/local/mysql/ [root@bogon mysql]# ll total 204 drwxr-xr-x. 2 root root 4096 Jul 21 14:39 bin -rw-r--r--. 1 500 500 17987 Oct 10 2015 COPYING -rw-r--r--. 1 500 500 26545 Oct 10 2015 COPYING.LESSER drwxr-xr-x. 3 root root 17 Jul 21 14:39 data -rw-r--r--. 1 500 500 8245 Oct 10 2015 EXCEPTIONS-CLIENT drwxr-xr-x. 3 root root 18 Jul 21 14:39 include -rw-r--r--. 1 500 500 8694 Oct 10 2015 INSTALL-BINARY drwxr-xr-x. 3 root root 4096 Jul 21 14:39 lib drwxr-xr-x. 4 root root 28 Jul 21 14:39 man lrwxrwxrwx. 1 root root 39 Jul 21 14:42 mariadb-5.5.46-linux-x86_64 -> /usr/local/mariadb-5.5.46-linux-x86_64/ drwxr-xr-x. 11 root root 4096 Jul 21 14:39 mysql-test -rw-r--r--. 1 500 500 108813 Oct 10 2015 README [root@bogon mysql]# chown -R root.mysql ./* ###更改文件的權限
6、使用mysql自己提供的scripts腳本文件mysql_install_db文件來安裝數據庫,其中指明用戶和數據可存放目錄(就是 我們在上邊剛開始的時候進行創建的用戶和數據存放路徑)
[root@bogon mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mydata ###此處需要注意必須在mysql目錄下進行,切換到里面去就不行了
7、為mariadb提供配置文件,在support-files中有模板(my-large.conf)
[root@bogon mysql]# cp support-files/my-large.cnf /etc/my.cnf
8、編輯配置文件添加數據庫存放的目錄信息
datadir=/data/mydata ###指明mysql的數據存放路徑 innodb_file_per_table = ON ##成為獨立表空間 skip_name_resolve = ON ##跳過名稱解析
9、提供mysql服務啟動腳本,這個腳本在我們的support-file有模板(mysql.server)
[root@bogon support-files]# cp mysql.server /etc/rc.d/init.d/mysqld [root@bogon support-files]# chkconfig --add mysqld ###添加到服務啟動
10、添加環境變量
[root@bogon ~]# vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH [root@bogon ~]# source /etc/profile.d/mysql.sh
11、導出頭文件
[root@bogon local]# ls bin etc games include lib lib64 libexec mariadb-5.5.46-linux-x86_64 mysql sbin share src [root@bogon local]# [root@bogon local]# ln -sv include/ /usr/include/mysql ‘/usr/include/mysql’ -> ‘include/’
12、導出庫文件
[root@bogon local]# vim /etc/ld.so.conf.d/mysql.conf 添加:/usr/local/mysql/lib
13、啟動服務,測試是否正常
[root@bogon local]# systemctl start mysqld [root@bogon local]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* [root@bogon local]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.46-MariaDB-log MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
三、編譯安裝php(192.168.1.110)
1、安裝開發包組及依賴關系的包
[root@pxe130 ~]# yum groupinstall Development tools Server Platform Development [root@pxe130 ~]# yum -y install bzip2-devel libmcrypt-devel libxml2-devel openssl-devel
2、編譯安裝php
[root@pxe130 ~]# tar xf php-5.4.26.tar.bz2 [root@pxe130 ~]# cd php-5.4.26/ ./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 [root@pxe130 php-5.4.26]# make -j 4 && make install
注意:支持fpm是需要把--with-apxs給去掉,添加--enable-fpm,此兩項是不可以同時使用
3、提供php提供配置文件
[root@pxe130 php-5.4.26]# cp php.ini-production /etc/php.ini
4、提供php-fpm腳本,并添加到服務啟動列表
[root@pxe130 php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm [root@pxe130 php-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm [root@pxe130 php-5.4.26]# chkconfig --add php-fpm
5、提供php-fpm配置文件
[root@pxe130 php]# cd /usr/local/php [root@pxe130 php]# cp etc/php-fpm.conf.default etc/php-fpm.conf
6、啟動服務
[root@pxe130 php]# systemctl start php-fpm [root@pxe130 php]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:9000 *:*
到此時我們的httpd mariadb php服務都已經全部編譯安裝好,下面我們需要來部署LAMP環境了!
---------------------------------------------------分割線------------------------------------------------------------
部署LAMP環境配置:
一、配置httpd:(192.168.1.103)
1、啟用支持fastFCGI的模塊
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、啟用虛擬主機
Include /etc/httpd24/extra/httpd-vhosts.conf
3、添加兩行使支持php
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
4、配置虛擬主機
[root@pxe132 ~]# vim /etc/httpd24/extra/httpd-vhosts.conf Directory Index index.php <VirtualHost 192.168.1.103:80> DocumentRoot "/data/vhost1/www1" ServerName wp.magedu.com ProxyRequests off ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.110:9000/data/vhost1/www1/$1 <Directory "/data/vhost1/www1"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost 192.168.1.103:80> DocumentRoot "/data/vhost2/www2" ServerName pam.magedu.com ProxyRequests off ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.110:9000/data/vhost2/www2/$1 <Directory "/data/vhost2/www2"> Options None AllowOverride None Require all granted </Directory> </VirtualHost>
5、創建網頁路徑
[root@pxe132 ~]# mkdir -p /data/vhost1/www1 [root@pxe132 ~]# mkdir -p /data/vhost2/www2 [root@pxe132 ~]# echo "vhost1" >/data/vhost1/www1/index.html [root@pxe132 ~]# echo "vhost2" >/data/vhost2/www2/index.html
6、重啟服務測試是否正常
[root@pxe132 ~]# apachectl -t Syntax OK [root@pxe132 ~]# apachectl restart [root@pxe132 ~]# curl http://wp.magedu.com vhost1 [root@pxe132 ~]# curl http://pam.magedu.com vhost2 ###ok我們httpd服務是沒問題
二、配置php-fpm(192.168.1.110)
1、配置php監聽地址信息
[root@pxe130 ~]# vim /usr/local/php/etc/php-fpm.conf pid = run/php-fpm.pid #啟用 listen.allowed_clients = 192.168.1.103 ##監聽允許htpd的IP地址 listen = 192.168.1.110:9000 ##監聽php可以與外部通信的IP地址 [root@pxe130 ~]# systemctl restart php-fpm.service [root@pxe130 ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 192.168.1.110:9000 *:*
2、創建與http網頁相同的路徑。然后測試php和http之間是否正常
[root@pxe130 ~]# mkdir -p /data/vhost1/www1 [root@pxe130 ~]# mkdir -p /data/vhost2/www2 [root@pxe130 ~]# vim /data/vhost1/www1/index.php <?php phpinfo(); ?> [root@pxe130 ~]# vim /data/vhost2/www2/index.php <?php phpinfo(); ?>
3、測試:
ok說明我們的php和httpd連接時正常的
三、配置mariadb(192.168.1.104)
1、創建表和授權用戶權限
MariaDB [(none)]> create database wpdb;###用于WordPress準備 Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'192.168.%.%' identified by 'wppass'; Query OK, 0 rows affected (0.03 sec) MariaDB [(none)]> create database pma; ###用于phpmyadmin準備 Query OK, 1 row affected (0.01 sec) MariaDB [(none)]> grant all on pma.* to 'pmauser'@'192.168.%.%' identified by 'pmapass'; Query OK, 0 rows affected (0.00 sec)
2、在php服務中編寫下測試頁,測試php和mariadb是否連接正常
[root@pxe130 ~]# vim /data/vhost1/www1/index.php <?php $conn = mysql_connect('192.168.1.104','wpuser','wppass'); if ($conn) echo "ok"; else echo "no"; phpinfo(); ?> [root@pxe130 ~]# vim /data/vhost2/www2/index.php <?php $conn = mysql_connect('192.168.1.104','pmauser','pmapass'); if ($conn) echo "ok"; else echo "no"; phpinfo(); ?>
3、測試
ok到現在我們的LAMP平臺環境是搞好了!!
---------------------------------------------------分割線-----------------------------------------------------------
基于LAMP部署應用WordPress和phpmyadmin
此處以下的操作在php服務器中進行:
一、部署WordPress
1、解壓、配置連接密碼和用戶及數據庫地址
[root@pxe130 ~]# unzip wordpress-4.3.1-zh_CN.zip [root@pxe130 ~]# mv wordpress /data/vhost1/www1/ [root@pxe130 ~]# cd /data/vhost1/www1/wordpress/ [root@pxe130 wordpress]# mv wp-config-sample.php wp-config.php [root@pxe130 wordpress]# vim wp-config.php /** WordPress數據庫的名稱 */ define('DB_NAME', 'wpdb'); /** MySQL數據庫用戶名 */ define('DB_USER', 'wpuser'); /** MySQL數據庫密碼 */ define('DB_PASSWORD', 'wppass'); /** MySQL主機 */ define('DB_HOST', '192.168.1.104');
2、此時我們需要把WordPress這個目錄個傳到http服務器主頁訪問的路徑下
root@pxe130 www1]# scp -r wordpress/ root@192.168.1.103:/data/vhost1/www1/
二、部署phpmyadmin
1、解壓,配置
[root@pxe130 ~]# unzip phpMyAdmin-4.4.14.1-all-languages.zip [root@pxe130 ~]# mv phpMyAdmin-4.4.14.1-all-languages /data/vhost2/www2/ [root@pxe130 www2]# ln -sv phpMyAdmin-4.4.14.1-all-languages/ phpmyadmin [root@pxe130 www2]# vim phpmyadmin/libraries/config.default.php $cfg['blowfish_secret'] = 'tSQRO02T+grA6rvJHCXr'; $cfg['Servers'][$i]['host'] = '192.168.1.104'; ###數據庫服務地址 $cfg['Servers'][$i]['user'] = 'pmauser'; $cfg['Servers'][$i]['password'] = 'pmapass';
2、將phpmyadmin傳一份給http服務器的相對應路徑下
[root@pxe130 www2]# scp -r phpmyadmin/ root@192.168.1.103:/data/vhost2/www2/
測試:
4、壓力測試:
Server Software: Apache/2.4.6 Server Hostname: wp.magedu.com Server Port: 80 Document Path: /wordpress Document Length: 239 bytes Concurrency Level: 1000 Time taken for tests: 3.096 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Non-2xx responses: 10006 Total transferred: 4672802 bytes HTML transferred: 2391434 bytes Requests per second: 3229.61 [#/sec] (mean) Time per request: 309.635 [ms] (mean) Time per request: 0.310 [ms] (mean, across all concurrent requests) Transfer rate: 1473.76 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 64 319.1 3 3030 Processing: 1 55 186.0 21 1454 Waiting: 1 54 185.9 20 1454 Total: 12 120 426.7 24 3042 Percentage of the requests served within a certain time (ms) 50% 24 66% 25 75% 26 80% 27 90% 30 95% 691 98% 1649 99% 2462 100% 3042 (longest request)
編譯安裝xcache緩存加速
1、解包生成配置
[root@pxe130 /]# tar xf xcache-3.2.0.tar.bz2 [root@pxe130 /]# cd xcache-3.2.0/ [root@pxe130 xcache-3.2.0]# /usr/local/php/bin/phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 [root@pxe130 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@pxe130 xcache-3.2.0]# make && make install
2、配置xcache
[root@pxe130 ~]# cp /xcache-3.2.0/xcache.ini /etc/php.d/ [root@pxe130 ~]# vim /etc/php.d/xcache.ini 添加: [xcache-common] extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so 修改下緩存大小: xcache.size = 200M
3、重啟php-fpm服務,此時index.php頁面應該就會有xcache支持了
[root@pxe130 ~]# systemctl restart php-fpm.service
在進行壓力測試::
[root@bogon ~]# ab -n 10000 -c1000 http://wp.magedu.com/wordpress Server Software: Apache/2.4.6 Server Hostname: wp.magedu.com Server Port: 80 Document Path: /wordpress Document Length: 239 bytes Concurrency Level: 1000 Time taken for tests: 2.128 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Non-2xx responses: 10000 Total transferred: 4670000 bytes HTML transferred: 2390000 bytes Requests per second: 4700.07 [#/sec] (mean) Time per request: 212.763 [ms] (mean) Time per request: 0.213 [ms] (mean, across all concurrent requests) Transfer rate: 2143.49 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 37 116.1 23 1028 Processing: 1 46 129.4 26 1480 Waiting: 1 40 129.8 20 1474 Total: 24 83 189.7 49 1646 Percentage of the requests served within a certain time (ms) 50% 49 66% 52 75% 53 80% 55 90% 59 95% 78 98% 726 99% 1458 100% 1646 (longest request)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。