php有三種工做模式php
對於Apache而言,最簡單的就是模式就是模塊。html
請配置好yum源(能夠是本地系統光盤)後執行以下命令:mysql
# yum -y groupinstall "Desktop Platform Development" web
若是想讓編譯的php支持mcrypt擴展,此處還須要下載以下兩個rpm包並安裝之:sql
注意:php的不少功能都依賴於自己系統上的某些功能的,如php能夠動態生成圖片,但要想生成圖片要依賴於圖片庫。若是當前系統上沒有圖片庫,就無法使用這個功能了。還有php-mbstring用於支持中文或者非一個字節所能表示的字符的那些語言的。數據庫
./congfigure時指定的選項:
# ./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/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
選項簡介:
--prefix:安裝目錄apache
--with-mysql:指定MySQL的位置緩存
--with-openssl:支持openssl功能的服務器
--with-mysqli:這是MySQL的另一種讓php和MySQL交互的接口,這個接口的程序是/usr/local/mysql/bin/mysql_config網絡
--with-freetype-dir:支持freetype-dir功能,freetype-dir是一個實現引用特定字體的,網頁上顯示不一樣字體。
--with-zlib:zlib是互聯網上經常使用的壓縮庫,讓數據文件先壓縮後傳送,節約帶寬。
--with-libxml-dir:衆多系統實現數據交互時都基於XML實現
--enable-sockets:讓php支持套接字通訊
--with-apxs2:實現php編譯成Apache的模塊
--with-mcrypt:支持額外的加密庫
--with-config-file-path:指定php配置文件路徑(主配置文件叫php.ini)
--with-config-file-dir:它的配置文件由兩段組成,如/etc/php.ini,同時還能夠建立/etc/php.d/*.ini文件,即主配置下有不少片斷
--with-bz2:壓縮庫
--enable-maintainer-zts:這一項是否使用取決於Apache的MPM是什麼類型的,如果prefork就不須要這項,若使用event或worker就要使用這項。若php以線程方式工做就須要使用這一項,因此需先判斷使用的MPM類型
使用prefork,所以就不須要--enable-maintainer-zts此項。
改回event:
注意:在./configure過程當中,可能會出現錯誤,如:
報錯解決:
安裝上述四個rpm包便可,如:
說明:
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
php-config、phpize:php的命令行工具
/usr/local/php/etc/:爲php的其它子項目提供的配置文件存放路徑
/usr/local/php/php/man/:php手冊;
php提供php.ini的配置模板:
將php.ini-production複製成/etc/php.ini便可,安裝完成後由於被編譯成模塊因此不用啓動服務,是否啓動服務取決於工做模型,fastcgi須要啓動服務。要想讓其支持fastcgi模型,只需將configure指定的配置選項—with-apxs2=改爲—enable-fpm便可。
添加php配置文件:
複製完成便可!
經過修改Apache的配置文件實現:
讓Apache可以處理以php結尾的頁面文件便可;
.phps表示php源碼;
配置主頁面以.php結尾的頁面:
然後從新啓動httpd,或讓其從新載入配置文件便可測試php是否已經能夠正常使用。
測試php鏈接MySQL:
此外,在Apache的主配置文件最後有Include指令,Include表示把其餘配置文件包含進來的意思,由此能夠在/etc/httpd/extra/…(不是conf而是extra,由於是編譯安裝的,因此默認路徑以下,extra目錄下有不少配置文件)啓用便可生效。
注意:若使用ssl的話光啓用Include /etc/httpd/extra/httpd/httpd-ssl.conf還不夠,由於沒有裝載ssl模塊,還需找到LoadModule把模塊裝載的那一項啓用。
注意:可以跟php5.4結合工做的只有Xcache2.0及其之後的版本
Xcache的安裝比較獨特,由於Xcache是php的模塊。Xcache被稱爲php的擴展,php支持擴展功能,這種擴展說白了就是模塊功能,有些擴展在編譯的時候能夠指定,有些能夠單獨安裝,像Xcache。
那麼既然是php的相關擴展,就須要使用php的命令來首先讓php可以加載這些擴展:
幾乎全部php的擴展在編譯以前都必須對其執行phpize這個命令。
查看幫助文檔:
執行phpize命令:
加載擴展,而且讓擴展自己可以識別php,就能夠執行配置了。
php-config:可以獲取php配置信息和編譯時的選項信息,那Xcache就必須根據這種功能來獲取php在安裝的時候到底啓用了哪些功能。
查看選項信息:
--prefix不用指定,由於Xcache會默認安裝到php的擴展路徑下 --enable-xcache:啓用Xcache功能 --with-php-config:指定php-config路徑,由於php-config不在默認路徑下
安裝結束時,會出現相似以下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
在Xcache編譯安裝目錄下,可以找到Xcache提供的樣例性的配置文件,叫xcache.ini,要想php可以支持xcache功能,意味着把Xcache的配置信息必需要提供的php裏邊去,因此能夠把這個內容追加到php.ini中,或者直接複製這個文件到php.d目錄下便可。
首先將xcache提供的樣例配置導入php.ini:
說明:xcache.ini文件在xcache的源碼目錄中。
接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改成以下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:若是php.ini文件中有多條zend_extension指令行,要確保此新增的行排在第一位。
xcache.shm_schema:使用哪一種方式使用共享內存來完成在各php進程間共享模塊。
shm:shared memory,共享內存
mmmp:內存映射,意味着能夠把一段內存讓多個進程同時訪問的一種機制
xcache_size:用於緩存opcode的代碼空間大小,根據本身的須要修改,爲0意味着禁用xcache功能;
xcache.count:設置CPU個數 xcache_slots:在緩存當中有幾個槽位來緩存多少個opcode的,每個槽位有多大
xcache_ttl:過時時間,0表示永不過時,由xcache自我進行管理
xcache.gc_interval:(gc:garbage collection,垃圾回收器)表示垃圾回收期多長時間工做一次,0表示不作任何掃描
xcache_cacher:緩存功能是否啓用
xcache_optimizer:xcache本身的優化器是否啓用(不是爲php提供的優化器,而是它本身的),無需啓用
它的模塊須要被Web加載,所以要讓其生效須要重啓服務器。
mod_status模塊可讓管理員查看服務器的執行狀態,它經過一個HTML頁面展現了當前服務器的統計數據。這些數據一般包括但不限於:
啓用狀態頁面的方法很簡單,只須要在主配置文件中添加以下內容便可:
<Location /server-status> SetHandler server-status Require all granted </Location>
須要提醒的是,這裏的狀態信息不該該被全部人隨意訪問,所以,應該限制僅容許某些特定地址的客戶端查看。好比使用Require ip 172.16.0.0/16來限制僅容許指定網段的主機查看此頁面。
須要先註釋中心主機:
啓用以下配置:(虛擬主機單獨配置在以下文件中,還有樣例)
建議啓用mod_log_config,所以啓用,以下:
啓用用戶能夠訪問頁面文件:
在2.4中須要明肯定義(受權)才能訪問:
裝好Apache後,自動就有一個壓力測試工具:
ab:Apache benchmark,Apache性能壓力測試(評估)工具
對咱們而言,只是簡單的對本機作測試,能夠測試遠程主機,也能夠本身測試本身,在測本身時不須要考慮網絡帶寬的狀況,若是遠程測試,還需考慮交換機、網線、網卡等各類吞吐能力;
ab經常使用選項:
-c #:(一次發起的請求數稱爲併發數)用於指定併發量(發起一次請求的請求數) -n #:指定一共請求多少個(請求的總數),要大於併發數(-c指定的數) -r:忽略錯誤
測試:
注意:
模擬較爲真實的場景:提供1M的主頁面進行測試
在測試過程當中時,使用ps aux | grep httpd命令查看。
須要注意的是:event模型下不是一個請求開一個進程!
生成一個大文件測試:
測試動態內容:
安裝phpMyAdmin站點:
提供配置文件:
生成隨機數做爲密鑰:
爲MySQL設置密碼:
須要注意的是,在測試時,正常來講,應該在ab命令執行的同時手動打開測試的頁面驗證是否能正常打開,這樣才更準確。
經常使用的壓力測試工具:
注意:任什麼時候候配置好Web服務器部署好應用程序後,都應該使用壓力測試工具測試服務器性能到底如何。如此才能評估服務器上線後可否知足需求。
啓用模塊:
啓用Include:
須要創建CA,CA自簽證書,客戶端發起請求,利用本身的私鑰生成證書籤署請求,生成請求時會從私鑰中提取公鑰。
注意:SSL一個IP地址只能創建一個主機,由於SSL會話是基於IP地址實現的。
其它配置文件說明:
mpm.conf:定義每一種不一樣的MPM的工做參數,在rpm包安裝的方式中是由主配置文件的方式提供的,因此這一項默認應該啓用起來,尤爲是在編譯的時候已將編譯它支持多種不一樣的MPM了。因此這一個應該啓用起來,而且根據須要分別定義prefork、worker、event模型。
能夠把MaxRequestWorkers修改多方進行壓力測試,測試時觀察服務器CPU工做性能、CPU隊列長度、使用vmstat觀察上下文切換的次數、軟中斷的次數。
小測試: