1. 程式人生 > >Linux下配置Apache httpd

Linux下配置Apache httpd

httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別名,使用者認證,basic,支援第三方模組等眾多特性。本文主要描述了Linux下httpd(2.2版本)的相關基本配置。

1、配置檔案概述

配置檔案,主要分為3個部分:
        # grep "Section" /etc/httpd/conf/httpd.conf
        ### Section 1: Global Environment(全域性環境配置)
        ### Section 
2: 'Main' server configuration (核心伺服器配置) ### Section 3: Virtual Hosts(虛擬主機配置,即建多個站點) 注意:Main Server和Virtual Hosts不同時使用;預設啟用的是Main Server; 配置檔案的語法 指令 值 指令:不區分字元大小寫 值:區分字元大小寫 校驗配置檔案 httpd -t: 檢查配置檔案語法 service httpd configtest 當前配置使用的版本 #
/usr/sbin/httpd -v Server version: Apache/2.2.15 (Unix) Server built: Aug 13 2013 17:29:28

2、關閉歡迎頁面

/etc/httpd/conf.d/welcome.conf:重新命名(不以.conf結尾)或刪除

3、定義ServerRoot

    ServerRoot "/etc/httpd"
        定義httpd頂級目錄,用於存放配置,錯誤,日誌檔案等
        目錄尾部不要使用斜槓

4、指定監聽的地址和埠

    Listen [IP:]PORT
    注意:Listen
可以出現多次

5、定義預設的主頁面

    DirectoryIndex index.html index.html.var  index.php

6、設定預設字符集

        AddDefaultCharset UTF-8
        常用字符集:UTF-8, GBK, GB2312, GB18030

7、配置持久連線

    KeepAlive Off|On            持久連結是開啟還是關閉
    MaxKeepAliveRequests 100    一次長連線最大能訪問多少個資源,達到後會斷開
    KeepAliveTimeout 15         一次長連線的超時時長

8、模組動態裝解除安裝

    LoadModule foo_module modules/mod_foo.so

    相對於ServerRoot引數所指定的路徑;
        ServerRoot /etc/httpd

    可以參考:   [Linux下安裝Apache httpd](http://blog.csdn.net/leshami/article/details/49906229) 

9、工作模式引數配置

<IfModule prefork.c>            (prefork工作模式)
    StartServers       8            (啟動8個空閒程序)
    MinSpareServers    5            (最少空閒程序為5)
    MaxSpareServers   20            (最大空閒程序為20)
    ServerLimit      256            (最多客戶端數)
    MaxClients       256            (最多客戶端數)
    MaxRequestsPerChild  4000       (每個子程序最大處理多少個請求)
    </IfModule>

    <IfModule worker.c>             (work工作模式)
    StartServers         4          (啟動程序數)
    MaxClients         300           
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadsPerChild     25          (每個程序最多啟動多少個執行緒)
    MaxRequestsPerChild  0
    </IfModule>

    注意:修改了裝載的模組後,reload即可生效;

10、指定Main Server的docroot,用於設定URL的根路徑,即與伺服器上檔案路徑的對映關係

DocumentRoot "/var/www/html"

    例如:/u01/web     此處DocumentRoot為/u01/web
        檔案系統路徑:/u01/web/bbs/upload/a.rar
        則URL路徑為:http://Server_IP/bbs/upload/a.rar

    # mkdir -p /u01/web
    # echo "This is a new site location" > /u01/web/index.html
    # vi /etc/httpd/conf/httpd.conf    ###修改為/u01/web
    # service httpd reload
    # curl http://192.168.21.10
    This is a new site location

11、站點路徑訪問控制

基於本地檔案系統路徑
        <Directory "/path/to/some_directory">
            Options Indexes FollowSymLinks
            AllowOverride None
            ....
        </Directory>

    基於URL
        <Location "/path/to/some_url">

        </Location>

12、Directory容器中的訪問控制定義

(a) Options  (頁面如何展示給使用者看)
        Indexes: 當訪問的路徑下無預設的主頁面時,將所有資源以列表形式呈現給使用者;危險,慎用;
        FollowSysLinks:跟隨符號連結指向的原檔案(即能否訪問連結檔案);

        上述選項,如果要去掉或者說關閉某項功能,則使用符號“-”,如下示例:
        Options -Indexes FollowSymLinks

        示例,關閉Indexes功能
            # grep "\-Indexes" /etc/httpd/conf/httpd.conf
            Options -Indexes FollowSymLinks
            # service httpd reload
            Reloading httpd: 
            [[email protected] ~]# curl http://192.168.21.10
            <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
            <html><head>
            <title>403 Forbidden</title>    ###收到403,沒有訪問許可
            </head><body>
            <h1>Forbidden</h1>
            <p>You don't have permission to access /
            on this server.</p>
            <hr>
            <address>Apache/2.2.15 (CentOS) Server at 192.168.21.10 Port 80</address>
            </body></html>

    (b) 基於IP的訪問控制
        Order allow,deny  ###定義順序
        Allow from all    ###允許所有主機訪問

        from後面能接受的地址格式:IP, Network Address
            網路地址格式:
                172.16
                172.16.0.0
                172.16.0.0/16
                172.16.0.0/255.255.0.0

        示例:
            Order allow,deny
            Deny from 172.16.100.77
            Allow from 172.16   

13、內建的status頁面

<Location /server-status>         ###是一個內建頁,用於展示伺服器效能
            SetHandler server-status  ###(處理器:是一個小程式)
            Order deny,allow
            Deny from all
            Allow from 192.168
    </Location> 

    ExtendedStatus On 可以通過配置該指令,獲取更多的統計資訊

    示例:
        # curl http://192.168.21.10/server-status
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
          ...........
        <pre>
           7957 in state: _ ,   7958 in state: W ,   7959 in state: _ 
           7960 in state: _ ,   7961 in state: _ ,   7962 in state: _ 
           7963 in state: _ ,   7964 in state: _ ,
        </pre>
          ............
        </body></html>

14、虛擬主機

一個物理伺服器(虛擬機器)服務於多個站點:每個站點通過一個虛擬主機來實現;
    httpd支援三種類型的虛擬主機:
        基於IP
        基於Port
        基於Host

    注意:禁用Main Server; 註釋DocumentRoot指令即可;即虛擬主機與Main Server不相容

    定義虛擬主機:
        <VirtualHost "IP:PORT">
            ServerName
            DocumentRoot 
            ServerAlias
            <Directory >

            </Directory>
            ErrorLog  
            CustomLog 
        </VirtualHost>

    示例1:基於IP,假定如下配置,當前主機上已配置2個IP
        <VirtualHost 192.168.21.10:80>
            ServerName websrv.ycdata.net
            DocumentRoot "/Vhosts/websrv.ycdata.net"
        </VirtualHost>
        <VirtualHost 192.168.144.128:80>
            ServerName bbs.ycdata.net
            DocumentRoot "/Vhosts/bbs.ycdata.net"
        </VirtualHost>  

        注,虛擬主機監聽的埠必須和Listen監聽的一樣
        # mkdir -p /Vhosts/websrv.ycdata.net
        # mkdir -p /Vhosts/bbs.ycdata.net
        # echo "<h1>you are visiting websrv.ycdata.net</h1>">/Vhosts/websrv.ycdata.net/index.html
        # echo "<h1>you are visiting bbs.ycdata.net</h1>">/Vhosts/bbs.ycdata.net/index.html
        # httpd -t
        # service httpd reload          
        # curl http://192.168.21.10/
        <h1>you are visiting websrv.ycdata.net</h1>
        # curl http://192.168.144.128/
        <h1>you are visiting bbs.ycdata.net</h1>

    示例2:基於Port,假定如下配置
        Listen 8080
        Listen 8081

        <VirtualHost 192.168.21.10:8080>
            ServerName websrv.ycdata.net
            DocumentRoot "/Vhosts/websrv.ycdata.net"
        </VirtualHost>
        <VirtualHost 192.168.21.10:8081>
            ServerName bbs.ycdata.net
            DocumentRoot "/Vhosts/bbs.ycdata.net"
        </VirtualHost>  

        # httpd -t
        # service httpd reload          
        # curl http://192.168.21.10:8080
        <h1>you are visiting websrv.ycdata.net</h1>
        # curl http://192.168.21.10:8081
        <h1>you are visiting bbs.ycdata.net</h1>

    示例3:基於Host
        NameVirtualHost 192.168.21.10:80

        <VirtualHost 192.168.21.10:80>
            ServerName websrv.ycdata.net
            DocumentRoot "/Vhosts/websrv.ycdata.net"
        </VirtualHost>
        <VirtualHost 192.168.21.10:80>
            ServerName bbs.ycdata.net
            DocumentRoot "/Vhosts/bbs.ycdata.net"
        </VirtualHost>

        修改windows客戶端hosts如下
        C:\Users\1636>type C:\Windows\System32\drivers\etc\hosts
        192.168.21.10 websrv.ycdata.net
        192.168.21.10 bbs.ycdata.net    

        # httpd -t
        # service httpd reload          
        # 基於Windows端測試,截圖略

15、配置日誌功能

指令集位置,級別定義
        ErrorLog logs/error_log:定義錯誤日誌檔案路徑;會被虛擬機器主機繼承;也可以基於虛擬之際定義日誌
        LogLevel warn
            支援這些級別:debug, info, notice, warn, error, crit, alert, emerg.

    定義日誌格式
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

        %h  Remote host
        %l  Remote logname (from identd, if supplied)
        %u  Remote user (from auth; may be bogus if return status (%s) is 401)
        %t  Time the request was received (standard english format)
        %r  First line of request
            method  url  version
        %s  Status. For requests that got internally redirected, this is the status
            of the *original* request --- %>s for the last.
        %b  Size of response in bytes, excluding HTTP headers. In CLF format, 
            i.e. a '-' rather than a 0 when no bytes are sent.
        %{Foobar}i  The contents of Foobar: header line(s) in the request sent to the server.
            %{referer}i: 跳轉至當前頁面之前來源的上一次所在的頁面;
            %{User-Agent}i:使用者代理;

        詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

    定義訪問日誌,如下示例尾部使用了combined,則會使用我們自定義的日誌格式
        CustomLog logs/access_log  combined
        指令        日誌檔案       日誌格式名稱

16、與配置相關的一些命令

httpd程式自帶的工具程式:
        httpd: apache的服務程式
            -t: 配置檔案語法測試
            -M: 列出所有已經裝載的模組
            -l: 列出所有的靜態模組
            -S:列出所有的虛擬主機

        如,列出當前定義的虛擬主機
            # httpd -S
            VirtualHost configuration:
            192.168.21.10:80       is a NameVirtualHost
                     default server websrv.ycdata.net (/etc/httpd/conf/httpd.conf:1022)
                     port 80 namevhost websrv.ycdata.net (/etc/httpd/conf/httpd.conf:1022)
                     port 80 namevhost bbs.ycdata.net (/etc/httpd/conf/httpd.conf:1026)
            Syntax OK

        apachectl: shell指令碼,httpd服務控制

        apxs: httpd得以擴充套件使用第三方模組的工具介面;

        rotatelogs: 不關閉httpd而切換其使用到的日誌檔案
            access_log, access_log.1, access_log.2

相關推薦

Linux配置Apache httpd

httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別

linux配置apache多站點訪問-小案例

通過 但是 路徑 多個項目 綁定 配置 nmp .com vid 一級域名(baidu.com)也叫作頂級域名,註冊一級域名是需要付費的。 而二級域名(image.baidu.com)是一級域名的延伸,所以只要購買了一級域名,二級域名是可以任意配置的。 其實(www

Linux安裝Apache httpd

                       httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別名,使用

linux配置apache虛擬主機解決方案以及一些問題

回南昌了,發現這邊很多公司都是用apache的,上海那邊都是使用nginx伺服器,可見差距啊 博主今天興致來了,正好之前在Mac虛擬機器上配了一臺apache伺服器,於是就到自己Mac虛擬機器上配置虛擬主機吧(老早的時候我是在win上配置的虛擬主機) 1,首先我配置時候,就

linuxapachehttpd.conf配置目錄別名和include引入自配置檔案配置的方法

需求:將web服務中路徑名較長的目錄設定別名,方便使用者訪問 首先確定iptables服務和selinux都已關閉!!!!! 首先確定iptables服務和selinux都已關閉!!!!! 首先確定iptables服務和selinux都已關閉!!!!! 重要的事情,說三遍!

Linux環境配置Apache+PHP

1、安裝apache 1.1、安裝apr wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz tar -zxvf apr-1.6.3.tar.gz cd apr-1.6.3 ./configu

Linux配置Nginx+Apache+PHP+Tomcat+Java同時執行

公司業務需要,要在Linux上同時執行一個Java專案和一個php專案。伺服器外網IP繫結的一個頂級域名指向Java專案,此頂級域名解析出的一個二級域名指向php專案。設定Apache和Tomcat監聽不同埠。通過Nginx的請求轉發,把使用者請求(訪問連結)轉

linuxApache一個IP多個網站多域名配置方法

# <VirtualHost 219.13.34.32> ServerAdmin [email protected] DocumentRoot /usr/local/apache/htdocs/upload ServerName desk.xker.com </VirtualHo

Linuxcentos7+apache tomcat 7 配置專案只輸入IP即登陸到專案並且強制啟用Https的配置方法

生成可用的keystore  在windows下,開啟cmd命令列,執行keytool -genkey -alias tomcat -keyalg RSA -keystore d:\tomcatSSL.keystore命令,其中-alias後面的引數是你keystore的別

linux安裝apachehttpd-2.4.3版本)各種坑

博主的linux是ubuntu 14.04.3。 在安裝apache最新版httpd-2.4.3的時候遇到各種坑。 先提供安裝apache httpd-2.4.3所需要的包,博主已經整理好,下載地址:http://download.csdn.net/down

linux 配置jdk

地址 bsp too jdk1 home exp cal 源碼包 ava 去java官方地址下載相應的源碼包我下載的是1.8.0放在usr/local目錄下 export JAVA_HOME=/usr/local/jdk1.8.0export PATH=$JAVA_HOME

170502、linux配置jdk8

下載源 cal 配置 ges class jdk版本 文件 linu images 1、下載源碼包jdk-8u45-linux-x64.tar.gz(省略) 2、解壓 tar -zxvf jdk-8u45-linux-x64.tar.gz 3、配置jdk vi /e

Linux配置tomcat+apr+native應對高並發

狀態 iptables 安裝jdk 擁有 ack 請求 java_home 基本上 線程數 摘要:在慢速網絡上Tomcat線程數開到300以上的水平,不配APR,基本上300個線程狠快就會用滿,以後的請求就只好等待。但是配上APR之後,Tomcat將以JNI的形式調用A

奪命雷公狗---linux NO:42 linux編譯apache

amp ima -1 輸入 inux png apach logs lin 我們先來到apache官網下載他,地址:http://httpd.apache.org/ 鼠標右鍵將他的地址復制出來,然後到linux 服務器上進行 wget 將他下載出來,如下所示

8、Linux配置Java環境

root nbsp bin blog 信息 linux tar.gz span 都是 轉載:http://blog.sina.com.cn/s/blog_c5a35e780102wtxl.html 生物信息很多軟件都是用java寫的,所以需要在linux上配置java運行環

linux 配置靜態IP

dns privacy netmask fail conf ethernet 地址 gateway 配置 設置靜態網絡如下[[email protected] network-scripts]# pwd 進入這個路徑下 /etc/sysconfig/networ

linux配置java環境

nbsp 列表 ack www. eboot 系統屬性 zxvf 選擇 標準 1.首先要去下載好JDK,Java SE 8的官方網址是http://www.oracle.com/technetwork/java/javase/downloads/jdk8

linux配置squid代理

linux squid 代理工具、×××工具yum install -y squid (安裝squid服務)配置正向代理(企業中用於訪問控制等)vim /etc/squid/squid.conf (編輯squid配置文件) ...... acl http proto HTTP

linux配置雙網卡及RAC規劃——1

interface enc 必須 規劃 centos int scan add eth1 使用背景: 操作系統:centos 虛擬機:virtualbox RAC系統中需要雙網卡,一個為公共的網絡環境,一個為私有的網絡環境,從而需要搭建雙網絡。 在菜單FILE中選擇pr

Linux配置Tomcat8為系統服務

lin log linu lib class java_home detail apach 編輯 配置環境: CentOS7 + Tomcat8.0.35 + jdk1.8.0_131 1. 將$Tomcat_HOME/bin目錄下的Catalina.sh復制到目錄/et