Apache网站服务
Apache 下載地址: http://mirror.bit.edu.cn/apache/httpd/
相關軟件下載地址:http://mirror.bjtu.edu.cn/apache/apr/apr
          http://mirror.bjtu.edu.cn/apache/apr/apr-util
=============Apache 簡介: 進程技術,高資源消耗,但是穩定;
? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? MPM (multi process moudles): 多處理模塊;
   ? Apache工作模式:
     進程池(prefork):適合動態頁面,總是提前準備好進程等待訪問者,一個進程對應一個web訪問請求;
     線程池(worker,event):適合靜態頁面,比如先開啟5個進程,每個進程里開啟100線程,一個線程接待一個web訪問請求;?? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ?? ?httpd------->prefork ---->默認
     ?httpd.worker------->worker
     ?httpd.event-------->event 
     如果使用簡化安裝的Apache,如何改變它的MPM工作模式?
? ? ? ? ? ? ? ??
? =================LAMP平臺概述:
? ? ? ? ? ?
? ?=========Apache中的進程與線程: ?
? ? ? ? ? ? ??
?
1》安裝Apache軟件:
     rpm 和 yum 安裝:
   1> yum install httpd
     service httpd restart ? ? ??
? ? ? ? ? ? ??
? ? ? ? ? ??? 啟動服務的腳本------》運行/usr/sbin/httpd----》調用/etc/httpd/conf/ httpd.conf;?
? ? ? ? ? ? ? ??
? ? ? ? ? ??? 真正提供httpd服務的程序的名字;
? ? ? ? ?? ?2>源碼安裝:
       ==下載軟件包:
         http://mirror.bit.edu.cn/apache/httpd/
         http://mirror.bjtu.edu.cn/apache/apr/apr
         http://mirror.bjtu.edu.cn/apache/apr/apr-util
       ==安裝軟件:
         yum -y install gcc autoconf automake make pcre pcre-devel openssl openssl-devel
? ? ? ? ? ? ? apr: 
       ./configure
       make && make install
     apr-util:
       ./configure --with-apr=/usr/local/apr
       make && make install
     httpd:
     ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-rewrite --with-mpm=worker --with-suexec-bin --with-apr=/usr/local/apr
     make && make install
     可以通過./configure --help 命令來查看腳本支持的所有選項:
       --prefix 指定Apache httpd程序的安裝主目錄
       --enable-so 開啟模塊化功能,支持DSO(動態共享對象) 
       --enable-ssl 支持SSL加密 
       --enable-rewrite 支持地址重寫
       --with-mpm 設置Apache 工作模式
       --with-suexec-bin 支持SUID,SGID
       --with-apr 指定apr程序絕對路徑?
2》修改配置文件:
   主配置文件:/etc/httpd/conf/httpd.conf:
   簡單配置:
? ? ? ? ?
? ? ??? 出現上述提示說明沒有標準的域名,需要指定: 
    ServerName:www.chw.com:80 -----276行》打開配置,去掉注釋,然后修改; ? ? ??
? ? ?? 配置文件詳情解析:Apache服務的主配置文件主要由指令以及容器組成,容器使用<容器名稱>開始,以</容器名稱>結尾,容器的指令一般僅在容器內有效:
     1>SeverRoot指令:
       設置軟件的安裝主目錄,如果采用源碼安裝,則默認路徑為/usr/local/apache2;
     2>Listen指令:
        設置服務器監聽的IP以及端口號,默認監聽服務器本機所有的IP地址的80端口,語法格式為:Listen[IP地址:]端口[協議],其中IP地址與協議為可選項, ? ? ? ? ? ? ? ? ? ?默認監聽所有的IP ,使用TCP協議,一個配置文件可以多次使用Listen指令來開啟多個端口;
     3>LoadModule指令:
       如果希望Apache動態加載模塊,需要在編譯Apache時通過enable-so將mod_so以靜態方式編譯到Apache核心模塊中,此指令的作用就是加載模塊,語法 ? ? ? ? ? ? ? ? 格式為:LoadModule 模塊 模塊文件名稱,其中模塊文件一般位于ServerRoot目錄下的modules目錄中;
     4>LoadFile指令:
       功能類似于上述指令,區別在于后者可以通過絕對路徑加載modules目錄下的模塊文件;
? ? ? ? ? ? ??5>ServerAdmin指令:
        ?當網站出現故障時,需要為客戶提供一個可以幫助解決問題的郵件地址,ServerAdmin指令的作用就是提供這樣的郵件地址;
     6>ServerName指令:
        設置服務器本機的主機名稱以及端口,對URL地址的重定向很重要;
     7>DocumentRoot指令:
         設置WEB服務隊客戶端開放可見的文檔根目錄,也就是客戶端訪問網站的根目錄; 
     8>ErrorLog指令:
        ? ??定位服務器錯誤日志的位置,默認使用相對路徑;
     9>ErrorLogFormat指令:
         設置錯誤日志的格式;
     10>CustomLog指令:
        ? ?設置客戶端的訪問日志文件名以及日志格式,格式為:CustomLog 文件名 格式;
     11>LogFormat指令:
        ??描述用戶日志文件格式,一般我們會為此指令設置的日志格式創建別名,然后通過CustomLog指令調用該日志格式別名;
? ? ? ? ? ? ? ?12>Include指令:
        ?允許Apache在主配置文件中加載其他的配置文件;
     13>Options指令:
        為特定目錄設置選項,選項可以設置為None,代表不啟用任何額外的功能,也可以使用如下常用選項:
         All:開啟除MultiViews之外的所有選項;
         ExecCGI:允許執行Options指定目錄下的所有CGI腳本;
         FollowSymlinks:允許Options指定目錄下的文件鏈接到目錄外的文件或目錄;
         Indexes:如果與URL對應的Options目錄下找不到DirectoryIndex指定的首頁文檔,則服務器將會把當前目錄的所有文件索引出來;
     14>Order指令:
         控制默認訪問狀態以及Allow與Deny的次序,如果使用Order deny,allow,則先檢查拒絕,再檢查允許,當拒絕與允許有沖突時,允許優先,默認規則為 ? ? ? ? ? ? ? ? ? 允許;如果使用Order allow ,deny,則先檢查允許,再檢查拒絕,當允許與拒絕有沖突時,拒絕優先,默認規則為拒絕;
? ? ? ? ? ? ? ? ? ? ? ??? ?具體案例:
           Order deny,allow 
           Deny from all 拒絕所有;
           Order Allow,Deny
           allow from all 允許所有;
           Order Allow,Deny
           allow from 192.168.1.2 除此IP外拒絕所有;
           Order Allow,Deny
           allow from 192.168.1.2
           Deny from All 拒絕所有人訪問;
           Order Deny,Allow
           Deny from all
           allow from 192.168.1.2?除此IP外拒絕所有;
? ? ? ? ? ? ? ? ? ? ?? 15>IfDefine容器:
           此容器封裝的指令僅在啟動Apache時測試條件為真才會被處理,測試條件需要在啟動Apache時通過-D定義:
         實例:
           service httpd -D UseCache -D MemCache restart
         <IfDefine MemCache>
           LoadModule mem_cache_module modules/mod_mem_cache.so
         </IfDefine>
         <IfDefine UseCache>
           LoadModule cache_module modules/mod_cache.so
         </IfDefine> ? ??
? ? ? ? ? ? ? ? ?16>IfModule容器:
         此容器封裝僅在條件滿足時才會處理的指令,根據指定的模塊是否已被加載來決定條件是否滿足;
       案例:
         <IfModule unixd_module>
         User daemon
         Group daemon
         </IfModule>
      17>Directory容器:
         該容器內 指令僅應用于特定的文件系統目錄,子目錄以及目錄下的內容;
      18><DirectoryMatch>
         此指令類似于上述指令,但可以直接使用正則表達式匹配,無須使用~符號;
      19>Files容器:
         容器內的指令僅應用于特定的文件,它可以使用~匹配正則表達式;
      20>FilesMatch容器:
         僅使用正則表達式匹配需要的文件,;
      21>Location容器:
         容器內定義的指令僅對特定的URL有效,語法格式為:<Location URL-path|URL> </Location>,如果需要使用正則表達式,可以用~符號來匹配;
? ? ? ? ? ? ? ??? 22>LocationMathch容器和VirtualHost容器:
         僅使用正則表達式來匹配URL,等同于使用了~符號匹配的Location;
?
? =============虛擬主機應用案例: 
     虛擬主機是在一臺服務器上同時運行多個WEB業務,Apache服務支持基于域名以及基于IP的虛擬主機類型,但是更多時候我們更喜歡基于域名的虛擬主機,服務器可以根據客戶端訪問HTTTP的頭部信息來實現網站的分離解析,客戶端可以使用不同的域名訪問位于同一IP地址的服務器資源;
 1》修改主配置文件:
     將主配置文件中的Include conf/extra/httpd-vhosts.conf語句開啟,Include指令將會讀取次配置文件的內容作為主配置文件的一部分,并且兩個虛擬主機的端口 ? ? 也應該不同,所以主配置文件應該監聽兩個端口;
? ? ? ? ? ? ? ?
2》修改次配置文件:?
? ? ? ? ??
3》為兩個不同的虛擬主機創建各自的頁面根目錄:
     當訪問這兩個網站時,如果沒有合法的DNS服務器,可以通過修改hosts文件來進行域名解析,如果需要進行基于IP 地址的虛擬主機,只需將*修改為固定的IP地址即可,多個虛擬主機需要使用多個VirtualHost封裝;
?
?
? ? # prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
 # worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
 當上述的數值賦值不當時,刷新服務時的提醒?
? ? ? ??
? *******注意:
? ? linux內核默認情況下一個進程可以打開的文件的數量是1024;
? ? ? ? ?
? 可以使用命令來修改這個值:
     ulimit -n 25535 只能暫時有效;
    默認情況下Apache編譯進來了哪些模塊:
? ? ? ? ? ? ??
3》啟動服務,配置防火墻規則或關閉防火墻:
     service httpd restart
     iptables -I INPUT -p tcp --dport 80 -j ACCEPT
     service iptables save ? ??
轉載于:https://www.cnblogs.com/xiaocheche/p/7613317.html
總結
以上是生活随笔為你收集整理的Apache网站服务的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: php后台接受上传图片
 - 下一篇: 创建Socket【Socket编程4】