溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

部署LAMP動(dòng)靜分離以及部署Discuz論壇

發(fā)布時(shí)間:2020-05-28 10:38:02 來(lái)源:網(wǎng)絡(luò) 閱讀:3145 作者:筱振 欄目:系統(tǒng)運(yùn)維

通過(guò)LAMP平臺(tái)部署及應(yīng)用 已經(jīng)可以部署出LAMP平臺(tái),來(lái)面對(duì)客戶端的請(qǐng)求,但是由于這些組件都是在一臺(tái)服務(wù)器上進(jìn)行安裝,如果出現(xiàn)問(wèn)題,將導(dǎo)致LAMP平臺(tái)的癱瘓。在實(shí)際環(huán)境中,不可能將LAMP平臺(tái)都部署在同一臺(tái)服務(wù)器上,這就需要使用到LAMP動(dòng)靜分離的技術(shù)。

博文大綱:
一、LAMP動(dòng)靜分離的相關(guān)概念
1.PHP的工作模式
2.FastCGI模式的工作機(jī)制
二、實(shí)現(xiàn)LAMP動(dòng)靜分離
1.FastCGI方式編譯安裝php
2.搭建Apache并配置通過(guò)fastcgi協(xié)議調(diào)用php

  1. 搭建Mysql數(shù)據(jù)庫(kù)
    4.ab壓力測(cè)試工具
    5.安裝php加速軟件Xcache
    三、部署Discuz論壇

一、LAMP動(dòng)靜分離的相關(guān)概念

要想實(shí)現(xiàn)LAMP動(dòng)靜分離,最主要的還是PHP,因?yàn)槲覀冃枰褂肞HP解釋器來(lái)解析動(dòng)態(tài)頁(yè)面,然后向Web服務(wù)器傳輸解析后的網(wǎng)站內(nèi)容。我們下面重點(diǎn)介紹一下PHP。

1.PHP的工作模式

PHP在在LAMP環(huán)境下共有三種工作模式:

  • CGI模式:在這種模式下運(yùn)行PHP,性能不是很好;
  • apache模塊:在這種模式下運(yùn)行PHP,在LAMP平臺(tái)部署及應(yīng)用 就是使用的這種模式,使用apache調(diào)用php完成工作;
  • FastCGI模式:在這種模式下運(yùn)行PHP,PHP就是一處獨(dú)立的進(jìn)程,所有的PHP子進(jìn)程都由PHP的一個(gè)叫做php-fpm的組件負(fù)責(zé)管理;

2.FastCGI模式的工作機(jī)制

首選客戶端發(fā)起請(qǐng)求,請(qǐng)求一般分為兩種:一種是靜態(tài)請(qǐng)求,可以直接由Apache響應(yīng)直接返回客戶端所需資源;另一種動(dòng)態(tài)請(qǐng)求,其中包含PHP或Perl這種腳本解釋型語(yǔ)言,則由Apache服務(wù)器通過(guò)fastcgi協(xié)議調(diào)用php服務(wù)器執(zhí)行并返回給Apache,由Apache向客戶端返回客戶端所需資源,如果這個(gè)過(guò)程中涉及到對(duì)數(shù)據(jù)的操作,此時(shí)php服務(wù)器還會(huì)通過(guò)mysql協(xié)議調(diào)用mysql服務(wù)器。如圖:
部署LAMP動(dòng)靜分離以及部署Discuz論壇

二、實(shí)現(xiàn)LAMP動(dòng)靜分離

案例所需:

  • 一臺(tái)httpd服務(wù)器(192.168.1.1)編譯安裝httpd服務(wù);
  • 一臺(tái)mysql服務(wù)器(192.168.1.2)編譯安裝mysql服務(wù);
  • 一臺(tái)php服務(wù)器(192.168.1.3)編譯安裝php服務(wù);

1.FastCGI方式編譯安裝php

獲取PHP所需軟件包

1)解決依賴關(guān)系
[root@localhost ~]#  yum -y install libxml2-devel lzip2-devel libcurl-devel \
libmcrypt-devel openssl-devel bzip2-devel 
//安裝PHP程序所需要的依賴包
[root@localhost ~]# tar zxf libmcrypt-2.5.7.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/libmcrypt-2.5.7/
[root@localhost libmcrypt-2.5.7]#  ./configure --prefix=/usr/local/libmcrypt && make && make install 
//編譯安裝 libmcrypt 軟件包
2)編譯安裝php
[root@localhost ~]# tar zxf php-5.6.27.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/php-5.6.27/
[root@localhost php-5.6.27]#  ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets \
--enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt  \
--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d \
--with-bz2 --enable-maintainer-zts && make && make install

配置選項(xiàng)相關(guān)解釋:

  • --prefix=/usr/local/php5.6 //指定安裝位置;
  • --with-mysql=mysqlnd //安裝連接mysql工具支持 mysql;
  • --with-pdo-mysql=mysqlnd //支持Mysql pdo 模塊
  • --with-mysqli=mysqlnd //支持 mysqli 模塊
    注意:上面的三選項(xiàng)的作用:數(shù)據(jù)庫(kù)與 php 不在一個(gè)服務(wù)器上,指定此種方式,安裝數(shù)據(jù)庫(kù) 連接驅(qū)動(dòng);
  • --with-openssl //支持 openssl 模塊;
  • --enable-fpm //支持 fpm 模式;
  • --enable-sockets //啟用 socket 支持;
  • --enable-sysvshm //啟用系統(tǒng)共享內(nèi)存支持;
  • --enable-mbstring //多字節(jié)字串、像我們的中文就是多字節(jié)字串;
  • --with-freetype-dir //支持 freetype、就要裝 freetype-devel、跟字體相關(guān)的、字體解析工具 --with-jpeg-dir --with-png-dir;
    注意:上面的二選項(xiàng)的作用:處理 jpeg、png 圖片的、php 可以動(dòng)態(tài)生成 jpeg 圖片;
  • --with-zlib //是個(gè)壓縮庫(kù)、在互聯(lián)網(wǎng)傳輸時(shí)用來(lái)壓縮傳輸?shù)模?
  • --with-libxml-dir=/usr //這個(gè) libxml 是用來(lái)解析 xml 的;
  • --enable-xml //支持 xml ;
  • --with-mhash //支持 mhash;
  • --with-mcrypt=/usr/local/libmcrypt //libmcrypt-devel 這個(gè)程序包所指定的;
  • --with-config-file-path=/etc //指定配置文件的存放路徑;
  • --with-config-file-scan-dir=/etc/php.d //配置文件掃描路徑;
  • --with-bz2 //支持 BZip2 為了支持 apache 的 worker 或 event 這兩個(gè) MPM,編譯時(shí)使用了--enable-maintainer-zts 選項(xiàng)

如果使用 PHP5.3 以上版本,為了鏈接 MySQL 數(shù)據(jù)庫(kù),可以指定 mysqlnd,這樣在本機(jī)就不需要先安裝 MySQL 或 MySQL 開發(fā)包了。mysqlnd 從 php 5.3 開始可用,可以編譯時(shí)綁定到它 (而不用和具體的 MySQL 客戶端庫(kù)綁定形成依賴),但從 PHP 5.4 開始它就是默認(rèn)設(shè)置

3)提供php配置文件
[root@localhost ~]# cp /usr/src/php-5.6.27/php.ini-production /etc/php.ini
//復(fù)制源碼包下的配置文件生成php的配置文件
4)創(chuàng)建php-fpm腳本
[root@localhost ~]# cp /usr/src/php-5.6.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
//復(fù)制源碼包下的啟動(dòng)腳本
[root@localhost ~]# chmod +x /etc/init.d/php-fpm 
[root@localhost ~]# chkconfig --add php-fpm
//添加為系統(tǒng)服務(wù),現(xiàn)在還不可以啟動(dòng),因?yàn)檫€沒(méi)生成php服務(wù)器的配置文件
5)提供 php-fpm配置并進(jìn)行編輯
[root@localhost ~]# cd /usr/local/php5.6/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
//原本安裝完成的后配置文件不生效,所以需要改名(這是php-fpm的配置文件)
[root@localhost etc]# sed -i 's#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g' php-fpm.conf
//指定pid文件存放位置
[root@localhost etc]# sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/g' php-fpm.conf
//修改監(jiān)聽地址為全部監(jiān)聽
[root@localhost etc]# sed -i 's/pm.max_children = 5/pm.max_children = 50/g' php-fpm.conf
//修改最大啟動(dòng)的子進(jìn)程數(shù)為50
[root@localhost etc]# sed -i 's/pm.start_servers = 2/pm.start_servers = 5/g' php-fpm.conf
//修改初始啟動(dòng)進(jìn)程數(shù)為5
[root@localhost etc]# sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g' php-fpm.conf
//修改最小空閑子進(jìn)程數(shù)為5
[root@localhost etc]# sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 35/g' php-fpm.conf
//修改最大空閑子進(jìn)程為35
[root@localhost ~]# systemctl start php-fpm       //啟動(dòng)php服務(wù)
[root@localhost ~]# netstat -anpt | grep 9000      //確定9000在監(jiān)聽
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      45563/php-fpm: mast 

如果防火墻是開啟的狀態(tài),需要進(jìn)行以下操作:

[root@localhost ~]#  firewall-cmd --permanent --add-port=9000/tcp 
[root@localhost ~]# firewall-cmd --reload 
//允許TCP9000訪問(wèn),重載以立即生效
[root@localhost ~]# mkdir -p /var/www/benet
//在該主機(jī)上新鍵虛擬主機(jī)目錄用于存放網(wǎng)頁(yè)文件

2.搭建Apache并配置通過(guò)fastcgi協(xié)議調(diào)用php

參考安裝Apache 進(jìn)行安裝Apache,這里就略過(guò)了,Apache安裝完成之后,需要進(jìn)行以下操作!

自從Apache 2.4以后已經(jīng)專門有一個(gè)模塊對(duì)FastCGI的實(shí)現(xiàn),此模塊為mod_proxy_fcgi.so,它其實(shí)是作為mod_proxy.so模塊的擴(kuò)充,因此以下兩個(gè)模塊需要被加載:

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_module modules/mod_proxy.so

操作如下:

[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf
//編輯httpd的主配置文件
……………………                 //省略部分內(nèi)容
# LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so         
# LoadModule proxy_module modules/mod_proxy.so
//去除模塊前面的“#”號(hào),啟用模塊
#Include conf/extra/httpd-vhosts.conf         //去除“#”號(hào),啟用虛擬主機(jī)配置文件
定位到AddType:添加以下一行:
AddType  application/x-httpd-php .php
//讓apache能識(shí)別php格式的頁(yè)面
定位到以下內(nèi)容:
<IfModule dir_module>
    DirectoryIndex index.php index.html         //在index.html前面添加index.php 
</IfModule>
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/extra/httpd-vhosts.conf 
//編輯Apache的虛擬主機(jī)配置文件,修改為以下內(nèi)容:
<VirtualHost *:80>
    ServerAdmin admin@admin.com
    DocumentRoot "/var/www/benet"
    ServerName www.benet.com
    ServerAlias www.benet.com
    ErrorLog "logs/benet-error_log"
    CustomLog "logs/benet-access_log" common
    ProxyRequests Off                                         //關(guān)閉正向代理
        ProxyPassMatch  ^/(.*\.php(/.*)?)$  fcgi://192.168.1.3:9000/var/www/benet/$1    
<Directory "/var/www/benet">        
 Options  FollowSymLinks          //禁止目錄遍歷  
 AllowOverride None        //允許請(qǐng)求為空
 Require all granted                 //允許所有客戶端訪問(wèn)
</Directory>
</VirtualHost>
[root@localhost ~]# mkdir -p /var/www/benet
[root@localhost ~]# systemctl restart httpd
//創(chuàng)建虛擬目錄之后,重啟httpd服務(wù)
ProxyPassMatch  ^/(.*\.php(/.*)?)$  fcgi://192.168.1.3:9000/var/www/benet/$1                  
//把以.php 結(jié)尾的文件請(qǐng)求發(fā)送到 php-fpm 進(jìn)程,php-fpm 至少需要知道運(yùn) 行的目錄和 URI,所以這里直接在 fcgi://192.168.1.3:9000 后指明了這兩個(gè)參數(shù),其它的參數(shù)的傳遞已經(jīng)被 mod_proxy_fcgi.so 進(jìn)行了封裝,不需要手動(dòng)指定。 特別注意的是,IP地址后面的目錄路徑需要與<VirtualHost> 中的 DocumentRoot 后的路徑一致 。ProxyPassMatch 只有滿足特定正則模式的內(nèi)容才會(huì)匹配并執(zhí)行此規(guī)則,這里的模式是,^/(.*\.php(/.*)?)$ 從網(wǎng)站(虛擬主機(jī)<VirtualHost> 的根目錄開始,匹配任何以 .php 結(jié)尾,或者在 .php 之后 緊跟一個(gè) / 再跟別的內(nèi)容的路徑。 ^ (caret) 和 $ (dollar)標(biāo)志要匹配的路徑的開始和結(jié)束 ( )括號(hào)里的內(nèi)容可以用 $1 來(lái)表示,以方便后面引用它。 fcgi:// 192.168.1.3:9000 通過(guò) mod_proxy_fcgi 來(lái)轉(zhuǎn)發(fā)的代理,使用 fastCGI 協(xié)議,轉(zhuǎn)到 PHP-FPM 監(jiān)聽的端口。 /path/to/your/documentroot/ 非常重要!必須與虛擬主機(jī)的路徑匹配,且必須是對(duì)應(yīng) php 文件在操作系統(tǒng)中的絕對(duì)路徑。 否則會(huì)找不到文件。 
$1 可以從原始請(qǐng)求擴(kuò)展成整個(gè)請(qǐng)求路徑的變量,這里指代前面( ) 里面匹配的那個(gè)路徑(uri)

注意:Apache httpd 2.4 以前的版本中,要么把 PHP 作為 Apache 的模塊運(yùn)行,要么添加一個(gè)第 三方模塊支持 PHP-FPM 實(shí)現(xiàn)。

在php服務(wù)器上創(chuàng)建測(cè)試網(wǎng)頁(yè):

[root@localhost ~]# cat /var/www/benet/index.php 
<?php 
phpinfo(); 
?> 

訪問(wèn)效果如下:
部署LAMP動(dòng)靜分離以及部署Discuz論壇
安裝這樣頁(yè)面,就表示Apache已經(jīng)可以和php協(xié)同工作了
以上是利用Apache的虛擬主機(jī)來(lái)調(diào)用php-fpm進(jìn)行工作,其實(shí)Apache本身就可以調(diào)用php-fpm,無(wú)需創(chuàng)建虛擬主機(jī)。

3. 搭建Mysql數(shù)據(jù)庫(kù)

由于編譯安裝Mysql數(shù)據(jù)庫(kù)需要很長(zhǎng)的時(shí)間,本人提供Mysql安裝腳本及安裝所需軟件 一分鐘安裝完成(mysql數(shù)據(jù)庫(kù)的賬號(hào)root默認(rèn)的密碼是123)!

安裝完成之后,進(jìn)行以下操作:

[root@localhost ~]# mysql -u root -p123
mysql> grant all on *.* to lzj@'192.168.1.%' identified by '123456';
//創(chuàng)建數(shù)據(jù)庫(kù)用戶并進(jìn)行授權(quán)
mysql> exit

在php服務(wù)器填寫測(cè)試腳本:

[root@localhost ~]# cat /var/www/benet/test.php 
<?php
$link=mysql_connect('192.168.1.2','lzj','123456');
if($link) echo "恭喜你,數(shù)據(jù)庫(kù)連接成功!?。?; else echo "connect shibai";
mysql_close($link);
?>

訪問(wèn)進(jìn)行測(cè)試:
部署LAMP動(dòng)靜分離以及部署Discuz論壇
看到這個(gè)頁(yè)面就表示Apache、PHP、Mysql可以協(xié)同工作了!

4.ab壓力測(cè)試工具

網(wǎng)絡(luò)性能壓力測(cè)試是服務(wù)器網(wǎng)站性能調(diào)優(yōu)過(guò)程中必不可缺少的一環(huán)。只有當(dāng)服務(wù)器處在高壓的情況下,才能體現(xiàn)出軟件、硬件等各種設(shè)置不當(dāng)所暴露的問(wèn)題。

性能測(cè)試工具比較常用的就是:ab、http_load、webbench、siege。本篇博文只介紹ab工具。

ab是Apache自帶的壓力測(cè)試工具。ab非常實(shí)用,它不僅可以對(duì)apache服務(wù)器進(jìn)行網(wǎng)站訪問(wèn)壓力測(cè)試,也可以對(duì)其他類型的服務(wù)器進(jìn)行壓力測(cè)試。比如:Nginx、Tomcat、IIS等。

(1)ab壓力測(cè)試工具的原理

ab命令會(huì)創(chuàng)建多個(gè)并發(fā)訪問(wèn)線程,模擬多個(gè)訪問(wèn)者同時(shí)對(duì)某一URL地址進(jìn)行訪問(wèn)。它的測(cè)試目標(biāo)是基于URL的,因此,它既可以測(cè)試Apache的負(fù)載壓力,也可以測(cè)試Nginx、Tomcat、IIS等其他Web服務(wù)器的壓力。

ab命令對(duì)發(fā)出負(fù)載的計(jì)算機(jī)要求很低,它既不會(huì)占用很高的CPU,也不會(huì)占用很多內(nèi)存。但卻會(huì)給目標(biāo)服務(wù)器造成巨大的負(fù)載。進(jìn)行測(cè)試時(shí),需要格外注意,否則可能一次性測(cè)試太多的負(fù)載,可能造成目標(biāo)服務(wù)器資源耗盡,嚴(yán)重導(dǎo)致死機(jī)。

(2)ab壓力測(cè)試工具的安裝

ab的安裝非常簡(jiǎn)單,如果是源碼包進(jìn)行安裝Apache的話,Apache安裝完畢后,ab就存放在Apache安裝目錄的bin目錄下;
如果是使用yum的方式安裝Apache的話,ab命令默認(rèn)存放在/usr/bin目錄下;

注意:如果不想安裝Apache又想使用ab命令的話,就需要使用yum的方式安裝httpd-tools。

查看ab是否安裝成功,可以進(jìn)行以下測(cè)試:
部署LAMP動(dòng)靜分離以及部署Discuz論壇
這是由于安裝openssl時(shí)指定的庫(kù)位置出現(xiàn)錯(cuò)誤。
如果出現(xiàn)上述情況,解決方法如下:

[root@localhost ~]# export  LD_LIBRARY_PATH=/usr/local/openssl/lib/               //將所需模塊所在路徑導(dǎo)出為環(huán)境變量
[root@localhost ~]# /usr/local/http-2.4.23/bin/ab -V                        //這樣就可以正常使用
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
(3)ab壓力測(cè)試命令的參數(shù)

ab命令常用的參數(shù)有兩個(gè):

  • -n:在測(cè)試會(huì)話中所執(zhí)行的請(qǐng)求個(gè)數(shù)(總請(qǐng)求數(shù));
  • -c:一次產(chǎn)生的請(qǐng)求個(gè)數(shù)(即并發(fā)用戶數(shù));
[root@localhost ~]# cat /var/www/benet/index.html
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
//創(chuàng)建Apache的首頁(yè)文件
[root@localhost ~]# ab -c 500 -n 10000 http://192.168.1.1/index.html
//對(duì)192.168.1.1的Web服務(wù)器進(jìn)行測(cè)試
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.1.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        Apache/2.4.23
Server Hostname:        192.168.1.1
Server Port:            80

Document Path:          /index.html                  //請(qǐng)求的資源名稱
Document Length:        34 bytes                  //響應(yīng)數(shù)據(jù)的正文長(zhǎng)度

Concurrency Level:      500                   //并發(fā)個(gè)數(shù)
Time taken for tests:   1.727 seconds       //處理這些請(qǐng)求所花費(fèi)的時(shí)間
Complete requests:      10000               //成功請(qǐng)求完成的次數(shù)
Failed requests:        0                          //失敗的請(qǐng)求次數(shù)
Total transferred:      2780000 bytes      //所有請(qǐng)求的響應(yīng)數(shù)據(jù)長(zhǎng)度總和
HTML transferred:       340000 bytes         //請(qǐng)求的正文數(shù)據(jù)總和
Requests per second:    5788.87 [#/sec] (mean)      //吞吐量-每秒請(qǐng)求數(shù)(計(jì)算公式:請(qǐng)求的次數(shù)/用戶等待時(shí)間)吞吐量越大越好
Time per request:       86.373 [ms] (mean)        //用戶平均等待時(shí)間(計(jì)算方式:用戶等待時(shí)間/(請(qǐng)求的次數(shù)/并發(fā)))
Time per request:       0.173 [ms] (mean, across all concurrent requests)       //服務(wù)器平均等待時(shí)間(計(jì)算方式:用戶等待時(shí)間/完成請(qǐng)求的次數(shù))
Transfer rate:          1571.59 [Kbytes/sec] received   //用戶請(qǐng)求的數(shù)據(jù)大?。ㄓ?jì)算方式:數(shù)據(jù)總長(zhǎng)度/用戶等待時(shí)間)

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   24 138.0      4    1034
Processing:     8   50  93.8     16     822
Waiting:        0   47  93.2     13     816
Total:         12   74 168.7     20    1255

Percentage of the requests served within a certain time (ms)
  50%     20
  66%     25
  75%     31
  80%     39
  90%    222
  95%    250
  98%    832
  99%   1050
 100%   1255 (longest request)
 //這部分?jǐn)?shù)據(jù)用于描述每個(gè)請(qǐng)求處理時(shí)間的分布情況
(4)ab壓力測(cè)試工具重要的性能指標(biāo)

在進(jìn)行性能測(cè)試過(guò)程中有幾個(gè)指標(biāo)比較重要:

1.吞吐量:服務(wù)器并發(fā)處理能力的量化描述。指的是在某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)處理的請(qǐng)求數(shù)。某個(gè)并發(fā)用戶數(shù)下單位時(shí)間內(nèi)能處理的最大請(qǐng)求數(shù),稱之為最大吞吐量。

注意:吞吐量是基于并發(fā)用戶數(shù)的。這句話的含義:

  • 吞吐量和并發(fā)用戶數(shù)有關(guān);
  • 不同的并發(fā)用戶數(shù)下,吞吐量是不同的;
    計(jì)算公式:總請(qǐng)求數(shù)/處理完成這些請(qǐng)求所花費(fèi)的時(shí)間。

2.并發(fā)連接數(shù):并發(fā)連接數(shù)指的是某個(gè)時(shí)刻服務(wù)器所接收的請(qǐng)求數(shù)目,簡(jiǎn)單的講,就是一個(gè)會(huì)話。
3.并發(fā)用戶數(shù):一個(gè)用戶可以同時(shí)會(huì)產(chǎn)生一個(gè)會(huì)話或多個(gè)會(huì)話,也就是連接數(shù);
4.用戶平均等待時(shí)間:計(jì)算公式:處理完成所有請(qǐng)求數(shù)所花費(fèi)的時(shí)間/(總請(qǐng)求數(shù)/并發(fā)用戶數(shù));
5.服務(wù)器平均等待時(shí)間:計(jì)算公式:處理完成多有請(qǐng)求數(shù)所花費(fèi)的時(shí)間/總請(qǐng)求數(shù)。也就是吞吐量的倒數(shù)。同時(shí)也就是用戶平均等待時(shí)間/并發(fā)用戶數(shù)。

5.安裝php加速軟件Xcache

以下操作均在php服務(wù)器上完成。

下載Xcache軟件

(1)安裝xcache
[root@localhost ~]# tar zxf xcache-3.2.0.tar.gz -C /usr/src   
[root@localhost ~]# cd /usr/src/xcache-3.2.0/
[root@localhost xcache-3.2.0]#  /usr/local/php5.6/bin/phpize
Configuring for:
//需要使用phpize命令來(lái)生成configure配置文件
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@localhost xcache-3.2.0]# ./configure --enable-xcache --enable-xcache-coverager \
--enable-xcache-optimizer --with-php-config=/usr/local/php5.6/bin/php-config && make && make install  
//編譯安裝之后,這條路徑至關(guān)重要:
Installing shared extensions:     /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/

編譯配置參數(shù)詳解:

  • --enable-xcache:?jiǎn)⒂脁cache功能;
  • --enable-xcache-coverager:用于測(cè)試加速器功效和附加性;
  • --enable-xcache-optimizer:操作代碼優(yōu)化;
(2)創(chuàng)建xcache緩存文件
[root@localhost ~]# touch /tmp/xcache
[root@localhost ~]# chmod 777 /tmp/xcache 
(3)將xcache的后臺(tái)管理程序復(fù)制到網(wǎng)站目錄下
[root@localhost ~]# cp -r /usr/src/xcache-3.2.0/htdocs/ /var/www/benet/xcache
//以便使用web頁(yè)面進(jìn)行訪問(wèn),查看效果
(4)修改php的配置文件,讓其支持xcache
[root@localhost ~]# vim /etc/php.ini                   //編輯php的配置文件
//在末尾添加以下內(nèi)容
[xcache-common] 
extension = /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/xcache.so 
//啟用php的xcache擴(kuò)展功能
[xcache.admin] 
xcache.admin.enable_auth = Off         //關(guān)閉xcache認(rèn)證
[xcache] 
xcache.shm_scheme ="mmap"            //決定xcache如何從系統(tǒng)共享內(nèi)存
//nmap是一種內(nèi)存映射文件的方法
xcache.size=60M              //所用共享緩存的大小,如果設(shè)置為0,將無(wú)法使用
xcache.count =1                  //將cache切分成多少塊,建議設(shè)置為cpu數(shù) 
xcache.slots =8K                //指作為hash槽個(gè)數(shù)的參考值
xcache.ttl=0                      //文件生存時(shí)間,設(shè)置為0將無(wú)限緩存
xcache.gc_interval =0          //觸發(fā)垃圾回收的時(shí)間間隔,默認(rèn)為0秒
xcache.var_size=64M           //針對(duì)變量的緩存
xcache.var_count =1 
xcache.var_slots =8K 
xcache.var_ttl=0 
xcache.var_maxttl=0 
xcache.var_gc_interval =300 
xcache.test =Off                   //關(guān)閉測(cè)試功能
xcache.readonly_protection = Off           //啟動(dòng)會(huì)降低性能,但是略微提高安全性
xcache.mmap_path ="/tmp/xcache"          //用于只讀文件路徑
xcache.coredump_directory =""                
//在遇到故障時(shí),放置核心轉(zhuǎn)儲(chǔ)功能,必須是php可寫入的目錄,保留為空表示禁用
xcache.cacher =On            //使用opcode緩存,xcache.size=0時(shí)無(wú)效
xcache.stat=On                 //使用stat發(fā)現(xiàn)檢查腳本的更新
xcache.optimizer =Off                 //禁用優(yōu)化
[xcache.coverager] 
xcache.coverager =On           //啟用代碼覆蓋信息采集器
xcache.coveragedump_directory =""        
//放置數(shù)據(jù)采集信息的目錄位置,默認(rèn)使用目錄/tmp/pcovis
[root@localhost ~]# scp -r /var/www/benet/xcache/  192.168.1.1:/var/www/benet
//將xcache網(wǎng)頁(yè)文件復(fù)制到Apache服務(wù)器網(wǎng)頁(yè)根目錄
[root@localhost ~]# systemctl restart php-fpm
//重新啟動(dòng)php

客戶使用瀏覽器進(jìn)行訪問(wèn)測(cè)試:
部署LAMP動(dòng)靜分離以及部署Discuz論壇
如果現(xiàn)在對(duì)動(dòng)態(tài)頁(yè)面進(jìn)行壓力測(cè)試,此時(shí)xcache就會(huì)緩存動(dòng)態(tài)頁(yè)面信息,實(shí)際環(huán)境中一般也使用不到,所以這里就略過(guò)了。

三、部署Discuz論壇

下載Discuz論壇程序

php服務(wù)器進(jìn)行以下操作:

[root@localhost ~]# unzip Discuz_7.0.0_FULL_SC_UTF8.zip -d discus
//將Discuz軟件程序解壓到discus目錄
[root@localhost ~]# mv discus/Discuz_7.0.0_FULL_SC_UTF8/upload/ /var/www/benet/bbs
//將Discuz程序中的upload移動(dòng)到網(wǎng)站跟目錄下
[root@localhost ~]# chown -R nobody:nobody /var/www/benet/bbs/
[root@localhost ~]# chmod -R 777 /var/www/benet/bbs/
//將目錄設(shè)置權(quán)限(測(cè)試環(huán)境賦予最大權(quán)限)
[root@localhost ~]# sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php.ini
//修改php服務(wù)器的配置文件
[root@localhost ~]# systemctl restart php-fpm                  //重啟php-fpm
[root@localhost ~]# echo "/var/www/benet  192.168.1.0/24(rw,sec=sys,sync,no_root_squash)" >> /etc/exports
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/var/www/benet 192.168.1.0/24
//配置nfs服務(wù),并重啟nfs服務(wù)

Mysql服務(wù)器進(jìn)行以下操作:

[root@localhost ~]# mysql -u root -p123      //登錄Mysql服務(wù)器
mysql> create database bbs;                //創(chuàng)建bbs數(shù)據(jù)庫(kù)

Apache服務(wù)器進(jìn)行以下操作:

[root@localhost ~]# mount -t nfs 192.168.1.3:/var/www/benet/ /var/www/benet
//將php服務(wù)器的網(wǎng)頁(yè)根目錄復(fù)制到Apache服務(wù)器網(wǎng)頁(yè)根目錄

客戶端訪問(wèn)測(cè)試
部署LAMP動(dòng)靜分離以及部署Discuz論壇
部署LAMP動(dòng)靜分離以及部署Discuz論壇
部署LAMP動(dòng)靜分離以及部署Discuz論壇
部署LAMP動(dòng)靜分離以及部署Discuz論壇
部署LAMP動(dòng)靜分離以及部署Discuz論壇
訪問(wèn)論壇成功!

———————— 本文至此結(jié)束,感謝閱讀 ————————

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI