• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • [轉] Apache安裝筆記 很經典

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    [轉] Apache安裝筆記 很經典 [轉] Apache安裝筆記 很經典 Apache安裝筆記 發表: ldconfig 時間: 2002/10/11 14:40:06 版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者信息 從簡化安裝== 性能 調優==方便維護的角度,討論WEB服務的規劃==HTTPD安裝/
    [轉] Apache安裝筆記 很經典

    [轉] Apache安裝筆記 很經典

    Apache安裝筆記
    發表: ldconfig
    時間: 2002/10/11 14:40:06


    版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者信息



    從簡化安裝==>性能調優==>方便維護的角度,討論WEB服務的規劃==>HTTPD安裝/應用模塊配置==>升級/維護等過程。

    摘要:

    WEB應用容量規劃:根據硬件配置和WEB應用的特點進行WEB服務的規劃及一些簡單的估算公式;
    APACHE安裝過程:apache的通用的簡化安裝選項,方便以后的應用的模塊化配置;
    修改 HARD_SERVER_LIMIT:
    vi /path/to/apache_src/src/include/httpd.h
    #define HARD_SERVER_LIMIT 2560 <===將原來的 HARD_SERVER_LIMIT 256
    后面加個“0”
    apache編譯:
    /path/to/apache_src/configure --prefix=/another_driver/apache --enable-shared=max
    --enable-module=most
    可選應用模塊/工具的安裝:php resin mod_gzip mod_expire及各個模塊之間的配合;

    PHP安裝:
    /path/to/php_src/configure
    --with-apxs=/path/to/apache/bin/apxs --with-other-modules-you-need

    mod_resin安裝:
    /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs

    Mod_gzip安裝:
    /path/to/apache/bin/apxs -i -a -c mod_gzip.c

    工具:cronolog安裝:http://www.cronolog.org
    升級/維護:看看通用和模塊化的安裝過程如何簡化了日常的升級/維護工作;
    按照以上的方法:系統管理員和應用管理員的職責可以清楚的分開,互相獨立。
    系統安裝:系統管理員的職責就是安裝系統=>安裝好一臺可以適應任何情況的APACHE,然后COLON,
    應用安裝:由應用管理員負責具體應用所需要的模塊并設置HTTPD。
    系統升級:系統管理員:升級系統/升級APACHE
    應用升級:系統管理員:升級應用模塊
    具體的說明:

    WEB應用的容量規劃

    APACHE主要是一個內存消耗型的服務應用,我個人總結的經驗公式:
    apache_max_process_with_good_perfermance < (total_hardware_memory /
    apache_memory_per_process ) * 2

    apache_max_process = apache_max_process_with_good_perfermance * 1.5



    為什么會有一個apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低負載下系統可以使用更多的內存用于文件系統的緩存,從而進一步提高單個請求的響應速度。在高負載下,系統的單個請求響應速度會慢不少,而超過apache_max_process,系統會因為開始使用硬盤做虛擬內存交換空間而導致系統崩潰。此外,同樣的服務:2G內存的機器的apache_max_process一般只設置到1G內存的1.7倍,因為APACHE本身會因為管理更多的進程而產生性能下降。

    例子1:
    一個apache + mod_php的服務器:一個apache進程一般需要4M內存

    因此在一個1G內存的機器上:apache_max_process_with_good_perfermance
    < (1g / 4m) * 2 = 500

    apache_max_process = 500 * 1.5 = 750

    所以規劃你的應用讓服務盡量跑在500個APACHE以下,并設置APACHE的軟上限在800個。

    例子2:
    一個apache + mod_resin的服務器: 一個apache進程一般需要2M內存

    在一個2G內存的機器上: apache_max_process_with_good_perfermance <
    (2g / 2m ) * 2 = 2000

    因此:apache_max_process = 2000 * 1.5 = 3000



    以上估算都是按小文件服務估算的(一個請求一般大小在20k以下)。對于文件下載類型站點,可能還會受其他因素:比如帶寬等的影響。



    APACHE安裝過程

    服務器個數的硬上限HARD_SERVER_LIMIT的修改:
    在FREEBSD和LINUXUNIX操作系統下APACHE缺省的最大進程數是256個,需要修改apache_1.3.xx/src/include/httpd.h
    #ifndef HARD_SERVER_LIMIT

    #ifdef WIN32

    #define HARD_SERVER_LIMIT 1024

    #elif defined(NETWARE)

    #define HARD_SERVER_LIMIT 2048

    #else
    #define HARD_SERVER_LIMIT 2560  <===將原來的HARD_SERVER_LIMIT 256
    后面加個“0”
    #endif
    #endif

    解釋:
    APACHE缺省的最大用戶數是256個:這個配置對于服務器內存還是256M左右的時代是一個非常好的缺省設置,但隨著內存成本的急劇下降,現在大型站點的服務器內存配置一般比當時要高一個數量級不止。所以256個進程的硬限制對于一臺1G內存的機器來說是太浪費了,而且APACHE的軟上限max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服務器內存大于256M,都應該調高APACHE的HARD_SERVER_LIMIT。根據個人的經驗:2560已經可以滿足大部分小于2G內存的服務器的容量規劃了(APACHE的軟上限的規劃請看后面)。



    APACHE的編譯:通用的編譯選項能使安裝過程標準化
    ./configure --prefix=/another_driver/apache/ --enable-shared=max
    --enable-module=most

    解釋:
    --prefix=/another_driver/apache/:
    一個系統使用壽命最低的一般就是硬盤,因此:將服務數據和系統完全分開,不僅能提高了數據的訪問速度,更重要的,大大方便系統升級,備份和恢復。

    --shared-module=max:使用動態加載方式會帶來5%的性能下降,但和帶來的好處相比更本不算什么:比如模塊升級方便,系統升級風險降低,安裝過程標準化

    --enable-module=most:用most可以將一些不常用的module編譯進來,比如后面講到的mod_expire是就不在apache的缺省常用模塊中

    如果不想build so, 也可以這樣:

    ./configure \

    "--with-layout=Apache" \

    "--prefix=/path/to/apache" \

    "--disable-module=aclearcase/" target="_blank" >ccess" \

    "--disable-module=actions" \

    "--disable-module=autoindex" \

    "--disable-module=env" \

    "--disable-module=imap" \

    "--disable-module=negotiation" \

    "--disable-module=setenvif" \

    "--disable-module=status" \

    "--disable-module=userdir" \

    "--disable-module=cgi" \

    "--disable-module=include" \

    "--disable-module=auth" \

    "--disable-module=asis"

    但結果會發現,這樣編譯對服務性能只能有微小的提高(5%左右),但卻失去了以后系統升級和模塊升級的靈活性,無論是模塊還是APACHE本身升級都必須把所有SOURCE加在一起重新編譯。

    apache的缺省配置文件一般比較大:我們可以使用去掉注釋的方法精簡一下:然后再進入具體的培植過程能讓你更快的定制出你所需要的。
    grep -v "#" httpd.conf.default >httpd.conf



    需要修改的通用項目有以下幾個:

    #服務端口,缺省是8080,建議將整個APACHE配置調整好后再將服務端口改到正式服務的端口
    Port 8080 => 80



    #服務器名:缺省沒有
    ServerName name.example.com


    #最大服務進程數:根據服務容量預測設置
    MaxClients 256 => 800



    #缺省啟動服務后的服務進程數:等服務比較平穩后,按平均負載下的httpd個數設置就可以
    StartServers 5 => 200



    不要修改:
    以前有建議說蹀改:
    MinSpareServers 5 => 100

    MaxSpareServers 10 => 200



    但從我的經驗看來:缺省值已經是非常優化的了,而且讓APACHE自己調整進程個數還是比較好的。

    特別修改:
    在solaris或一些比較容易出現內存泄露的應用上:
    MaxRequestsPerChild 0 =>3000



    應用模塊和工具的安裝配置:

    由于使用動態加載的模式,所以可以方便的通過調整配置來定制APACHE:不常用模塊全部清除

    一般說來,可以不需要的模塊包括:
    #LoadModule env_module libexec/mod_env.so

    #LoadModule negotiation_module libexec/mod_negotiation.so

    #LoadModule status_module libexec/mod_status.so

    #server side include已經過時了

    #LoadModule includes_module libexec/mod_include.so

    #不需要將沒有缺省index文件的目錄下所有文件列出
    #LoadModule autoindex_module libexec/mod_autoindex.so

    #盡量不使用CGI:一直是APACHE安全問題最多的地方
    #LoadModule cgi_module libexec/mod_cgi.so

    #LoadModule asis_module libexec/mod_asis.so

    #LoadModule imap_module libexec/mod_imap.so

    #LoadModule action_module libexec/mod_actions.so

    #不使用安全校驗可以大大提高訪問速度
    #LoadModule access_module libexec/mod_access.so

    #LoadModule auth_module libexec/mod_auth.so

    #LoadModule setenvif_module libexec/mod_setenvif.so



    最好保留的有:
    #用于定制log格式
    LoadModule config_log_module libexec/mod_log_config.so

    #用于增加文件應用的關聯
    LoadModule mime_module libexec/mod_mime.so

    #用于缺省index文件:index.php等
    LoadModule dir_module libexec/mod_dir.so



    可用可不用的有:
    #比如:需要在~/username/下調試php可以將
    LoadModule userdir_module libexec/mod_userdir.so

    #比如:需要將以前的URL進行轉向或者需要使用CGI script-alias

    LoadModule alias_module libexec/mod_alias.so



    常用的模塊:
    最常用的可能就是php和JAVA WEB應用的wrapper,此外,從性能上講:mod_gzip可以減少40%左右的流量,從而減少機器用于傳輸的負載,而mod_expires可以減少10%左右的重復請求,讓重復的用戶請求CACHE在本地,根本不向服務器發出請求。



    建議將所有MODULE的配置都放到



    PHP的安裝:
    /path/to/php_src/configure --with-apxs=/path/to/apache/bin/apxs
    --with-other-modules-you-need
    需要修改的配置:
    AddType application/x-httpd-php .php .php3 .any_file_in_php



    resin的安裝設置:
    /path/to/resin/src/configure --with-apxs=/path/to/apache/bin/apxs


    一般將具體的resin設置放在另外一個文件中:


    CauchoConfigFile /path/to/apache/conf/resin.conf



    mod_expires的安裝配置:


    ExpiresActive on

    #所有的.gif文件1個月以后過期
    ExpiresByType image/gif "access plus 1 month"

    #所有的文件缺省1天以后過期
    ExpiresDefault "now plus 1 day"



    mod_gzip的安裝:
    /path/to/apache/bin/apxs -i -a -c mod_gzip.c



    mod_gzip和PHP在一起的配置


    mod_gzip_on Yes

    mod_gzip_minimum_file_size 1000

    mod_gzip_maximum_file_size 300000

    mod_gzip_item_include file \.htm$

    mod_gzip_item_include file \.html$

    mod_gzip_item_include file \.php$

    mod_gzip_item_include file \.php3$

    mod_gzip_item_include mime text/.*

    mod_gzip_item_include mime httpd/unix-directory

    #不要讓mod_gzip和php的session使用同一個臨時目錄:php_session需要通過php.ini設置session.save_path = /tmp/php_sess

    mod_gzip_temp_dir /tmp/mod_gzip

    mod_gzip_dechunk Yes

    mod_gzip_keep_workfiles No


    mod_gzip和mod_php的配合:不要讓mod_gzip和mod_php使用同一個臨時目錄;

    mod_gzip和RESIN配合:要讓mod_gzip在mod_caucho后LOAD,否則mod_gzip不起作用
    ...othr modules

    AddModule mod_so.c

    AddModule mod_caucho.c

    #notice: mod_gzip must load after mod_caucho

    AddModule mod_gzip.c

    AddModule mod_expires.c

    ...



    mod_gzip_on Yes

    mod_gzip_dechunk yes

    mod_gzip_keep_workfiles No

    mod_gzip_minimum_file_size 3000

    mod_gzip_maximum_file_size 300000

    mod_gzip_item_include file \.html$

    mod_gzip_item_include mime text/.*

    mod_gzip_item_include mime httpd/unix-directory

    mod_gzip_item_include handler 'caucho-request'



    日志輪循工具cronolog的安裝和設置:cronolog可以非常整齊的將日志按天輪循存儲
    缺省編譯安裝到/usr/local/bin/下,只需要將配置改成:

    CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/%w/access_log" combined



    日志將按天截斷并存放在以weekday為目錄名的目錄下:比如:log/1是周一,log/5是周五,
    log/0是周日

    升級維護:

    由于使用標準化的DSO模式安裝APACHE,APACHE的HTTPD核心服務和應用模塊以及應用模塊之間都變的非常靈活,建議將所有獨立模塊的配置都放在


    CONFIGURATIONS..


    里,這樣配置非常容易通過屏蔽某個模塊來進行功能調整:比如:
    #AddModule mod_gzip.c

    就屏蔽了mod_gzip,其他模塊不首任何影響。



    安裝和維護過程:



    系統安裝:系統管理員的職責就是安裝系統和一個可以適應任何情況的APACHE,然后COLON。
    應用安裝:由應用管理員負責具體應用所需要的模塊并設置HTTPD。
    系統升級:系統管理員:升級系統/升級APACHE
    應用升級:應用管理員:升級應用模塊
    系統備份/恢復:如果APACHE不在缺省的系統盤上,只需要將APACHE目錄備份就可以了,遇到系統分區的硬件問題直接使用預先準備好的系統COLON,直接將APACHE所在物理盤恢復就行了。

    系統管理員:APACHE的最簡化安裝 OS + APACHE(httpd core only)

    應用管理員:應用模塊定制   +so
    +php
    +so
    +caucho
    +ssl
    應用: 純靜態頁面服務:
    image.example.com
    www.example.com bbs.example.com mall.example.com


    參考文檔:

    Apache
    http://httpd.apache.org

    php
    http://www.php.net

    Resin
    http://www.caucho.com

    mod_gzip
    http://www.remotecommunications.com/apache/mod_gzip/

    Cronolog
    http://www.cronolog.org

    mod_expires
    http://httpd.apache.org/docs/mod/mod_expires.html


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>