LAMP配置

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配置相關鏈接:

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等.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章