LAMP配置
##1. Apache常用配置
### 配置文件內容
#apache服務根目錄
ServerRoot "/opt/apache"
#服務管理員
ServerAdmin [email protected]
#監聽端口
Listen 80
#默認首頁
DirectoryIndex index.php
#加載php模塊
LoadModule php5_module modules/libphp5.so
#解析php
AddType application/x-httpd-php .php
DocumentRoot "/opt/apache/htdocs" #WEB文件根目錄
<Directory "/opt/apache/htdocs">
# 官方文檔鏈接 http://httpd.apache.org/docs/2.2/mod/core.html
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all #允許所有請求
</Directory>
AllowOverride參數詳解
- none 不允許.htaccess使用任何指令
- AuthConfig 允許使用所有的權限指令,包括 AuthDBMGroupFile AuthDBMUserFile
AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require - FileInfo 允許使用文件控制類型的指令。包括 AddEncoding AddLanguage AddType
DEfaultType ErrorDocument LanguagePriority - Indexes 允許使用目錄控制類型的指令。包括 AddDescription AddIcon AddIconByEncoding
AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName
IndexIgnore IndexOptions ReadmeName - Limit 允許使用權限控制指令。包括Allow Deny和Order
- Options 允許使用控制目錄特徵的指令,包括Options 和XBitHack
Options參數詳解
- All 表示除MultiViews之外的所有特性。這也是Options指令的默認設置。
- None 表示不啓用任何的服務器特性。
- FollowSymLinks 服務器允許在此目錄中使用符號連接。如果該配置選項位於配置段中,將會被忽略。
- Indexes 如果輸入的網址對應服務器上的一個文件目錄,而此目錄中又沒有DirectoryIndex指令
- MultiViews 允許使用mod_negotiation模塊提供內容協商的”多重視圖”。如果客戶端請求的路徑可能對應多種類型的文件,那麼服務器將根據客戶端請求的具體情況自動選擇一個最匹配客戶端要求的文件。
- SymLinksIfOwnerMatch 服務器僅在符號連接與目標文件或目錄的所有者具有相同的用戶ID時才使用它。只有當符號連接和符號連接指向的目標文件或目錄的所有者是同一用戶時,纔會使用符號連接。
- ExecCGI 允許使用mod_cgi模塊執行CGI腳本。
- Includes 允許使用mod_include模塊提供的服務器端包含功能
- IncludesNOEXEC 允許服務器端包含,但禁用”#exec cmd”和”#exec
cgi”。但仍可以從ScriptAlias目錄使用”#include virtual”虛擬CGI腳本。
日誌配置參數
ErrorLog "logs/error_log"
LogLevel warn #錯誤日誌記錄等級
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定義日誌 名爲common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common #日誌路徑 使用名爲common的自定義格式
</IfModule>
LogLevel記錄日誌等級
- error 錯誤情況
- warn 警告情況
- info 普通信息
- debug 出錯級別信息
日誌格式
- %h - 客戶端的ip地址或主機名
- %l - The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 “-” 表示此處信息無效
- %u - 由HTTP認證系統得到的訪問該網頁的客戶名。有認證時纔有效,輸出中的符號 “-” 表示此處信息無效
- %t - 服務器完成對請求的處理時的時間
- “%r” - 引號中是客戶發出的包含了許多有用信息的請求內容
- %>s - 這個是服務器返回給客戶端的狀態碼
- %b - 最後這項是返回給客戶端的不包括響應頭的字節數
- “%{Referer}i” - 此項指明瞭該請求是從被哪個網頁提交過來的
- “%{User-Agent}i” - 此項是客戶瀏覽器提供的瀏覽器識別信息
實際訪問日誌
192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25
虛擬主機參數
基於域名的虛擬主機
<VirtualHost *:80>
DocumentRoot /web1
ServerName web1.com
ErrorLog /app/apache/logs/error_log
CustomLog /app/apache/logs/access_log combined
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>
基於IP的虛擬主機
<VirtualHost 210.20.30.40>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>
<VirtualHost 210.20.30.50>
DocumentRoot web2
ServerName web2.com
</VirtualHost>
基於端口的虛擬主機
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
<VirtualHost 172.20.30.40:80>
DocumentRoot /web1
ServerName web1.com
</VirtualHost>
<VirtualHost 172.20.30.40:8080>
DocumentRoot /web2
ServerName web2.com
</VirtualHost>
2. PHP常用配置
php.ini配置文件詳解,前面介紹過的參數不再複述。
###常規配置
engine = On
short_open_tag = Off #tags識別
asp_tags = Off #asp tags識別
precision = 14 #浮點類型數顯示時的有效位數
output_buffering = 4096 #輸出緩存允許你在輸出正文內容之後發送 header
implicit_flush = Off #告訴輸出層在每個輸出塊之後自動刷新自身數據
disable_functions = #關閉特定函數
display_errors = Off #顯示錯誤信息
log_errors = On #在日誌文件裏記錄錯誤
request_order = "GP" #GET POST
register_argc_argv = On #是否聲明 argv和argc 變量
post_max_size = 8M #最大POST大小
file_uploads = On #是否允許HTTP方式文件上載
upload_tmp_dir = #用於HTTP上載的文件的臨時目錄
upload_max_filesize = 2M #上載文件的最大大小
max_file_uploads = 20 #每次最大上傳文件個數
allow_url_fopen = On #是否允許把URLs當作http:.. 或把文件當作ftp:...
default_socket_timeout = 60 #默認socker超時時間
#MySQL相關
mysql.allow_persistent = On #允許持久連接
mysql.cache_size = 2000 #緩存大小
mysql.max_persistent = -1 #持久連接的最大數目 -1不限制
mysql.max_links = -1 #最大鏈接
mysql.connect_timeout = 60 #連接超時時間
#session相關
session.save_handler = files #用於保存/取回數據的控制方式
session.use_cookies = 1 #是否使用cookies
session.name = PHPSESSID #設置cookies名
session.use_only_cookies = 1 #強制SESSION ID必須以COOKIE傳遞
session.auto_start = 0 #在請求啓動時初始化session
session.cookie_lifetime = 0 #cookies保持時間
#session垃圾回收參數
session.gc_probability = 1 #按百分比整理
session.gc_divisor = 1000 #每次請求時有1/1000的機會啓動"垃圾回收"進程
#Session ID傳遞參數
session.use_trans_sid = 0 #使用URL的方式傳遞session id
session.hash_function = 0 #生成SID MD5算法
session.hash_bits_per_character = 5 #指定在SID字符串中的每個字符內保存多少bit
PHP配置相關鏈接:
- PHP中文手冊 http://php.net/manual/zh/
- 完整php.ini 參數詳解 http://php.net/manual/zh/ini.php
3. LAMP常用調優方法
LAMP環境下的調優,以下所有參數均來自於網絡,請根據實際環境進行調整。
基於穩定的perfork工作模式,調整apache主配置文件以下參數。
StartServers 50 #預創建50個進程
MinSpareServers 15 #保持最小空閒進程
MaxSpareServers 30 #保持最大空閒進程
MaxClients 225 #最大進程數
MaxRequestsPerChild 4000 #用來控制每個進程在處理了多少次請求之後自動銷燬
請使用ps aux 查看進程佔用內存數,以此調整實際環境中的參數,防止此消耗所有的資源。
php.ini常用配置參數
max_execution_time 30 #一個腳本可使用多少 CPU 秒
max_input_time 60 #一個腳本等待輸入數據的時間有多長(秒)
memory_limit 32M #在被取消之前,一個腳本可使用多少內存(字節)
output_buffering 4096 #數據發送給客戶機之前,有多少數據(字節)需要緩存
系統級的調優包括且不限於以下內容
- 解除ulimit限制
- I/O優化
- 內核參數優化 TCP等.