httpdシリーズ-01-構成

8640 ワード

[TOC]

プロファイルの概要

  • プライマリプロファイルの場所:/etc/httpd/conf/httpd.conf
  • httpd -tプロファイルの構文に誤りがあるかどうかをテストします.
  • プロファイルは、grepコマンドで概略表示できる3つのセクションに分かれています.
  • [root@c2 conf]# grep "Section" httpd.conf
    ### Section 1: Global Environment
    ### Section 2: 'Main' server configuration
    ### Section 3: Virtual Hosts
    
  • さらに、Main serverとVirtual Hostsの構成は同時に有効な
  • しかありません.
  • は、/etc/http/conf.d/ディレクトリの下で定義することができる.confの最後のファイルで属性を定義したり、httpdを直接変更したりすることができます.confファイル
  • httpd.confプロファイルのコンテンツフォーマットは基本的に
    directive-name directive-value
    

    たとえば
    MaxKeepAliveRequests 100
    

    いくつかのコマンド

  • htpasswd:アクセス制御に必要なユーザーパスワードファイルの生成に使用
  • -c:新規ファイル
  • -m:
  • をmd 5で暗号化
  • -d:指定ファイルの指定ユーザ
  • を削除する.
    [root@c2 conf.d]# htpasswd -c -m /etc/httpd/.users tom
    New password: 
    Re-type new password: 
    Adding password for user tom
    [root@c2 conf.d]# htpasswd -m /etc/httpd/.users cat
    New password: 
    Re-type new password: 
    Adding password for user cat
    [root@c2 conf.d]# cat /etc/httpd/.users 
    tom:$apr1$j/IgPNIo$5zyp/tnoWrGencgOWlIYu/
    cat:$apr1$W.Vbd.1S$2er0pf.3dtKjP71L9VPJI1
    
  • httpd
  • -l:組み込みモジュールの表示:
  • -M:

  • [root@c2 conf.d]# httpd -l
    Compiled in modules:
      core.c
      prefork.c
      http_core.c
      mod_so.c
    

    共通構成の説明


    グローバル構成


    基本構成

    
    #  ,  : http://www.ha97.com/2505.html
    ServerTokens OS
    
    ## ServerRoot
    ServerRoot "/etc/httpd"
    
    ## PidFile run/httpd.pid
    PidFile run/httpd.pid
    
    # Timeout: The number of seconds before receives and sends time out.
    Timeout 60
    
    #  
    KeepAlive Off|On
    
    #  
    # 0 
    MaxKeepAliveRequests 100
    
    #  " ", : 
    KeepAliveTimeout 15
    
    # 
    # Listen 192.168.1.111:80
    Listen 80
    
    # Load config files from the config directory "/etc/httpd/conf.d".
    Include conf.d/*.conf
    
    #  worker 
    User apache
    Group apache
    

    LoadModule


    この命令はhttpdが起動する時にどのモジュールをロードするかを構成する.
    書式:
    LoadModule    ( )
    
    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule authn_file_module modules/mod_authn_file.so
    LoadModule authn_alias_module modules/mod_authn_alias.so
    LoadModule authn_anon_module modules/mod_authn_anon.so
    ........................
    

    Options

  • None:オプションはサポートされていません
  • Indexes:インデックスディレクトリ機能
  • FollowSymLinks:シンボルリンクの元のファイル
  • へのアクセスを許可するかどうか
  • Includes:サーバ側に(SSI-ServerSideInclude)
  • を含めることを許可するかどうか
  • SymLinksifOwnerMatch
  • ExecCGI:CGIスクリプトの許可
  • MultiViews:国際化などのコンテンツ交渉に関するマルチビュー技術サポート
  • All:すべてのオプションをサポート
  • Allow


    ホストベースのアクセス制御の定義
    #  
    Order allow,deny
    Allow from all
    
    #  192.168.0.1,172.16.100.177 
    Order from deny,allow
    Deny 192.168.0.1,172.16.100.177
    
    #  .ht 
    
        Order allow,deny
        Deny from all
        Satisfy All
    
    

    AllowOverride

    AllowOverride AuthConfig
    
    #  : 
    AuthType Basic
    
    #  
    AuthName "Restricted Site ..."
    
    #  
    AuthUserFile "/etc/httpd/conf/.users"
    # AuthGroupFile "/etc/httpd/conf/.groups"
    
    # AuthUserFile 
    Require valid-user
    #  tom 
    # Require user tom
    # Require group my_group_name
    

    Directory


    ローカルファイルシステム
    
        Options None
        AllowOverride AuthConfig
        AuthType Basic
        AuthName " "
        AuthUserFile /etc/httpd/conf/.users
        Require valid-user
    
    

    Location

    
        SetHandler server-status
        Order Deny,Allow
        Deny from all
        Alow from foo.bar.com
    
    

    Main server構成

    ServerAdmin root@localhost
    
    #
    # ServerName gives the name and port that the server uses to identify itself.
    # This can often be determined automatically, but we recommend you specify
    # it explicitly to prevent problems during startup.
    #
    # If this is not set to valid DNS name for your host, server-generated
    # redirections will not work.  See also the UseCanonicalName directive.
    #
    # If your host doesn't have a registered DNS name, enter its IP address here.
    # You will have to access it by its address anyway, and this will make 
    # redirections work in a sensible way.
    #ServerName www.example.com:80
    
    #
    # UseCanonicalName: Determines how Apache constructs self-referencing 
    # URLs and the SERVER_NAME and SERVER_PORT variables.
    # When set "Off", Apache will use the Hostname and Port supplied
    # by the client.  When set "On", Apache will use the value of the
    # ServerName directive.
    UseCanonicalName Off
    
    #  
    DocumentRoot "/var/www/html"
    
    #  
    DirectoryIndex index.html index.html.var
    
    #  MIME 
    TypesConfig /etc/mime.types
    
    #  MIME 
    DefaultType text/plain
    
    #  (access_log) client IP (Off) hostname(On)
    #  Off, 
    HostnameLookups Off
    
    ErrorLog logs/error_log
    
    # debug, info, notice, warn, error, crit,alert, emerg.
    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
    
    # combined LogFormat 
    CustomLog logs/access_log combined
    
    #  
    Alias /icons/ "/var/www/icons/"
    

    仮想ホスト構成


    仮想ホストとMain Serverは同時に1つしか機能しません.DocumentRootを注釈すると、仮想ホストに対するMain Serverの構成をhttpdで直接無効にすることができます.confで定義を編集するも、/etc/http/conf.d/ディレクトリで定義してもよい.confの最後のファイルで定義します.
    # Use name-based virtual hosting.
    #NameVirtualHost *:80
    
    # VirtualHost example:
    # Almost any Apache directive may go into a VirtualHost container.
    # The first VirtualHost section is used for requests without a known
    # server name.
    #
    
        ServerAdmin [email protected]
        DocumentRoot /www/docs/dummy-host.example.com
        ServerName dummy-host.example.com
        ErrorLog logs/dummy-host.example.com-error_log
        CustomLog logs/dummy-host.example.com-access_log common
    
    

    ホスト名、IP、ポートの混合に基づく仮想ホスト定義例:
    
    Listen 8080
    
    #  IP ,80 
    # NameVirtualHost *:80
    
    
        ServerName my-host-1.com
        DocumentRoot /web/htdocs/1
        CustomLog logs/referer_log combined
        
            Options Indexes
            AllowOverride None
            Order deny,allow
            #  192.168.1.106 
            Deny from 192.168.1.106
        
    
    
    
        ServerName my-host-2.com
        DocumentRoot /web/htdocs/2
    
    
    
        ServerName my-host-3.com
        DocumentRoot /web/htdocs/3
    
    
    
        #  :Listen 8080
        ServerName my-host-4.com
        DocumentRoot /web/htdocs/4
        
            Options None
            AllowOverride AuthConfig
            AuthType Basic
            AuthName " "
            AuthUserFile /etc/httpd/conf/.users
            Require valid-user
        
    
    

    MPM関連の構成


    MPMに関する情報は以下のMPM章をご覧ください間の構成は、対応するモジュールpreforkが有効になっている場合にのみ有効になります.その他は同様です.
    
    #  
    StartServers       8
    #  
    MinSpareServers    5
    #  
    MaxSpareServers   20
    # MaxClients 
    ServerLimit      256
    #  
    MaxClients       256
    #  
    # , 
    MaxRequestsPerChild  4000
    
    
    
    
    StartServers         4
    MaxClients         300
    #  
    MinSpareThreads     25
    #  
    MaxSpareThreads     75 
    ThreadsPerChild     25
    MaxRequestsPerChild  0
    
    
    

    MPM


    Multi Process Modules

    いくつかのMPMモデル

  • mpm_winnt
  • prefork
  • 要求はプロセス応答
  • である.
  • 安定
  • 低性能
  • worker
  • 各プロセスは、複数のスレッド
  • を生成する.
  • 要求は、
  • に1つのスレッドで応答する.
  • event
  • プロセスは、要求
  • を処理する.

    各モデルに対応する起動スクリプトは次のとおりです.
    /usr/sbin/httpd
    /usr/sbin/httpd.event
    /usr/sbin/httpd.worker
    

    各MPMモデルのデフォルトモジュール
    [root@c2 conf.d]# httpd -l
    Compiled in modules:
      core.c
      prefork.c
      http_core.c
      mod_so.c
    [root@c2 conf.d]# httpd.worker -l
    Compiled in modules:
      core.c
      worker.c
      http_core.c
      mod_so.c
    [root@c2 conf.d]# httpd.event -l
    Compiled in modules:
      core.c
      event.c
      http_core.c
      mod_so.c
    

    httpのMPMを修正する

    vim /etc/sysconfig/httpd
    

    HTTPD構成を変更すればよい
    #HTTPD=/usr/sbin/httpd.worker