【個人技術我作主】Apache Httpd Web服務器詳解

一.簡介php

Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。Apache HTTP服務器是一個模塊化的服務器,源於NCSAhttpd服務器.Apache的特色是簡單、速度快、性能穩定,並可作代理服務器來使用。html

Apache官網:http://apache.org/linux

Apache Httpd網站:http://httpd.apache.org/apache

Apache httpd Web服務器特性vim

    1.事先建立進程windows

    2.模塊多元化,各類功能模塊的添加瀏覽器

    3.能夠支持SSL技術安全

    4.支持多種方式的虛擬主機配置bash

            虛擬主機經常使用配置主要分爲:服務器

                    基於IP的虛擬主機

                    基於端口的虛擬主機

                    基於域名的虛擬主機

    5.支持多種方式的HTTP認證

    6.支持URL重寫;等多種特性

二.httpd安裝方式

            主要安裝方式分爲兩種:一種爲rpm包安裝;另外一種爲源碼包安裝

            安裝httpd軟件包時,請現將SELinux處於permssive或disabled,不然可能某些服務沒法啓動

            修改SELinux配置文件/etc/selinux/config,修改「SELINUX=permssive」

            wKioL1XDZM6wuj-MAAFWDV_4AFo800.jpg

httpd軟件包安裝:yum -y install httpd   (yum的搭建很少說了,能夠查看本博客yum源的搭建)

三.Httpd端口,目錄介紹   

    httpd默認端口爲tcp/80端口;ssl 協議端口爲443/tcp端口

    httpd工做的默認根目錄爲/etc/httpd

    http的配置文件目錄爲/etc/httpd/conf

            httpd主配置文件爲httpd.conf文件

           以 /etc/httpd/conf.d/*.conf結尾的配置文件均爲httpd.conf的主配置文件的組成部分

    Apache Httpd模塊化目錄爲/etc/httpd/modules

    Apache Httpd日誌目錄爲/etc/httpd/logs -->/var/log/httpd  指向/var/log/httpd目錄文件

            日誌文件分爲:訪問日誌access_log;錯誤日誌err_log 兩種

    Apache Httpd網頁目錄爲/var/www目錄 

            /var/www目錄下分爲html目錄和cgi-bin目錄:html目錄爲靜態網頁目錄如html語言開發的;

                    cgi-bin目錄爲動態網頁目錄如asp,php,jsp,Java等開發的網站程序。

     CGI簡介:               

     Common Gateway Interface,簡稱CGI。在物理上是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口。cgi是外部應用程序(CGI程序)與Web服務器之間通訊的接口,CGI規範容許Web服務器執行外部程序,並將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。

四.httpd主配置文件/etc/httpd/conf/httpd.conf 詳解

### Section 1: Global Environment  全局配置
        ServerRoot "/etc/httpd"  httpd服務器根目錄

        PidFile run/httpd.pid       httpd服務進程pid,保存在httpd.pid文件中
        KeepAlive Off                  是否啓用長連接【on  or off】使用長鏈接能夠有效的提升性能

        MaxKeepAliveRequests 100       在啓用長鏈接後用戶最多一次請求的資源數,0表示無限制請求

        KeepAliveTimeout 15      長鏈接的斷開時常

 # prefork MPM 多處理模塊

        mpm_winnt  windows下多線程處理機制;

        prefork Linux下預先生成進程處理機制,一個請求用一個進程進行響應;

        worker多個線程處理,一個請求一個線程響應;

        event一個進程處理多個請求

     能夠使用httpd -l命令查看當前Linux所支持那些mpm處理模塊
     httpd服務器默認使用worker處理模塊,若是更改其餘處理模塊可修改httpd啓動腳原本實現,httpd啓動腳本配置文件爲/etc/sysconfig/httpd,修改配置文件中#HTTPD=/usr/sbin/httpd.worker

       <IfModule prefork.c>
        StartServers       8                  服務器啓動時啓動8個空閒進程
        MinSpareServers    5             最少空閒5個進程接受用戶請求
        MaxSpareServers   20           最大空閒進程
        ServerLimit      256                爲MaxClients指定最大上限,修改時當前服務器必須關閉服務器kill全部進程,在從新啓動
        MaxClients       256               最大客戶端數,最多隻容許256個客戶端同時請求,不能超過Serverlimit限定數  
        MaxRequestsPerChild  4000 一個進程最多響應4000次的用戶請求            
        </IfModule>
        <IfModule worker.c>
        StartServers         4                 服務器啓動時啓動4個進程
        MaxClients         300              最大客戶端數,最多隻容許300個客戶端同時請求
        MinSpareThreads     25          最小空閒線程
        MaxSpareThreads     75         最大空閒線程
        ThreadsPerChild     25            每 一個進程生成25個線程
        MaxRequestsPerChild  0         不作限定的用戶請求
        </IfModule>

        #Listen 12.34.56.78:80

        Listen 80  Httpd服務器默認監聽端口80,能夠同時監聽多個端口
        Listen 8080    或  127.0.0.1:8080

 ### Section 2: 'Main' server configuration  server主配置       

         ServerAdmin root@localhost               服務器管理員

         ServerName www.example.com:80      服務器Name

         DocumentRoot "/var/www/html"         網站文檔根目錄,可直接修改目錄路徑

        如要修改默認www文檔根目錄,必需要定義<Directory />Apache服務和功能是否被容許和訪問

        也可修改相應的配置文件中<Directory "/var/www/html"> 中的目錄便可。

        自定義<Directory />,格式以下
                <Directory />
                Options FollowSymLinks
                AllowOverride None
                </Directory>

 Options選項參數

# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

                  Indexes  索引網站目錄,在網站安全中Indexes不可啓用

                  None      不支持任何選項

                  FollowSymLinks      容許符號連接所指向的源文件

                  Includes    容許執行服務端包含SSI

                  ExecCGI     容許運行

                  MultiViews   多視圖模式,耗費資源

                  ALL                支持全部選項

AllowOverride參數

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit

                AllowOverride None  容許覆蓋服務器控制訪問列表

                                        AuthConfig 用戶認證,提供用戶賬號密碼提供登陸

                        Order:用於定義基於主機的訪問功能的Ip,網絡地址或主機定義訪問控制

                列子:若有一網站不想被192.168.100.1 和192.168.100.4 兩個Ip地址訪問如何配置Order?

                            AllowOverride None
                            Order deny,allow
                            Deny from 192.168.100.1 192.168.100.4

  httpd -t 檢測配置文件語法是否正確 

 純文本瀏覽器   elinks 127.0.0.1

                        elinks -dump 127.0.0.1  打開網站後直接退出

                         elinks -source 127.0.0.1 顯示網站源碼

列子:基於用戶認證,本地有baishouqijia 、白手起家、zhang,3個用戶在訪問網站時必須輸入賬號密碼進行訪問,不然沒法訪問,該如何作?配置文件以下

                    wKiom1XGIWaA5AwPAAK6Zy5A5Os699.jpg

      建立htpasswd中的用戶賬號密碼

        [root@localhost httpd]# htpasswd -c -m /etc/httpd/htpasswd baishouqijia
       [root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd 白手起家
      [root@localhost httpd]# htpasswd -m /etc/httpd/htpasswd zhang
     [root@localhost httpd]# httpd -t
    [root@localhost httpd]# /etc/init.d/httpd restart
   [root@localhost httpd]#
   -m選項md5加密方式

   -c選項建立htpasswd文件,建立第一個用戶時使用,第二個用戶則無效加-c,不然從新建立htpasswd文件並替換第一次添加用戶時所建立的文件

測試:

   開始登陸提示輸入賬號密碼 

wKiom1XGI7uzUHR8AAG9p9YukHY116.jpg

輸入賬號密碼後

wKiom1XGI7ySIrlFAADKv3RgUzw002.jpg

      

刪除用戶 htpasswd -D

        DirectoryIndex index.html index.html.var   首頁索引文件,若是一個網站程序中都包含,自左往右開始索引

        ErrorLog logs/error_log  錯誤日誌目錄
        LogLevel warn                日誌級別

        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
        LogFormat "%h %l %u %t \"%r\" %>s %b" common
        LogFormat "%{Referer}i -> %U" referer
        LogFormat "%{User-agent}i" agent
                %h    客戶端地址

                %l     遠程主機登陸名稱

                %u    登陸網站時登陸的用戶名稱

                %t     日誌產生的時間

                %r     請求報文的第一行

                %>s   最後一次的請求的狀態碼

                %b     響應報文的大小

                %{Referer}i  網站來源

                %{User-Agent}i  客戶端瀏覽器的類型

        Alias /icons/ "/var/www/icons/"  路徑別名

   列子:在/mnt/www/bbs下建立index.html 並使用別名/bbs訪問

    wKioL1XGOHGSnCMAAALATHahEZA549.jpg

測試:

wKioL1XGOOyTY7hSAADBPKTRYLE704.jpg

4、建立添加虛擬主機

 [root@localhost conf]# vim /etc/httpd/conf/httpd.conf
### Section 2: 'Main' server configuration
#DocumentRoot "/var/www/html"        註釋掉
### Section 3: Virtual Hosts         添加如下部分
NameVirtualHost *:80
<V<VirtualHost *:80>
        ServerName www.a.net
        DocumentRoot "/var/www/html/a.net"
</VirtualHost>
<VirtualHost *:80>
        ServerName www.b.com
        DocumentRoot "/var/www/html/b.com"
</VirtualHost>


51cto十週年博客活動正在進行,你也來參加吧~

   活動地址http://51ctoblog.blog.51cto.com/26414/1679643

相關文章
相關標籤/搜索