httpd服務歸納:httpd基本配置(周邊常用工具,httpd 編譯安裝)

一、 服務器status頁

    內生的status信息,可以通過web予以顯示, 可以映射為url地址進行訪問

    1. 配置路徑有幾種不同方式 

        如果URL可以映射到文件系統映射上,盡量用directory 

        1) 配置文件系統路徑訪問屬性

      ## 簡單來說,就是實實在在存在的路徑,在/etc/httpd/conf/httpd.conf 中配置下面容器。并且支持正則表達式  
        <Directory [~] "">
        </Directory>

      ## 對于文件
        <File [~] "">
        </File>

        2) 配置URL訪問文件路徑,不一定是實實在在存在的路徑,有可能是系統內生的文件,只是通過web的形式來顯示。比如status頁面

        <Location  [~] "">
        </Location>

        ## 專門用于做正則表達式
        <LocationMatch "">
        </LocationMatch>

   2. 處理器:當文件被調用時,apache的內部表現形式, 每一種文件類型,都有種隱式的處理形式。 

     ## 對于status頁面而言,顯式定義處理為,事例
    <Location /server-status>
		SetHandler server-status                                 # 使用server-status處理器處理/server-status  
		AuthType Basic                                           # 基本授權
		AuthName "Server Status"                                 # 授權名稱
		AuthUserFile "/etc/httpd/conf/.htpasswd"                 # 授權認證文件所在位置
		Require valid-user
		Order deny,allow
		Allow from all
    </Location>
    ## 此設置相當于把server-status 頁面映射到 , 并且只有特定用戶才可以訪問 
    
    ## 用命令創建用戶認證文件 
    htpasswd -c -m /etc/httpd/conf/.htpasswd tom
    htpasswd -m /etc/httpd/conf/.htpasswd jerry 
    ## 用宿主機嘗試進行訪問 
     

server_status_asking.png

server_status.jpg

二、 配置httpd服務器支持壓縮

    使用mod_deflate模塊支持頁面壓縮

## 檢查deflate模塊是否裝載 
httpd -M | grep deflate 
Syntax OK
 deflate_module (shared)

## 在配置文件中配置deflate模塊屬性: 創建/etc/httpd/conf.d/deflate.conf 文件為一下內容 
SetOutputFilter DEFLATE

# mod_deflate configuration


# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9

# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html  

## 然后重啟服務后,進行測試

    gzip.jpg

可以看到Content-Encoding顯示為gzip, 說明文件輸出確實以gzip形式進行 

三、 httpd相關的工具 

    1. curl命令  

    curl是基于URL語法在命令行方式下工作的文件傳輸工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認證,并且支持HTTP的     POST、PUT等方法, FTP上傳, kerberos認證,HTTP上傳,代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,上載文件斷點續傳,,http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

    curl的常用選項:

         -A/–user-agent <string> 設置用戶代理發送給服務器

         -basic 使用HTTP基本驗證

         –tcp-nodelay 使用TCP_NODELAY選項

         -e/–referer <URL> 來源網址

         –cacert <file> CA證書 (SSL)

         –compressed 要求返回是壓縮的形勢

         -H/–header <line>自定義頭信息傳遞給服務器

         -I/–head 只顯示響應報文首部信息

         –limit-rate <rate> 設置傳輸速度

         -u/–user <user[:password]>設置服務器的用戶和密碼

         -0/–http1.0 使用HTTP 1.0

    2. 資源限定以及相關命令 

         軟限定: 可以超管但是,只能超過一定量的時間

         硬限定:決不能超過的限制  

         ulimit

            -n [N]: 顯示或限定能打開的最大的文件句柄數;

            -u [N]: 所能夠運行的最多進程數;

        配置文件:/etc/security/limits.conf,擴展配置:/etc/security/limits.d/*.conf

                    limit.jpg

    3. ab 命令, 服務器標準壓力測試軟件 

            -c: 模擬的并發數

            -n: 總請求數

        其他壓力測試工具: http_load, webbench, seige, tcp_copy(使用真實環境下的請求重放)

    4. httpd RPM安裝后產生的自帶工具 

            httpd: Apache 服務器。

            apachectl:Apache HTTP 服務器控制工具。當自行編譯沒有服務腳本時,可以使用這個作為服務腳本

            ab:Apache HTTP 服務器性能基準工具。

            ulimit : 資源限定查看和修改命令

            apxs:Apache 擴展工具。

            configure:配置源代碼。

            dbmmanage:為基本認證創建和更新 DBM 格式的用戶認證文件。

            htcacheclean:清理磁盤緩存。

            htdigest:為摘要認證創建和更新用戶認證文件。

            htdbm:操作 DBM 密碼數據庫。

            htpasswd:為基本認證創建和更新用戶認證文件。

            httxt2dbm:為 RewriteMap 創建 dbm 文件。

            logresolve:將 Apache 日志文件中的 IP 地址解析到主機名稱。

            rotatelogs:不關閉 Apache 而切換日志文件。

            suexec:執行外部程序前切換用戶。當用戶請求的文件不能被appache用戶請求時,可以臨時以特定用戶身份來獲取。

四、 httpd 2.4編譯安裝

    1. 解決依賴關系, httpd-2.4 依賴高版本的apr(apache portable runtime)和apr-util軟件包。 并且依賴pcre-devel perl兼容的正則表達式庫 

        1)    安裝開發工具和pcre-devel包 

    # yum -y install pcre-devel 
    # yum -y groupinstall "Development tools"

        2)    編譯安裝apr-1.5.2

    # tar -xf apr-1.5.2.tar.gz
    # cd apr-1.5.2 
    # ./configure --prefix=/usr/local/apr 
    # make && make install

        3)     編譯安裝apr-util-1.5.4 

    # tar -xf apr-util-1.5.4.tar.gz 
    # cd apr-util-1.5.4 
    # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
    # make && make install

    2. 編譯配置httpd-2.4.12 

       1) httpd-2.4新特性: 

                 MPM支持在運行時裝載;

                –enable-mpms-shared=all –with-mpm=event

                支持event

                異步讀寫

                在每模塊及每目錄上指定日志級別

                每請求配置;<If>, <Elseif>

                增強版的表達式分析器

                毫秒級的keepalive timeout

                基于FQDN的虛擬主機不再需要NameVirtualHost指令

                支持使用自定義變量

                新增了一些模塊:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip

                對于基于IP的訪問控制做了修改,不再支持使用order, allow, deny這些機制;而是統一使用require進行

        2) httpd-2.4編譯安裝 

    ## 編譯安裝
    # tar -xf httpd-2.4.12.tar.gz
    # cd httpd-2.4.12
    # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-ssl --enable-cgi --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
    # make && make install
    
    ## configure 個選項意義 
    --prefix=/usr/local/apache : 設置安裝路徑 
    --sysconfdir=/etc/httpd24 : 設置配置文件安裝路徑
    --enable-ssl : 支持使用ssl庫 
    --enable-cgi : 支持使用cgi腳本 
    --enable-rewrite : 支持重寫
    --with-zlib : 支持使用壓縮庫 
    --with-pcre : 支持使用perl正則表達式庫
    --with-apr=/usr/local/apr : apr安裝位置 
    --with-apr-util=/usr/local/apr-util : apr-util安裝位置
    --enable-modules=most : 編譯支持大部分模塊 
    --enable-mpms-shared=all : 編譯支持所有mpms模塊 
    --with-mpm=event : 默認使用event模塊
    
    ## 導出頭文件
    # ln -sv /usr/local/apache/include  /usr/include/httpd
    
    ## 導出庫文件, httpd沒有額外的庫文件生成,如果有的話,創建/etc/ld.so.conf.d/httpd24.conf, 并且把庫文件目錄添加在其中,并執行下面命令 
    # ldconfig 
    # idconfig -p  用于查看已經裝載的庫文件 
    
    ## 導出man手冊。 在/etc/man.config 中添加
    MANPATH /usr/local/apache/man
    
    ## 導出二進制程序,創建/etc/profile.d/httpd.sh 寫入下面一行 
    export PATH=/usr/local/apache/bin:$PATH

        3) 預備服務腳本,使用老版本httpd的服務腳本進行修改 

    # cp /etc/init.d/httpd /etc/init.d/httpd24 
    # vim /etc/init.d/httpd24 修改如下幾行 
    apachectl=/usr/local/apache/bin/apachectl        ## 設置新的apachectl 路徑 
    httpd=/usr/local/apache/bin/httpd                ## 新的httpd路徑 
    prog=httpd24                                     ## 程序名稱改為http24
    pidfile=${PIDFILE-/var/run/httpd24.pid}          ## 重新修改pid文件路徑  
    lockfile=${LOCKFILE-/var/lock/subsys/httpd24}    ## 設置新的鎖文件名,防止沖突 
    
    # vim /etc/httpd24/httpd.conf 添加下面一行指令,來修改pid文件地址 
    PidFile "/var/run/httpd24.pid"
    
    添加httpd24服務, 設置開機自動啟動,關閉老版本httpd防止版本沖突 
    # chkconfig --add httpd24 
    # chkconfig httpd off 
    # chkconfig httpd24 on  
    
    
    # service httpd24 start 
    # ss -tnlp | grep "httpd"
    tcp    LISTEN     0      128                   :::80                   :::*      users:(("httpd",44350,4),("httpd",44352,4),("httpd",44353,4),("httpd",44354,4))
    
    # ps aux  | grep "httpd"
    root     44350  0.0  0.1  76980  2320 ?        Ss   18:07   0:00 /usr/local/apache/bin/httpd
    daemon   44352  0.0  0.2 421240  4132 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    daemon   44353  0.0  0.2 486776  4752 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    daemon   44354  0.0  0.2 421240  4160 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    
    可以看到,一個主進程,另外event默認配置為三個工作進程,默認用戶為daemon

        4)  新特性,基于IP訪問控制 

            允許所有主機訪問:Require all granted

            拒絕所有主機訪問:Require all deny

     控制某主機的訪問:
        ## 基于ip 
	Require ip IPADDR
	Require not ip IPADDR
	    IPADDR:
		單個IP地址, 例如172.16.100.7
		Network/Netmask, 例如172.16.0.0/255.255.0.0
		Network/Length, 例如172.16.0.0/16
		Net: 172.16
	    例如: Require ip 172.16.0.0/16
	    
        ## 基于主機名
	Require host HOSTNAME
	Require not host HOSTNAME
	    HOSTNAME:
		FQDN:具體的主機
		DOMAIN: 域名, 例如 www.playground.com

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/4705

(0)
以馬內利以馬內利
上一篇 2015-05-27
下一篇 2015-05-27

相關推薦

  • HA Cluster:keepalived

    HA Cluster 集群類型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP 系統可用性的公式:A=MTBF/(MTBF+MTTR) 系統故障: 硬件故障:設計缺陷、wear out、自然災害 軟件故障:設計缺陷 提升系統高用性的解決方案之降低MTTR: 解決方案:冗余(redundant) acti…

    Linux干貨 2017-06-26
  • rsync+inotify實現數據同步——單向傳輸

    實驗環境:<從A主機推送數據到B主機[B主機可以有多個]> A主機:10.1.43.102 B主機:10.1.43.103 配置流程: —rsyncserver—- <B主機上配置> 1.vim /etc/rsyncd.conf(用戶,目錄,模塊,虛擬用戶及密碼文件) vim /etc/rsyncd.…

    Linux干貨 2016-10-27
  • 2016年8月6日作業練習

    練習: 1、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使用兩種方式) [root@localhost ~]# grep -i "^[sS]" /proc/meminfo SwapCached:      &nb…

    Linux干貨 2016-08-07
  • 文件權限

    文件權限 文件屬性       rw-r–r–表示文件權限     Root 表示文件所有者     Root 表示文件所屬組     0 表示文件的大小 …

    Linux干貨 2016-08-11
  • 基于LNMP架構添加Memcached支持,并驗證其緩存結果

    一 Memcached簡介 Memcached是一個自由開源的,高性能,分布式內存對象緩存系統。它是一種基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。 Memcached簡潔而強大。它的簡潔設計便于快速開發,減輕開發難度,解決了大數據量緩存的很多問題。它的API兼容大部分流…

    Linux干貨 2016-12-12
  • 計算機組成及各部分功能

    計算機組成及各部分功能 計算機組成 區別于利用機械原理對數據進行處理的機械計算機,計算機現在一般都指電子計算機,即電腦。計算機是一種利用電子學原理,根據一些列指令對數據進行處理的工具。 不管是機械計算機還是電子計算機其主要目的還是代替人來完成一系列的數據計算。1941年夏天誕生的阿塔納索夫-貝瑞計算機是世界上第一部電子計算機,使用了真空管計算器,二進制數值,…

    Linux干貨 2016-10-27

評論列表(4條)

  • stanley
    stanley 2015-05-27 10:06

    以馬內利的文章每次都比其它同學更有深度。贊

    • 以馬內利
      以馬內利 2015-05-27 11:17

      @stanleyI/O模型糾結了老半天,不知道該怎么表達,看了好幾遍,還是覺得理解的很淺

  • 淺藍
    淺藍 2015-05-27 21:55

    求前輩出一個完整的httpd+openssl的教程,從編譯安裝到配置一步一步下來,面向小白的,多謝!
    (原因是網上看了很多教程,但是都是httpd和openssl分開講的,里面很多細節都不太明白,新手希望能有一個一步一步跟著做的教程是最好的,先實現結果,再追求理論細節。再次感謝?。?/p>

    • 以馬內利
      以馬內利 2015-05-31 16:55

      @淺藍httpd + openssl 就是實現https協議啦,我這個系列的總結中,我寫過一個實現https的,
      http://www.www58058.com/archives/4671
      我也是個新手,就是一邊學一邊總結。 僅供參考

欧美性久久久久