内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

第十八章lamp架構(gòu)

建站服務(wù)器

18.1 lamp簡介

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的梓潼網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

有了前面學(xué)習(xí)的知識的鋪墊,今天可以來學(xué)習(xí)下第一個常用的web架構(gòu)了。

所謂lamp,其實就是由Linux+Apache+mysql/MariaDB+Php/Perl/Python的一組動態(tài)網(wǎng)站或者服務(wù)器的開源軟件,除Linux外其它各部件本身都是各自獨立的程序,但是因為經(jīng)常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應(yīng)用程序平臺。

LAMP指的是Linux(操作系統(tǒng))、Apache(HTTP服務(wù)器)、Mysql(也指MariaDB,數(shù)據(jù)庫軟件)和PHP(有時也是指Perl或Python)的第一個字母,一般用來建立web應(yīng)用平臺

18.2 Web服務(wù)器工作流程

在說lamp架構(gòu)平臺的搭建前,我們先來了解下什么是CGI,什么是FastCGI,什么是......

web服務(wù)器的資源分為兩種,靜態(tài)資源和動態(tài)資源。

所謂靜態(tài)資源就是指靜態(tài)內(nèi)容,客戶端從服務(wù)器獲得的資源的表現(xiàn)形式與原文件相同??梢院唵蔚睦斫鉃榫褪侵苯哟鎯τ谖募到y(tǒng)中的資源

動態(tài)資源則通常是程序文件,需要在服務(wù)器執(zhí)行之后,將執(zhí)行的結(jié)果返回給客戶端。

那么web服務(wù)器如何執(zhí)行程序并將結(jié)果返回給客戶端呢?下面通過一張圖來說明一下web服務(wù)器如何處理客戶端的請求

如上圖所示

階段①顯示的是httpd服務(wù)器(即apache)和php服務(wù)器通過FastCGI協(xié)議進(jìn)行通信,且php作為獨立的服務(wù)進(jìn)程運行

階段②顯示的是php程序和MYSQL數(shù)據(jù)庫間通過mysql協(xié)議進(jìn)行通信。php與mysql本沒有什么聯(lián)系,但是由Php語言寫成的程序可以與mysql進(jìn)行數(shù)據(jù)交互。同理perl和python寫的程序也可以與mysql數(shù)據(jù)庫進(jìn)行交互

18.2.1 cgi與fastcgi

上圖階段①中提到了FastCGI,下面我們來了解下CGI與FastCGI。

CGI(Common Gateway Interface,通用網(wǎng)關(guān)接口),CGI是外部應(yīng)用程序(CGI程序)與WEB服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的過程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將web的一組簡單的靜態(tài)超媒體文檔變成一個完整的新的交互式媒體。

FastCGI(Fast Common Gateway Interface)是CGI的改良版,CGI是通過啟用一個解釋器進(jìn)程來處理每個請求,耗時且耗資源,而FastCGI則是通過master-worker形式來處理每個請求,即啟動一個master主進(jìn)程,然后根據(jù)配置啟動幾個worker進(jìn)程,當(dāng)請求進(jìn)來時,master會從worker進(jìn)程中選擇一個去處理請求,這樣就避免了重復(fù)的生成和殺死進(jìn)程帶來的頻繁cpu上下文切換而導(dǎo)致耗時

18.2.2 httpd與php結(jié)合的方式

httpd與php結(jié)合的方式有以下三種:

a) modules:php將以httpd的擴展模塊形式存在,需要加載動態(tài)資源時,httpd可以直接通過php模塊來加工資源并返回給客戶端

httpd prefork:libphp5.so(多進(jìn)程模型的php)

httpd event or worker:libphp5-zts.so(線程模型的php)

b) CGI:httpd需要加載動態(tài)資源時,通過CGI與php解釋器聯(lián)系,獲得php執(zhí)行的結(jié)果,此時httpd負(fù)責(zé)與php連接的建立和斷開等

c) FastCGI:利用php-fpm機制,啟動為服務(wù)進(jìn)程,php自行運行為一個服務(wù),https通過socket與php通信

較于CGI方式,F(xiàn)astCGI更為常用,很少有人使用CGI方式來加載動態(tài)資源

18.2.3 web工作流程

下面來通過上面的圖說明一下web的工作流程

客戶端通過http協(xié)議請求web服務(wù)器資源,web資源收到請求后判斷客戶端請求的資源是靜態(tài)資源或是動態(tài)資源,若是靜態(tài)資源則直接從本地文件系統(tǒng)取之返回給客戶端。否則若為動態(tài)資源則通過FastCGI協(xié)議與php服務(wù)器聯(lián)系,通過CGI程序的master進(jìn)程調(diào)度worker進(jìn)程來執(zhí)行程序以獲得客戶端請求的動態(tài)資源,并將執(zhí)行的結(jié)果通過FastCGI協(xié)議返回給httpd服務(wù)器,httpd服務(wù)器收到php的執(zhí)行結(jié)果后將其封裝為http響應(yīng)報文響應(yīng)給客戶端。在執(zhí)行程序獲取動態(tài)資源時若需要獲得數(shù)據(jù)庫中的資源時,由Php服務(wù)器通過mysql協(xié)議與MySQL/MariaDB服務(wù)器交互,取之而后返回給httpd,httpd將從php服務(wù)器收到的執(zhí)行結(jié)果封裝成http響應(yīng)報文響應(yīng)給客戶端。

18.3 lamp平臺構(gòu)建

18.3.1 通過yum安裝方式構(gòu)建lamp平臺

CentOS7下構(gòu)建lamp:

要安裝的程序包:httpd,php,php-mysql,mariadb-server

注意:php要求httpd使用prefork MPM

yum-yinstallhttpdphpphp-mysqlmariadb-server
systemctlstarthttpd.service
systemctlstartmariadb.service

CentOS6下構(gòu)建lamp:

要安裝的程序包:httpd,php,php-mysql,mysql-server

yum-yinstallhttpdphpphp-mysqlmysql-server
servicehttpdstart
servicemysqldstart

18.3.2 編譯安裝lamp

http對fastcgi協(xié)議的支持:

a) httpd-2.2:需要額外安裝fastcgi模塊

wgethttps://mirrors.tuna.tsinghua.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.bz2
tarxfmod_fcgid-2.3.9.tar.bz2
cdmod_fcgid-2.3.9
./configure.apxs
make
makeinstall

b) httpd-2.4:自帶fastcgi模塊

安裝次序:httpd,MariaDB,php

安裝httpd-2.2:

cd/usr/src
wgethttp://mirror.bit.edu.cn/apache//httpd/httpd-2.2.32.tar.bz2
tarxfhttpd-2.2.32.tar.bz2
cdhttpd-2.2.32
./configure--prefix=/usr/local/httpd
make
makeinstall
echo\'PATH=/usr/local/httpd/bin:$PATH\'>/etc/profile.d/httpd.sh
source/etc/profile.d/httpd.sh
ln-s/usr/local/httpd/include//usr/include/httpd
echo\'MANPATH/usr/local/httpd/man\'>>/etc/man.config
apachectlstart

安裝MariaDB:

cd/usr/src
wgethttp://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
tarxfgcc-5.2.0.tar.bz2
cdgcc-5.2.0
./contrib/download_prerequisites
yum-yinstallgcc-c++glibc-staticgcc

./configure--prefix=/usr/local/gcc--enable-bootstrap--enable-checking=release--enable-languages=c,c++--disable-multilib
make-j$(cat/proc/cpuinfo|grep\'processor\'|wc-l)
makeinstall

echo\'exportPATH=/usr/local/gcc/bin:$PATH\'>/etc/profile.d/gcc.sh
./etc/profile.d/gcc.sh
ln-sv/usr/local/gcc/include//usr/include/gcc
echo\'/usr/local/gcc/lib64\'>/etc/ld.so.conf.d/gcc.conf
echo\'/usr/local/gcc/lib\'>>/etc/ld.so.conf.d/gcc.conf
ldconfig-p|grepgcc#驗證是否導(dǎo)出頭文件

cd/usr/src
yuminstall-yncurses-developenssl-developensslcmakemysql-devel
wget

groupadd-r-g306mysql
useradd-r-g306-u306mysql
mkdir-pv/data/mydata
chown-Rmysql.mysql/data/mydata

tarxfmariadb-10.2.6.tar.gz
cdmariadb-10.2.6
cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\\
-DMYSQL_DATADIR=/data/mydata\\
-DSYSCONFDIR=/etc\\
-DWITH_INNOBASE_STORAGE_ENGINE=1\\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\\
-DWITH_READLINE=1-DWITH_SSL=system\\
-DWITH_ZLIB=system-DWITH_LIBWRAP=0\\
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\\
-DDEFAULT_CHARSET=utf8\\
-DDEFAULT_COLLATION=utf8_general_ci
make-j$(cat/proc/cpuinfo|grep\'processor\'|wc-l)
makeinstall

cmake參數(shù)說明:

#安裝根目錄
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

#數(shù)據(jù)存儲目錄
-DMYSQL_DATADIR=/data/mydata

#UNIXsocket文件
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

#配置文件(my.cnf)目錄
-DSYSCONFDIR=/etc

#默認(rèn)字符集
-DDEFAULT_CHARSET=utf8

#默認(rèn)字符校對
-DDEFAULT_COLLATION=utf8_general_ci

#TCP/IP端口
-DMYSQL_TCP_PORT=3306

#*ARCHIVE引擎支持
-DWITH_ARCHIVE_STORAGE_ENGINE=1

#*ARIA引擎支持
-DWITH_ARIA_STORAGE_ENGINE=1

#*BLACKHOLE引擎支持
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

#*FEDERATEDX引擎支持
-DWITH_FEDERATEDX_STORAGE_ENGINE=1

#*PARTITION引擎支持
-DWITH_PARTITION_STORAGE_ENGINE=1

#*PERFSCHEMA引擎支持
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

#*SPHINX引擎支持
-DWITH_SPHINX_STORAGE_ENGINE=1

#*XTRADB支持
-DWITH_XTRADB_STORAGE_ENGINE=1

#*innoDB引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE=1

#*Myisam引擎支持
-DWITH_MYISAM_STORAGE_ENGINE=1

#readline庫
-DWITH_READLINE=1

#啟用加載本地數(shù)據(jù)
-DENABLED_LOCAL_INFILE=1

#擴展支持編碼(all|utf8,gbk,gb2312|none)
-DWITH_EXTRA_CHARSETS=all

#擴展字符支持
-DEXTRA_CHARSETS=all

#系統(tǒng)傳輸使用SSL加密
-DWITH_SSL=system

#系統(tǒng)傳輸使用zlib壓縮,節(jié)約帶寬
-DWITH_ZLIB=system

#libwrap庫
-DWITH_LIBWRAP=0

#運行用戶
-DMYSQL_USER=mysql

#調(diào)試模式
-DWITH_DEBUG=0

配置MariaDB:

cd/usr/local/mysql/
scripts/mysql_install_db--user=mysql--datadir=/data/mydata/

echo\'exportPATH=/usr/local/mysql/bin:$PATH\'>/etc/profile.d/mysql.sh
./etc/profile.d/mysql.sh
ln-sv/usr/local/mysql/include//usr/local/include/mysql
echo\'/usr/local/mysql/lib\'>/etc/ld.so.conf.d/mysql.conf
ldconfig-v
ldconfig-p|grepmysql
cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
chkconfig--addmysqld
chkconfigmysqldon
cpsupport-files/my-large.cnf/etc/my.cnf
sed-i\'/\\[mysqld\\]/adatadir=/data/mydata\'/etc/my.cnf

servicemysqldstart
mysql-uroot-e\'GRANTallON*.*TOroot@localhostidentifiedbyqwe123!\'

安裝php:詳見18.4.3

18.3.3 測試

php程序執(zhí)行環(huán)境:在/var/www/html目錄下新建一個index.php文件,其內(nèi)容如下:

<?php
phpinfo();
?>

測試php程序與mysql通信:在/var/www/html目錄下新建一個index.php文件,其內(nèi)容如下:

<?php
$conn=mysql_connect(\'HOSTNAME\',\'USERNAMEOFMYSQL\',\'PASSWORDOFMYSQLUSER\');
if($conn)
echo\'ConnectSuccess!\';
else
echo\'ConnectFailed!\';
fi
mysql_close();
?>

18.4 php

18.4.1 php解釋器與MariaDB/mysql交互

php解釋器本身無須與MariaDB交互,只有那些用到數(shù)據(jù)存儲系統(tǒng)的程序才需要與數(shù)據(jù)存儲交互。

常見的數(shù)據(jù)存儲系統(tǒng)有以下這些:

a) 文件系統(tǒng):存儲文件

b) SQL:MariaDB,Oracle,MSSQL,...

c) NoSQL:Redis,MongoDB,hbase,...

NewSQL

18.4.2 php配置文件

php官網(wǎng):www.php.net

php加速器:APC,eAccelerator,Xcache,OPcache

配置文件:/etc/php.ini,/etc/php.d/*.ini

php.ini核心配置選項:http://php.net/manual/zh/ini.core.php

php.ini配置選項列表:http://php.net/manual/zh/ini.list.php

配置文件(php.ini)在php啟動時被讀取。對于服務(wù)器模塊版本的php,僅在web服務(wù)器啟動時讀取一次。對于CGI和CLI版本,每次調(diào)用都會讀取

18.4.3 php編譯安裝

php編譯安裝步驟:

a) 解決依賴關(guān)系

配置好yum源(系統(tǒng)安裝湖及Epel源)后執(zhí)行如下命令:

yum-ygroupinstall\'DesktopPlatformDevelopment\'
yum-yinstallepel-release
yum-yinstallbzip2-devellibmcrypt-devellibxml2-devel

b) 編譯安裝php

cd/usr/src
wgethttp://cn2.php.net/distributions/php-5.6.30.tar.xz
xz-dphp-5.6.30.tar.xz
tarxfphp-5.6.30.tar
cdphp-5.6.30
./configure--prefix=/usr/local/php--with-mysql=/usr/local/mysql--with-openssl--with-mysqli=/usr/local/mysql/bin/mysql_config--enable-mbstring--with-freetype-dir--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--enable-sockets--with-apxs2=/usr/local/httpd/bin/apxs--with-mcrypt--with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d--with-bz2--enable-maintainer-zts--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd--enable-opcache

說明:

這里為了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項

如果使用PHP5.3以上版本,為了鏈接mysql數(shù)據(jù)庫,可以指定mysqlnd,這樣在本機就不需要先安裝mysql或mysql開發(fā)包了

mysqlnd從php5.3開始可用,可以編譯時綁定到它(而不用和具體的mysql客戶端綁定形成依賴),但從php5.4開始它就是默認(rèn)設(shè)置了

./configure--with-mysql=mysqlnd--with-pdo-mysql=mysqlnd--with-mysqli=mysqlnd
make
#maketest
makeinstall
echo\'exportPATH=/usr/local/php/bin:$PATH\'>/etc/profile.d/php.sh
./etc/profile.d/php.sh

c) 為php提供配置文件

cpphp.ini-production/etc/php.ini

d) 編輯apache配置文件httpd.conf使其支持php

添加如下兩行:

AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps

定位至DirectoryIndex index.html,修改為:

DirectoryIndexindex.phpindex.html

而后重啟httpd,或讓其重新載入配置文件即可測試php是否已經(jīng)可以正常使用

e) 安裝xcache,為php加速(php5.5及以下版本)

安裝xcache:

cd/usr/src
wgethttp://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2
tarxfxcache-3.2.0.tar.bz2
cdxcache-3.2.0
/usr/local/php/bin/phpize
./configure--enable-xcache--with-php-config=/usr/local/php/bin/php-config
make&&makeinstall

安裝結(jié)束時,會出現(xiàn)類似如下行:

Installingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-zts-20131226/

編輯php.ini,整合php和xcache:

首先將xcache提供的樣例配置導(dǎo)入php.ini:

catxcache.ini>>/etc/php.ini

說明:xcache.ini文件在xcache的源碼目錄中

接下來編輯/etc/php.ini,找到zend_extension開頭的行,修改為如下行:

zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so

注意:如果php.ini文件中有多條zend_extension指令行,需確保此新增的行排在第一位

編輯/etc/php.ini,修改以下內(nèi)容:

xcache.admin.user=admin
#通過opensslpasswd-1PASSWORD命令生成密碼,然后在http://xcache.lighttpd.net/demo/cacher/mkpassword.php頁面加密密碼
xcache.admin.pass=21232f297a57a5a743894a0e4a801fc3
xcache.mmap_path=/tmp/xcache

創(chuàng)建/tmp/xcache文件并賦權(quán):

touch/tmp/xcache
chmod777/tmp/xcache

重啟httpd:

apachectlrestart

然后在phpinfo頁面查看是否有xcache模塊

f) OPcache(5.5+版本加速)

PHP5.5.0以后版本自帶Opcache加速器,但默認(rèn)情況下未啟用。所以編譯的使用我們想要啟用該PHP加速器就應(yīng)該添加參數(shù) : –enable-opcache 來制定。

對于已經(jīng)編譯安裝了PHP5.5.0以上版本但當(dāng)初又沒有啟用該加速器的用戶可以像PHP添加模塊一樣編譯添加。步驟如下:

cd/usr/src/php-5.6.30/ext/opcache
/usr/local/php/bin/phpize
./configure--with-php-config=/usr/local/php/bin/php-config
make&&makeinstall

最后它會告訴你opcache.so已編譯成功,放在/usr/local/php/lib/php/extensions/no-debug-zts-20131226/目錄下

編輯php.ini文件,配置opcache

vim /etc/php.ini

修改或添加如下代碼并保存退出:

[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=200
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=20000
opcache.revalidate_freq=1
opcache.fast_shutdown=1

然后重啟httpd服務(wù),就可以用php -m命令或在phpinfo界面看到opcache已經(jīng)開啟了

常用的opcache配置介紹:

opcache.enable={0|1}#關(guān)閉或開啟opcache功能,默認(rèn)為0(關(guān)閉)

opcache.enable_cli={0|1}#關(guān)閉或開啟CLI

opcache.memory_consumption=528#opcache可用的內(nèi)存大小,單位為Mb,根據(jù)自身情況而定,決定了總共能夠存儲多少預(yù)編譯的PHP代碼

opcache.interned_strings_buffer=8#zendoptimizer+暫存池中字符串的占內(nèi)存總量,單位為MB,推薦設(shè)為8

opcache.max_accelerated_files=10000#對多緩存文件限制,緩存的文件數(shù)目在200到100000之間,命中率不到100%的話,可以試著提高這個值,推薦設(shè)為4000

opcache.revalidate_freq=1#Opcache會在一定時間內(nèi)去檢查文件的修改時間,這里設(shè)置檢查的時間周期,默認(rèn)為2,單位為秒。推薦設(shè)為60,注意,0是一直檢查而不是關(guān)閉

opcache.fast_shutdown=1#打開快速關(guān)閉,打開這個在PHPRequestShutdown的時候回收內(nèi)存的速度會提高

opcache.max_wasted_percentage=5#內(nèi)存“浪費”達(dá)到此值對應(yīng)的百分比,就會發(fā)起一個重啟調(diào)度。

opcache.use_cwd=0#開啟這條指令,ZendOptimizer+會自動將當(dāng)前工作目錄的名字追加到腳本鍵上,以此消除同名文件間的鍵值命名沖突.關(guān)閉這條指令會提升性能,但是會對已存在的應(yīng)用造成破壞

opcache.validate_timestamps=1#開啟文件時間戳驗證

opcache.revalidate_path=0#允許或禁止在include_path中進(jìn)行文件搜索的優(yōu)化

opcache.save_comments=1#是否保存文件/函數(shù)的注釋。如果apigen、Doctrine、ZF2、PHPUnit需要文件注釋,推薦設(shè)為0

opcache.load_comments=1#是否加載文件/函數(shù)的注釋

opcache.enable_file_override=0#允許覆蓋文件存在(file_exists等)的優(yōu)化特性

opcache.optimization_level=0xffffffff#定義啟動多少個優(yōu)化過程

opcache.inherited_hack=1#啟用此Hack可以暫時性的解決”can’tredeclareclass”錯誤

opcache.dups_fix=0#啟用此Hack可以暫時性的解決”can’tredeclareclass”錯誤

opcache.blacklist_filename=#設(shè)置不緩存的黑名單,不緩存指定目錄下cache_開頭的PHP文件。如/png/www/example.com/public_html/cache/cache_

opcache.max_file_size=0#通過文件大小屏除大文件的緩存.默認(rèn)情況下所有的文件都會被緩存

opcache.consistency_checks=0#每N次請求檢查一次緩存校驗.默認(rèn)值0表示檢查被禁用了。由于計算校驗值有損性能,這個指令應(yīng)當(dāng)緊緊在開發(fā)調(diào)試的時候開啟

opcache.force_restart_timeout=180#從緩存不被訪問后,等待多久后(單位為秒)調(diào)度重啟

opcache.error_log=#錯誤日志文件名.留空表示使用標(biāo)準(zhǔn)錯誤輸出(stderr)

opcache.log_verbosity_level=1#將錯誤信息寫入到服務(wù)器(Apache等)日志

opcache.preferred_memory_model=#內(nèi)存共享的選擇后臺.留空則是讓系統(tǒng)選擇

opcache.protect_memory=0#防止共享內(nèi)存在腳本執(zhí)行期間被意外寫入,僅用于內(nèi)部調(diào)試

g) 啟用服務(wù)器狀態(tài)(編輯httpd.conf)

mod_status模塊可以讓管理員查看服務(wù)器的執(zhí)行狀態(tài),它通過一個HTML頁面展示了當(dāng)前服務(wù)器的統(tǒng)計數(shù)據(jù)。這些數(shù)據(jù)通常包括但不限于:

處于工作狀態(tài)的worker進(jìn)程數(shù)

空閑狀態(tài)的worker進(jìn)程數(shù)

每個worker的狀態(tài),包括此worker已經(jīng)響應(yīng)的請求數(shù),及由此worker發(fā)送的內(nèi)容的字節(jié)數(shù)

當(dāng)前服務(wù)器總共發(fā)送的字節(jié)數(shù)

服務(wù)器自上次啟動或重啟以來至當(dāng)前的時長

平均每秒鐘響應(yīng)的請求數(shù)、平均每秒鐘發(fā)送的字節(jié)數(shù)、平均每個請求所請求內(nèi)容的字節(jié)數(shù)

啟用狀態(tài)頁面的方法很簡單,只需要在主配置文件中添加如下內(nèi)容即可:

<Location/server-status>
SetHandlerserver-status
Allowfromall#httpd-2.2版本使用此條授權(quán)
Requireallgranted#httpd-2.4版本使用此條授權(quán)
#注意,Allow語句與Require語句二選一,不可同時使用
</Location>

需要提醒的是,這里的狀態(tài)信息不應(yīng)該被所有人隨意訪問。因此,應(yīng)該限制僅允許某些特定地址的客戶端查看。比如使用Require ip 172.16.0.0/16來限制僅允許指定網(wǎng)段的主機查看些頁面。

可以用http://ip/server-status來查看狀態(tài)界面

18.4.4 配置以fpm方式工作的php

a) 解決依賴關(guān)系

yum-ygroupinstallXSoftwareDevelopment

若想讓編譯的php支持mcrypt擴展,執(zhí)行以下命令:

yum-yinstalllibmcryptlibmcrypt-develmhashmhash-devel

b) 編譯安裝php

cd/usr/src
wgethttp://cn2.php.net/distributions/php-5.5.38.tar.xz
xz-dphp-5.5.38.tar.xz
tarxfphp-5.5.38.tar
cdphp-5.5.38
./configure--prefix=/usr/local/php5--with-mysql=/usr/local/mysql--with-openssl--with-mysqli=/usr/local/mysql/bin/mysql_config--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
make&&makeinstall

cpphp.ini-production/etc/php.ini

c) 配置php-fpm

為php-fpm提供SysV init腳本,并將其添加至服務(wù)列表:

cpsapi/fpm/init.d.php-fpm/etc/rc.d/init.d/php-fpm
chmod+x/etc/rc.d/init.d/php-fpm
chkconfig--addphp-fpm
chkconfigphp-fpmon

為php-fpm提供配置文件:

cp/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf

編輯php-fpm的配置文件(/usr/local/php/etc/php-fpm.conf):

配置fpm的相關(guān)選項為你所需要的值,并啟用pid文件(如下最后一行):

pm.max_children=50#最多同時提供50個進(jìn)程提供50個并發(fā)服務(wù)
pm.start_servers=5#啟動時啟動5個進(jìn)程
pm.min_spare_servers=2#最小空閑進(jìn)程數(shù)
pm.max_spare_servers=8#空閑進(jìn)程數(shù)
pid=/usr/local/php/var/run/php-fpm.pid

啟動php-fpm:

servicephp-fpmstart

使用如下命令來驗證(如果此命令輸出中有幾個php-fpm進(jìn)程說明啟動成功了):

psaux|grepphp-fpm

默認(rèn)情況下,fpm監(jiān)聽在127.0.0.1的9000端口,也可以使用如下命令驗證其是否已經(jīng)監(jiān)聽在相應(yīng)的套接字:

ss-tanlp|grepphp-fpm

18.4.5 配置httpd-2.4.9

httpd-2.4.9配置:

a) 啟用httpd的相關(guān)模塊

在apache httpd 2.4以后已經(jīng)專門有一個模塊針對FastCGI的實現(xiàn),此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴展,因此,這兩個模塊都要加載,編輯httpd.conf文件,加入以下兩行內(nèi)容:

LoadModuleproxy_modulemodules/mod_proxy.so
LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so

b) 配置虛擬主機支持使用fcgi

在需要使用fcgi的虛擬主機中添加類似如下兩行:

ProxyRequestsOff#關(guān)閉正向代理
ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

如:

ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/var/www/html/idfsoft.com/$1

表示把以.php結(jié)尾的文件請求發(fā)送到php-fpm進(jìn)程,php-fpm至少需要知道運行的目錄和URI

所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數(shù),其它參數(shù)的傳遞已經(jīng)被mod_proxy_fcgi.so進(jìn)行了封裝,不需要手動指定

示例:

<VirtualHost*:80>
DocumentRoot/var/www/html/idfsoft.com
ServerNameidfsoft.com
ServerAliaswww.idfsoft.com
ProxyRequestsOff
ProxyPassMatch^/(.*\\.php)$fcgi://127.0.0.1:9000/var/www/html/idfsoft.com/$1
<Directory/var/www/html/idfsoft.com>
Optionsnone
AllowOverridenone
Requireallgranted
</Directory>
</VirtualHost>

c) 編輯apache的配置文件httpd.conf,讓apache能識別php格式的頁面,并支持php格式的主頁

添加如下兩行:

AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps

定位至DirectoryIndex index.html,修改為:

DirectoryIndexindex.phpindex.html

而后重啟httpd,或讓其重新載入配置文件即可測試php是否已經(jīng)可以正常使用

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

名稱欄目:第十八章lamp架構(gòu)
文章起源:http://www.rwnh.cn/article36/cggosg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、商城網(wǎng)站、網(wǎng)站設(shè)計公司、自適應(yīng)網(wǎng)站、App開發(fā)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
弥渡县| 巫溪县| 成武县| 鹰潭市| 龙南县| 兰州市| 双城市| 五华县| 辽阳县| 宁远县| 简阳市| 黔西| 新津县| 麦盖提县| 东莞市| 阳谷县| 茂名市| 淮阳县| 九江市| 绥中县| 铁岭市| 夏邑县| 黎川县| 张家口市| 合阳县| 西宁市| 长宁区| 福海县| 秀山| 北京市| 广东省| 嘉鱼县| 德安县| 安新县| 河源市| 南阳市| 乌恰县| 丰顺县| 万山特区| 墨竹工卡县| 澄江县|