CentOS 5/apache2.2系設定方法 httpd.conf



前書き (執筆:2008/09/09)

このページではapache 2.2系の設定方法を記載します。
基本的な設定方法だけを抜粋して記載していますので、各自運用環境に合わせて修正を行ってください。

基本設定 httpd.conf

apache2.2系の設定ファイルは コンフィグ時に特に指定しなければ /usr/local/apache2/conf/httpd.conf になります。
インストール先を指定した場合は /指定先ディレクトリ/conf/httpd.conf となります。

ここでは

  • 主のWWW用標準ディレクトリの設定
  • ユーザディレクトリの設定
  • 基本認証の有効設定
  • CGIディレクトリの設定と動作設定

をまず行います。
このあとPHPをインストールした際に、PHPを有効にするための設定はPHPの章で後述します
VirtualHostなどの設定は必要に応じて各自、追加してください。

rootになりapacheの設定ディレクトリへ移動

$ su -  
password: [root Password]  
# cd /usr/local/apache2/conf  

テキストエディタで修正を開始します

# vi httpd.conf

PosrgreSQL用ライブラリの組み込み

PostgreSQL用のライブラリを組み込みます
LoadModule 項目の前に下記の行を追記します。

	LoadFile /usr/local/pgsql/lib/libpq.so

動作グループ・ユーザーの設定

apacheを稼動させるユーザーとグループを設定します。
デフォルトでは daemon になっていますので、各自の運用環境に合わせて修正します。
ここでは例として nobody で設定しています。

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
  ↓
User nobody
Group nobody

ServerAdmin の設定

ServerAdmin がデフォルトでは you@example.com になっていますので、適切なものに修正します。

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin you@example.com
  ↓
ServerAdmin administrator@XXXXX.XXX

 ここでは例として administrator@XXXXX.XXX にしています。

ServerName の設定

ServerNameがコメントアウトされてますので有効にして任意の名前をつけます

#
# 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 your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80
  ↓
ServerName XXXXXXXXXX.XXX

 ここでは例として XXXXXXXXXX.XXX にしています。

DocumentRootの設定

ドメインのトップ(ドキュメントルート:http://XXXXXXXXXX.XXX/)で使用するhtmlの設置ディレクトリを変更します。
私はユーザと同じようにFTPからアップが行いやすいように/home以下にwwwディレクトリを作ってそこを基本ディレクトリにしています。
運用スタイルによっては /var/www 配下に設置する方法もあります。
各自管理・運営のしやすい方法・場所に設置してください。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache2/htdocs"
  ↓
DocumentRoot "/home/www/htdocs"

DocumentRootの動作設定

ここからは基本ディレクトリに対しての変更です。
先ほど変更したディレクトリに合わせて書き直します

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/apache2/htdocs">
  ↓
<Directory "/home/www/htdocs">

ディレクトリの中身をリスト表示する場合は デフォルトのままで構いませんが、セキュリティ的に望ましくない場合もあります。
リスト表示を行わないように Indexes を取り除きます。

    Options Indexes FollowSymLinks
  ↓
    Options FollowSymLinks

基本認証を有効にしますのでAuthConfig もしくは Allに変更します

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride None
  ↓
    AllowOverride All

ここまでは基本ディレクトリの設定です。

DirectoryIndexの設定

次にhttp://www.XXXX.YY.ZZ/ のようにファイル名を指定しない場合に呼び出すDirectory Indexの設定を行います。
各自運用形態に合わせて追加・修正してください。
記載した順序が優先順位になりますので注意してください

#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>
  ↓
<IfModule mod_dir.c>
    DirectoryIndex index.html index.htm index.php
</IfModule>

アクセスログの設定

アクセスログについてです。
アクセスログの記録にいくつか種類があり、一番詳細に記録してくれる方法がcombined です。
不正アクセスの検知、アクセス元、アクセスブラウザなど詳細に知りたい場合はこの方法を有効にしてください。
各自管理レベルに合わせて変更を行ってください。

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
  ↓
    #CustomLog "logs/access_log" common

    CustomLog "logs/access_log" combined

CGI用 ScriptAliasの設定

次にCGIのエイリアスについての設定です
どこのディレクトリでCGIを稼動させるかの設定になります。
適切な場所で稼動させないと、危険な状態になります。
ここでは、先のドキュメントルートを /home/www/htdocs に設定しましたので、CGIディレクトリを /home/www/cgi-bin/ としています。

<IfModule alias_module>
  ・
  ・
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

</IfModule>
  ↓
<IfModule alias_module>
  ・
  ・
    ScriptAlias /cgi-bin/ "/home/www/cgi-bin/"

</IfModule>

CGIディレクトリの動作設定

次にCGIディレクトリについての設定です
デフォルトではCGIの動作は有効になっていません。
.cgi を使用する場合はこの修正を行ってください。
また前に設定したCGIディレクトリに記述を合わせておきます。

    <Directory "/usr/local/apache2/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
  ↓
    <Directory "/home/www/cgi-bin">
        AllowOverride None
        Options ExecCGI
    </Directory>

CGI用ハンドラ(拡張子)の設定

CGIの動作を有効にした場合、拡張子cgiがCGIスクリプトとして認識するようにHandlerの設定を有効にします。

   #
   # AddHandler allows you to map certain file extensions to "handlers":
   # actions unrelated to filetype. These can be either built into the server
   # or added with the Action directive (see below)
   #
   # To use CGI scripts outside of ScriptAliased directories:
   # (You will also need to add "ExecCGI" to the "Options" directive.)
   #
   #AddHandler cgi-script .cgi
  ↓
   AddHandler cgi-script .cgi

PHP用ハンドラ(拡張子)の設定

PHPを有効にするための拡張子を設定します。
記述があってコメントアウトされている場合、記述がない場合があります。
各自確認して必要に応じて修正してください

AddType application/x-httpd-php .php

言語設定ファイルの読み込み設定

次に、言語(国)設定です。
外部ファイルになっているので外部ファイルからの読込を許可します。

# Language settings
#Include conf/extra/httpd-languages.conf
  ↓
# Language settings
Include conf/extra/httpd-languages.conf

そのほか各種設定ファイルの読み込み設定

このほか、各種追加設定も外部ファイルになっているので必要に応じて読込を許可します。
MIME Magicの設定

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile conf/magic
  ↓
MIMEMagicFile conf/magic

ユーザーディレクトリの設定

# User home directories
#Include conf/extra/httpd-userdir.conf
  ↓
Include conf/extra/httpd-userdir.conf

Virtual Hostの設定

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
  ↓
Include conf/extra/httpd-vhosts.conf

SSLの設定

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
  ↓
Include conf/extra/httpd-ssl.conf

ここでは、基本的な設定方法だけとさせてもらいます
この他にAPACHEでは様々な設定が可能です。
ここで説明するには奥が深く専門的になりますので、他のサイトや書籍を参照ください



Last-modified: 2015-04-23 (木) 15:33:48 (1275d)