在linux上設置web站點(一)

一、http協議:超文本傳輸協議

    應用層協議,使用TCP協議承載,端口號爲80

    http協議的功能:        

        MIME:多用途互聯網郵件擴展,可以傳輸非純文本文件

Cache:緩存機制

Method:GET,PUT,POST,DELETE,HEAD,TRACE,CONNECT,OPTIONS;

    GET:請求獲取指定的資源;

    PUT:向指定的位置上傳資源的最新版本;

    POST:用於實現表單認證,在資源之後附加相關數據;

    DELETE:請求服務器刪除被明確標識的資源;

    HEAD:與GET方法相同,都是向服務器申請獲取資源,但HEAD方法僅向服務器請求響應消息的首部元信息;

    TRACE:請求服務器回送收到的請求信息;用於測試或者故障診斷;

    CONNECT:保留,留待將來使用;

    OPTIONS:請求查詢服務器的性能,或者查詢與資源相關的選項以及請求資源可以使用的方法;

        keepalive:持續連接機制,也稱持久連接,長連接

    

    HTML:超文本標記語言,http協議主要傳輸的語言


    

    http協議的工作模式:request/response模式;

一次完整的http事務:請求<-->響應;

一次完整的http通信,包括一次請求及對應於此次請求的響應;


二、web資源的使用  

    1.web資源:

        一個html文檔;

        一張圖片(jpg/jpeg,gif,png)

        一個MP3片段

        一個mpeg/mp4片段

        一個PHP腳本

        一個js腳本

        一個css樣式表

        ...


    一次http請求,只能請求一個web資源,一個網站擁有多個web資源,請求加載網站時,若對於每一個web資源服務器都要使用一個進程建立TCP鏈接,會使服務器負擔過大,必須要合理分配進程處理請求,才能使效率更高,服務器用來處理客戶端請求的模型稱作併發響應模型


    2.併發響應模型:

        單進程IO模型:僅有一個進程用於處理和響應客戶端請求,每次只能處理和響應一個客戶端,串行響應模型;

        多進程IO模型:同時啓動多個進程,每個進程只能處理和響應一個客戶端請求;

        複用的IO模型:進程可以同時處理並響應多個客戶端的請求;

        多線程的IO模型:每個進程可以生成多個線程,每個線程可以響應一個用戶請求;

        事件驅動的IO模型:每個進程直接處理並響應多個客戶端的請求,其中採用事件通知機制;

        複用的多進程IO模型:啓動M個進程,且每個進程可以生成N個線程,每個線程可以處理並響應一個客戶端的請求;M*N個客戶端;

        複用的事件驅動的IO模型:啓動M個進程,每個進程都是基於事件驅動的方式直接處理並響應多個客戶端的請求;


    3.web服務器的一次完整的http請求的處理過程:

        1)建立TCP連接

        2)接收請求:將客戶端發送來的報文經過通信子網的解封之後,將其放置於用戶空間中相應的應用程序所在的內存空間中;

        3)分析處理請求:通過讀取報文的http協議首部和body部分,獲取客戶端請求的資源的具體信息;

        4)訪問資源:通過特定的IO方式從磁盤等IO設備上加載客戶端請求的資源;

        5)構建響應報文:將加載的資源使用特定協議予以封裝;

        6)發送響應報文:

        7)記錄日誌信息:


    4.URI:Uniform Resource Indentifier,統一資源標識符;

在整個Web網絡上可以的各種資源,如:HTML文檔,圖片,視頻或音頻片段,應用程序,壓縮包,腳本等,都可以使用URI進行統一的唯一的標識;

URI一般包含三個部分:

    1)資源的命名機制;

    2)存放資源的主機名稱;

    3)資源自身名稱;


    URL:Uniform Resource Locator,統一資源定位符,URI的一個分支,用來定位資源的方法,使用URL可以找到一個定位的web資源;

URL是互聯網上用來描述web資源的定位方式的一組具有特定格式的字符串;

URL一般有三個部分:

    1)協議:資源的提供方式或訪問方式;

                可用的協議:https,http,ftp,ssh,mailto,gopher,...

    2)主機標識:可以使用主機的FQDN,也可以使用IP地址;

    3)資源存放的路徑:相對於主機的存放路徑;使用某種特定方式實現的映射路徑,用於標識資源的具體位置;此路徑是從根開始出發並標識的路徑,根是web服務的根,而並不是文件系統的根;


    URL通用標準格式:

    [scheme://][Username:Password@]Server[:port][/PATH/TO/RESOURCE][?PARAMETERS=VALUE&&...][#FLAG]


    5.web資源的分類:

        靜態資源:

    服務器會根據客戶端的請求直接將資源原封不動的響應給客戶端的資源;

        html文檔

        圖片

        視頻片段,音頻片段

        純文本

        css

        ...


        動態資源:

            通常是由某種編程語言編寫的程序文件,在服務器上經過某種特定方式執行之後生成相應的html頁面,服務器將程序運行生成的html頁面響應給客戶端的資源;

    服務器端動態資源:

        php腳本

        jsp程序

        .NET程序

        python腳本

        ruby腳本

        C/C++程序


            客戶端動態資源:

        javascript腳本

        Servlet

        ActiveX


    6.資源的路徑映射:

        在一個web資源的URL中,有該資源的路徑字段,但該路徑一般不是該資源在服務器主機內的實際路徑,而是一種通過chroot機制映射出來的路徑。

        一個映射web根目錄的指令:

            DocumentRoot /var/www/html/ 

    

        此時,/var/www/html就變成了web訪問的根目錄,通過以下URL可以訪問/var/www/html/目錄下的資源

    http://server/a.html


web服務器的資源路徑的映射方式:

    1)DocumentRoot

    2)Alias

    3)VirtualHost DocumentRoot

    4)用戶的docroot

    ...

        

    7.http協議請求處理的連接方式:

        1)非持續連接:短連接

    在建立好的一個TCP連接上,僅能傳送一個http請報文以及一個與之匹配的響應報文;

            適用場合:用於請求單個大資源的響應報文的傳送;


        2)持續連接:持久連接,長連接,keepalive;

    可以允許客戶端在一個TCP連接上發送不止一次的http請求報文,每一個資源響應報文都可以基於同一個TCP連接響應給客戶端;

            適用場合:用於多個小資源請求或從反向代理服務器向後端服務器請求的場景;可以避免後端服務器使用過多的進程來處理和響應客戶端請求,在很大的程度上可以節省服務器的資源開銷;


    注意:到底選擇使用哪類連接方式,由提供資源的服務器決定;


三、http協議的開源實現:

    一些靜態資源的解決方案:        

        httpd(Apache)

        nginx(Engine X)

    Tengine

        lighttpd

    

    一些動態資源的解決方案:應用程序服務器    

        JSP:

    Tomcat

    Weblogic

    Websphere

    Jboss

    Glassfish

        PHP:

    php

    php-fpm

        Python:

    python

        .NET:

    IIS


四、httpd命令

    1.特性:

        高度模塊化,由核心和模塊組成,所有功能都放在模塊當中

        DSO:動態共享對象,可以實現模塊的動態裝載和卸載

    

    2.httpd的模塊

        1)靜態模塊:編譯至核心中的模塊,如果想要更換靜態模塊,則必須要換核心文件,並且只有在重啓服務進程之後,才能生效;

        2)動態模塊:可以基於DSO方式動態裝載卸載,僅需要重載配置文件即可生效

            MPM:多道處理模塊,用來設定httpd進程的併發響應模型,有三種:              

                prefork:多進程IO模型;

    1)一個主進程,多個子進程;

    2)主進程用於管理子進程,創建套接字,接收客戶端請求,並將客戶端請求派發給子進程處理;

    3)子進程負責處理客戶端請求及構建和發送響應報文;

    4)一個子進程僅能處理和響應一個客戶端的請求;

    5)httpd默認的MPM模塊;


                worker:複用的多進程IO模型(多進程多線程)

    1)一個主進程,多個子進程;

    2)主進程用於管理子進程,創建套接字,接收客戶端請求,並將客戶端請求派發給子進程處理;

    3)子進程負責管理其內部的各線程;

    4)線程負責處理客戶端請求及構建和發送響應報文;

    5)一個線程僅能處理和響應一個客戶端的請求;


                event:複用的IO模型(事件驅動的多進程模型)

    1)一個主進程,多個子進程;

    2)主進程用於管理子進程,創建套接字,接收客戶端請求,並將客戶端請求派發給子進程處理;

    3)子進程負責處理客戶端請求及構建和發送響應報文;

    4)一個子進程可以處理和響應多個客戶端的請求;


            注意:event模型在httpd-2.0之前不支持;在httpd-2.2版本中僅用作測試;只有在httpd-2.4中才被定義爲建議使用的模型;


        在CentOS 6中,通過rpm包僅能安裝httpd-2.2版本,event模型是測試模型,不支持DSO動態裝載和卸載;

        在CentOS 7中,通過rpm包能安裝httpd-2.4版本,event模式爲"production ready",並且支持DSO動態裝載和卸載;


    3.httpd的功能:

        CGI:通用網關接口,可以使web服務器支持運行各種外部程序

        虛擬主機:可以使httpd在同一臺主機上完成多個不同套接字的監聽,也可以使不同的虛擬主機監聽在同一套接字上,因此可以在同一個主機上運行多個web站點

            虛擬主機的標識方式:        

                IP+PORT+FQDN

        反向代理:訪問服務器時會訪問到服務器的代理服務器,而不會直接訪問到服務器的資源,一切資源請求由代理服務器從原服務器中獲取轉發,如果有網絡***則會被代理服務器的防火牆過濾而不會直接***到原服務器。

        負載均衡集羣:基於流量、基於業務、基於請求

        路徑名稱的別名設置

        身份認證:

            basic

            digest

        支持豐富的第三方模塊


四、使用httpd工具

    1.http工具相關文件        

        CentOS 6:httpd-2.2

    程序構成:

httpd:主程序包

httpd-tools:工具包

httpd-manual:離線幫助文檔


    程序環境:

/etc/httpd/conf/httpd.conf:httpd主配置文件;

/etc/httpd/conf.d/*.conf:片段配置文件;

/etc/rc.d/init.d/httpd:httpd服務的啓動腳本;

    /etc/rc.d/init.d/httpd start|stop|reload|restart:可以使用servcie httpd start|stop|reload|restart命令來開始、停止、重載、重啓httpd服務

/etc/sysconfig/httpd:/etc/rc.d/init.d/httpd的配置文件;

/usr/lib64/httpd/modules:動態模塊的存放路徑;

    /etc/httpd/modules --> /usr/lib64/httpd/modules

/etc/httpd/conf/magic:實現MIME功能的配置文件;

/var/log/httpd:httpd存放日誌文件的路徑;包括訪問日誌和錯誤日誌;

    /etc/httpd/logs --> /var/log/httpd

/var/run/httpd:存放httpd主進程PID的文件;

    /etc/httpd/run --> /var/run/httpd

/var/www/html:默認的web站點的文檔根目錄的映射路徑;


    可執行程序文件:

/usr/sbin/httpd:啓動MPM的prefork模型的核心程序文件;

/usr/sbin/httpd.event:啓動event模型;

/usr/sbin/httpd.worker:啓動worker模型;

/usr/sbin/apachectl:服務控制命令,用於啓動或停止服務的命令;


        CentOS 7:httpd-2.4

    程序構成:

httpd:主程序包

httpd-tools:工具包

httpd-manual:離線幫助文檔


    程序環境:

/etc/httpd/conf/httpd.conf:httpd主配置文件;

/etc/httpd/conf.d/*.conf:片段配置文件;

/usr/lib/systemd/system/httpd.service:啓動服務時使用的Unit File;

/etc/sysconfig/httpd:/etc/rc.d/init.d/httpd的配置文件;

/usr/lib64/httpd/modules:動態模塊的存放路徑;

    /etc/httpd/modules --> /usr/lib64/httpd/modules

/etc/httpd/conf/magic:實現MIME功能的配置文件;

/var/log/httpd:httpd存放日誌文件的路徑;包括訪問日誌和錯誤日誌;

    /etc/httpd/logs --> /var/log/httpd

/var/run/httpd:存放httpd主進程PID的文件;

    /etc/httpd/run --> /var/run/httpd

/var/www/html:默認的web站點的文檔根目錄的映射路徑;


    可執行程序文件:

/usr/sbin/httpd:

    在httpd-2.4版本中,MPM支持DSO機制,每個MPM模型都有一個對應的模塊;

/usr/lib64/httpd/modules/mod_mpm_prefork.so

/usr/lib64/httpd/modules/mod_mpm_worker.so

/usr/lib64/httpd/modules/mod_mpm_event.so

/usr/sbin/apachectl:服務控制命令,用於啓動或停止服務的命令;


        設置httpd服務開機自動啓動:

    CentOS 6:

chkconfig httpd on

    CentOS 7:

systemctl enable httpd.service

        httpd的使用操作:

            CentOS 6:


servcie httpd start|stop|reload|restart

            CentOS 7:

systemctl start|stop|restart|reload httpd.service

            注意:啓用httpd服務後要關閉selinux和防火牆,以防止對服務進行干擾

                

                SElinux配置:

    getenforce:查看selinux狀態,若爲Enforcing則需要使用 setenforce 0 命令關閉selinux

    

防火牆:

    iptables -vnL:查看防火牆狀態,其執行結果中如果有防火牆規則,需要進行如下處理:


    CentOS 6:

service iptables stop
chkconfig iptables off
iptables -F


    CentOS 7:

systemctl disable firewalld.service
        systemctl stop firewalld.service
iptables -F


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