1. 程式人生 > >http-2.4

http-2.4

org install iconv make reverse rri for 啟用 init.d

http-2.4

1)新特性
    (1)MPM 支持運行為DSO 機制;以模塊形式按需加載
    (2)event MPM 生產環境可用
    (3)異步讀寫機制
    (4)支持每模塊及每目錄的單獨日誌級別定義
    (5)每請求相關的專用配置
    (6)增強版的表達式分析式
    (7)毫秒級持久連接時長定義
    (8)基於FQDN 的虛擬主機不需要NameVirutalHost 指令
    (9)新指令,AllowOverrideList
    (10)支持用戶自定義變量
    (11)更低的內存消耗
2)修改了一些配置機制
    不再支持使用Order, Deny, Allow 來做基於IP 的訪問控制
3)新模塊
    (1) mod_proxy_fcgi
        FastCGI Protocol backend for mod_proxy
    (2) mod_remoteip
        Replaces the apparent client remote IP address and hostname for the request with the IP address list presented by a proxies or a load balancer via the request headers.
    (3) mod_ratelimit
        Provides Bandwidth Rate Limiting for Clients
        
4)centos7 httpd程序環境
    1)CentOS 7 :httpd-2.4
    2)安裝方法:rpm ,編譯安裝
    3)Rpm 安裝的程序環境:
        配置文件:
            /etc/httpd/conf/httpd.conf
            /etc/httpd/conf.d/*.conf
        模塊相關的配置文件:
            /etc/httpd/conf.modules.d/*.conf
        systemd unit file
            /usr/lib/systemd/system/httpd.service
        主程序文件:
            /usr/sbin/httpd
            httpd-2.4 支持MPM
        日誌文件:
            /var/log/httpd
            access_log :訪問日誌
            error_log :錯誤日誌
        站點文檔:
            /var/www/html
        模塊文件路徑:
            /usr/lib64/httpd/modules
        服務控制:
            systemctl {enable|disable} httpd.service
            systemctl {start|stop|restart|status} httpd.service

5)配置
    配置應用 :
    (1)切換使用的MPM
        Centos7:
            /etc/httpd/conf.modules.d/00-mpm.conf
            啟用要啟用的MPM相關的LoadModule 指令即可
        centos6 編譯安裝:
            vim /etc/httpd24/httpd.conf
                Include /etc/httpd24/extra/httpd-mpm.conf
                LoadModule mpm_event_module
                modules/mod_mpm_event.so
    (2)主目錄:
        DocumentRoot /path
    (3)基於IP的訪問控制:
        無明確授權的目錄,默認拒絕
        允許所有主機訪問:Require all granted
        拒絕所有主機訪問:Require all denied
        控制特定的IP訪問:
            Require ip IPADDR:授權指定來源的IP訪問
            Require not ip IPADDR:拒絕特定的IP訪問
        控制特定的主機訪問:
            Require host HOSTNAME:授權特定主機訪問
            Require not host HOSTNAME:拒絕特定主機訪問
                HOSTNAME:
                    FQDN:特定主機
                    domin.tld:指定域名下的所有主機
        不能有失敗,至少有一個成功匹配
            <RequireAll>
                Require all granted
                Require not ip 172.16.100.2  拒絕特定IP
            </RequireAll>
        多個語句有一個成功,即成功
            <RequireAny>
                ……
            </RequireAny>
    (4)虛擬主機
        基於FQDN 的虛擬主機也不再需要NameVirutalHost 指令
        <VirtualHost *:80>
            ServerName www.b.net
            DocumentRoot "/apps/b.net/htdocs"
            <Directory "/apps/b.net/htdocs">
                Options None
                AllowOverride None  ##Apache是否允許另一配置文件覆蓋現有配置文件。
                Require all granted
            </Directory>
        </VirtualHost>
        註意:任意目錄下的頁面只有顯式授權才能被訪問
    (5) ssl: 安裝mod_ssl,和httpd-2.2 相同配置
    (6) KeepAlive on
        KeepAliveTimeout   #ms
        MaxKeepAliveRequests 100
        毫秒級持久連接時長定義
    (7)cento7上實現虛擬主機
        vim /etc/httpd/conf.d/vhosts.conf 
            <virtualhost *:80 >
                servername www.a.com
                documentroot "/app/a.com/"
                ProxyPass "/" "http://www.a.com:8080/"     ##請求轉發
                ProxyPassReverse "/" "http://www.a.com:8080/"  ##配置總是和ProxyPass 一致,它的作用在於反向代理,如果響應中有302重定向,ProxyPassReverse就派上用場。
                <directory /app/a.com>
                    Require all granted
                </directory>
            </virtualhost>
            
            listen 8080
            <virtualhost *:8080 >
                servername www.b.com
                documentroot "/app/b.com/"
                <directory /app/b.com>
                    Require all granted
                </directory>
            </virtualhost>
            
            <virtualhost *:80 >
                servername www.c.com
                <directory /app/c.com>
                    Require all granted
                </directory>
                documentroot "/app/c.com/"
            </virtualhost>

在centos6編譯安裝httpd-2.4
    安裝httpd-2.4
        依賴於apr-1.4+, apr-util-1.4+, [apr-iconv]
        apr:apache portable runtime ,解決跨平臺實現
        CentOS 6 :默認:apr-1.3.9, apr-util-1.3.9
    安裝前準備開發包:
        開發環境包組:
            Development Tools,Server
            開發程序包:pcre-devel ,openssl-devel
    下載源代碼並解壓縮:
        http://www.apache.org/index.html#projects-list
            apr-1.5.2.tar.bz2
            apr-util-1.5.4.tar.bz2
            httpd-2.4.27.tar.bz2
        (1) 安裝apr-1.4+
            ./configure --prefix=/usr/local/apr
            make && make install
        (2) 安裝apr-util-1.4+
            ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
            make && make install
        (3) 編譯安裝httpd-2.4
            ./configure --prefix=/usr/local/httpd24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --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=prefork
            make && make install
    或者下面方法
        1》mv apr-1.5.2/ httpd-2.4.27/srclib/apr
        2》mv apr-util-1.5.4/ httpd-2.4.27/srclib/apr-util
        3》cd httpd-2.4.27/
        4》./configure --prefix=/usr/local/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
        5》Make && make install
        6》Httpd 編譯過程:/usr/local/apache24/build/config.nice
        7》自帶的服務控制腳本:/usr/local/httpd24/bin/apachectl
        8》vim /etc/profile.d/httpd24.sh
            export PATH=/app/http24/bin:$PATH
        9》vim /etc/man.config
            MANPATH /usr/local/apache24/man
        10》自定義啟動腳本( 參考httpd-2.2 的服務腳本)
            cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
            vim /etc/rc.d/init.d/httpd24
                apachectl=/usr/local/httpd24/bin/apachectl
                httpd=${HTTPD-/usr/local/httpd24/bin/httpd}
                pidfile=${PIDFILE-/usr/local/httpd24/logs/httpd.pid}
                lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
            chkconfig –add httpd24 ;chkconfig –list httpd24

http-2.4