建站服務器
18.1 lamp簡介
創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站制作、成都做網站、外貿營銷網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的梓潼網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!有了前面學習的知識的鋪墊,今天可以來學習下第一個常用的web架構了。
所謂lamp,其實就是由Linux+Apache+mysql/MariaDB+Php/Perl/Python的一組動態網站或者服務器的開源軟件,除Linux外其它各部件本身都是各自獨立的程序,但是因為經常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。
LAMP指的是Linux(操作系統)、Apache(HTTP服務器)、Mysql(也指MariaDB,數據庫軟件)和PHP(有時也是指Perl或Python)的第一個字母,一般用來建立web應用平臺
18.2 Web服務器工作流程
在說lamp架構平臺的搭建前,我們先來了解下什么是CGI,什么是FastCGI,什么是......
web服務器的資源分為兩種,靜態資源和動態資源。
所謂靜態資源就是指靜態內容,客戶端從服務器獲得的資源的表現形式與原文件相同。可以簡單的理解為就是直接存儲于文件系統中的資源
動態資源則通常是程序文件,需要在服務器執行之后,將執行的結果返回給客戶端。
那么web服務器如何執行程序并將結果返回給客戶端呢?下面通過一張圖來說明一下web服務器如何處理客戶端的請求
如上圖所示
階段①顯示的是httpd服務器(即apache)和php服務器通過FastCGI協議進行通信,且php作為獨立的服務進程運行
階段②顯示的是php程序和MYSQL數據庫間通過mysql協議進行通信。php與mysql本沒有什么聯系,但是由Php語言寫成的程序可以與mysql進行數據交互。同理perl和python寫的程序也可以與mysql數據庫進行交互
18.2.1 cgi與fastcgi
上圖階段①中提到了FastCGI,下面我們來了解下CGI與FastCGI。
CGI(Common Gateway Interface,通用網關接口),CGI是外部應用程序(CGI程序)與WEB服務器之間的接口標準,是在CGI程序和Web服務器之間傳遞信息的過程。CGI規范允許Web服務器執行外部程序,并將它們的輸出發送給Web瀏覽器,CGI將web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。
FastCGI(Fast Common Gateway Interface)是CGI的改良版,CGI是通過啟用一個解釋器進程來處理每個請求,耗時且耗資源,而FastCGI則是通過master-worker形式來處理每個請求,即啟動一個master主進程,然后根據配置啟動幾個worker進程,當請求進來時,master會從worker進程中選擇一個去處理請求,這樣就避免了重復的生成和殺死進程帶來的頻繁cpu上下文切換而導致耗時
18.2.2 httpd與php結合的方式
httpd與php結合的方式有以下三種:
a) modules:php將以httpd的擴展模塊形式存在,需要加載動態資源時,httpd可以直接通過php模塊來加工資源并返回給客戶端
httpd prefork:libphp5.so(多進程模型的php)
httpd event or worker:libphp5-zts.so(線程模型的php)
b) CGI:httpd需要加載動態資源時,通過CGI與php解釋器聯系,獲得php執行的結果,此時httpd負責與php連接的建立和斷開等
c) FastCGI:利用php-fpm機制,啟動為服務進程,php自行運行為一個服務,https通過socket與php通信
較于CGI方式,FastCGI更為常用,很少有人使用CGI方式來加載動態資源
18.2.3 web工作流程
下面來通過上面的圖說明一下web的工作流程
客戶端通過http協議請求web服務器資源,web資源收到請求后判斷客戶端請求的資源是靜態資源或是動態資源,若是靜態資源則直接從本地文件系統取之返回給客戶端。否則若為動態資源則通過FastCGI協議與php服務器聯系,通過CGI程序的master進程調度worker進程來執行程序以獲得客戶端請求的動態資源,并將執行的結果通過FastCGI協議返回給httpd服務器,httpd服務器收到php的執行結果后將其封裝為http響應報文響應給客戶端。在執行程序獲取動態資源時若需要獲得數據庫中的資源時,由Php服務器通過mysql協議與MySQL/MariaDB服務器交互,取之而后返回給httpd,httpd將從php服務器收到的執行結果封裝成http響應報文響應給客戶端。
18.3 lamp平臺構建
18.3.1 通過yum安裝方式構建lamp平臺
CentOS7下構建lamp:
要安裝的程序包:httpd,php,php-mysql,mariadb-server
注意:php要求httpd使用prefork MPM
yum-yinstallhttpdphpphp-mysqlmariadb-server systemctlstarthttpd.service systemctlstartmariadb.service
CentOS6下構建lamp:
要安裝的程序包:httpd,php,php-mysql,mysql-server
yum-yinstallhttpdphpphp-mysqlmysql-server servicehttpdstart servicemysqldstart
18.3.2 編譯安裝lamp
http對fastcgi協議的支持:
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#驗證是否導出頭文件 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參數說明:
#安裝根目錄 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #數據存儲目錄 -DMYSQL_DATADIR=/data/mydata #UNIXsocket文件 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock #配置文件(my.cnf)目錄 -DSYSCONFDIR=/etc #默認字符集 -DDEFAULT_CHARSET=utf8 #默認字符校對 -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 #啟用加載本地數據 -DENABLED_LOCAL_INFILE=1 #擴展支持編碼(all|utf8,gbk,gb2312|none) -DWITH_EXTRA_CHARSETS=all #擴展字符支持 -DEXTRA_CHARSETS=all #系統傳輸使用SSL加密 -DWITH_SSL=system #系統傳輸使用zlib壓縮,節約帶寬 -DWITH_ZLIB=system #libwrap庫 -DWITH_LIBWRAP=0 #運行用戶 -DMYSQL_USER=mysql #調試模式 -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程序執行環境:在/var/www/html目錄下新建一個index.php文件,其內容如下:
<?php phpinfo(); ?>
測試php程序與mysql通信:在/var/www/html目錄下新建一個index.php文件,其內容如下:
<?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交互,只有那些用到數據存儲系統的程序才需要與數據存儲交互。
常見的數據存儲系統有以下這些:
a) 文件系統:存儲文件
b) SQL:MariaDB,Oracle,MSSQL,...
c) NoSQL:Redis,MongoDB,hbase,...
NewSQL
18.4.2 php配置文件
php官網: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啟動時被讀取。對于服務器模塊版本的php,僅在web服務器啟動時讀取一次。對于CGI和CLI版本,每次調用都會讀取
18.4.3 php編譯安裝
php編譯安裝步驟:
a) 解決依賴關系
配置好yum源(系統安裝湖及Epel源)后執行如下命令:
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數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝mysql或mysql開發包了
mysqlnd從php5.3開始可用,可以編譯時綁定到它(而不用和具體的mysql客戶端綁定形成依賴),但從php5.4開始它就是默認設置了
./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是否已經可以正常使用
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
安裝結束時,會出現類似如下行:
Installingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-zts-20131226/
編輯php.ini,整合php和xcache:
首先將xcache提供的樣例配置導入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,修改以下內容:
xcache.admin.user=admin #通過opensslpasswd-1PASSWORD命令生成密碼,然后在http://xcache.lighttpd.net/demo/cacher/mkpassword.php頁面加密密碼 xcache.admin.pass=21232f297a57a5a743894a0e4a801fc3 xcache.mmap_path=/tmp/xcache
創建/tmp/xcache文件并賦權:
touch/tmp/xcache chmod777/tmp/xcache
重啟httpd:
apachectlrestart
然后在phpinfo頁面查看是否有xcache模塊
f) OPcache(5.5+版本加速)
PHP5.5.0以后版本自帶Opcache加速器,但默認情況下未啟用。所以編譯的使用我們想要啟用該PHP加速器就應該添加參數 : –enable-opcache 來制定。
對于已經編譯安裝了PHP5.5.0以上版本但當初又沒有啟用該加速器的用戶可以像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服務,就可以用php -m命令或在phpinfo界面看到opcache已經開啟了
常用的opcache配置介紹:
opcache.enable={0|1}#關閉或開啟opcache功能,默認為0(關閉) opcache.enable_cli={0|1}#關閉或開啟CLI opcache.memory_consumption=528#opcache可用的內存大小,單位為Mb,根據自身情況而定,決定了總共能夠存儲多少預編譯的PHP代碼 opcache.interned_strings_buffer=8#zendoptimizer+暫存池中字符串的占內存總量,單位為MB,推薦設為8 opcache.max_accelerated_files=10000#對多緩存文件限制,緩存的文件數目在200到100000之間,命中率不到100%的話,可以試著提高這個值,推薦設為4000 opcache.revalidate_freq=1#Opcache會在一定時間內去檢查文件的修改時間,這里設置檢查的時間周期,默認為2,單位為秒。推薦設為60,注意,0是一直檢查而不是關閉 opcache.fast_shutdown=1#打開快速關閉,打開這個在PHPRequestShutdown的時候回收內存的速度會提高 opcache.max_wasted_percentage=5#內存“浪費”達到此值對應的百分比,就會發起一個重啟調度。 opcache.use_cwd=0#開啟這條指令,ZendOptimizer+會自動將當前工作目錄的名字追加到腳本鍵上,以此消除同名文件間的鍵值命名沖突.關閉這條指令會提升性能,但是會對已存在的應用造成破壞 opcache.validate_timestamps=1#開啟文件時間戳驗證 opcache.revalidate_path=0#允許或禁止在include_path中進行文件搜索的優化 opcache.save_comments=1#是否保存文件/函數的注釋。如果apigen、Doctrine、ZF2、PHPUnit需要文件注釋,推薦設為0 opcache.load_comments=1#是否加載文件/函數的注釋 opcache.enable_file_override=0#允許覆蓋文件存在(file_exists等)的優化特性 opcache.optimization_level=0xffffffff#定義啟動多少個優化過程 opcache.inherited_hack=1#啟用此Hack可以暫時性的解決”can’tredeclareclass”錯誤 opcache.dups_fix=0#啟用此Hack可以暫時性的解決”can’tredeclareclass”錯誤 opcache.blacklist_filename=#設置不緩存的黑名單,不緩存指定目錄下cache_開頭的PHP文件。如/png/www/example.com/public_html/cache/cache_ opcache.max_file_size=0#通過文件大小屏除大文件的緩存.默認情況下所有的文件都會被緩存 opcache.consistency_checks=0#每N次請求檢查一次緩存校驗.默認值0表示檢查被禁用了。由于計算校驗值有損性能,這個指令應當緊緊在開發調試的時候開啟 opcache.force_restart_timeout=180#從緩存不被訪問后,等待多久后(單位為秒)調度重啟 opcache.error_log=#錯誤日志文件名.留空表示使用標準錯誤輸出(stderr) opcache.log_verbosity_level=1#將錯誤信息寫入到服務器(Apache等)日志 opcache.preferred_memory_model=#內存共享的選擇后臺.留空則是讓系統選擇 opcache.protect_memory=0#防止共享內存在腳本執行期間被意外寫入,僅用于內部調試
g) 啟用服務器狀態(編輯httpd.conf)
mod_status模塊可以讓管理員查看服務器的執行狀態,它通過一個HTML頁面展示了當前服務器的統計數據。這些數據通常包括但不限于:
處于工作狀態的worker進程數
空閑狀態的worker進程數
每個worker的狀態,包括此worker已經響應的請求數,及由此worker發送的內容的字節數
當前服務器總共發送的字節數
服務器自上次啟動或重啟以來至當前的時長
平均每秒鐘響應的請求數、平均每秒鐘發送的字節數、平均每個請求所請求內容的字節數
啟用狀態頁面的方法很簡單,只需要在主配置文件中添加如下內容即可:
<Location/server-status> SetHandlerserver-status Allowfromall#httpd-2.2版本使用此條授權 Requireallgranted#httpd-2.4版本使用此條授權 #注意,Allow語句與Require語句二選一,不可同時使用 </Location>
需要提醒的是,這里的狀態信息不應該被所有人隨意訪問。因此,應該限制僅允許某些特定地址的客戶端查看。比如使用Require ip 172.16.0.0/16來限制僅允許指定網段的主機查看些頁面。
可以用http://ip/server-status來查看狀態界面
18.4.4 配置以fpm方式工作的php
a) 解決依賴關系
yum-ygroupinstallXSoftwareDevelopment
若想讓編譯的php支持mcrypt擴展,執行以下命令:
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腳本,并將其添加至服務列表:
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的相關選項為你所需要的值,并啟用pid文件(如下最后一行):
pm.max_children=50#最多同時提供50個進程提供50個并發服務 pm.start_servers=5#啟動時啟動5個進程 pm.min_spare_servers=2#最小空閑進程數 pm.max_spare_servers=8#空閑進程數 pid=/usr/local/php/var/run/php-fpm.pid
啟動php-fpm:
servicephp-fpmstart
使用如下命令來驗證(如果此命令輸出中有幾個php-fpm進程說明啟動成功了):
psaux|grepphp-fpm
默認情況下,fpm監聽在127.0.0.1的9000端口,也可以使用如下命令驗證其是否已經監聽在相應的套接字:
ss-tanlp|grepphp-fpm
18.4.5 配置httpd-2.4.9
httpd-2.4.9配置:
a) 啟用httpd的相關模塊
在apache httpd 2.4以后已經專門有一個模塊針對FastCGI的實現,此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴展,因此,這兩個模塊都要加載,編輯httpd.conf文件,加入以下兩行內容:
LoadModuleproxy_modulemodules/mod_proxy.so LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so
b) 配置虛擬主機支持使用fcgi
在需要使用fcgi的虛擬主機中添加類似如下兩行:
ProxyRequestsOff#關閉正向代理 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結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI
所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數,其它參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定
示例:
<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是否已經可以正常使用
注意:Apache httpd 2.4以前的版本中,要么把PHP作為apache的模塊運行,要么添加一個第三方模塊支持PHP-FPM實現
名稱欄目:第十八章lamp架構
文章起源:http://m.newbst.com/article36/cggosg.html
成都網站建設公司_創新互聯,為您提供服務器托管、商城網站、網站設計公司、自適應網站、App開發、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯