Fedora Core 4 Apache


Apache2.0.55 のソースファイルの入手・展開

ユーザーディレクトリへ移動

$ cd /home/[UserName] 

ソースファイル用ディレクトリの作成

$ mkdir src 
$ cd src 

APACHEのWebサイトよりソースファイルを取得
ここでは執筆時の最新バージョン2.0.55を選択してます。
最新バージョンを確認して相応に置き換えてください
APACHEのWebページ http://httpd.apache.org/

$ wget http://www.apache.org/dist/httpd/httpd-2.0.55.tar.gz

DLしたファイルを解凍

$ tar xfz httpd_2.0.55.tar.gz 

コンフィグ・コンパイル・インストール

解凍したファイルのディレクトリへ

$ cd httpd_2.0.55

コンフィグする 必要に応じて各自オプションを設定してください。
私はrewriteモジュールの使用、SSLの使用、WevDAVを未使用のオプションを設定しています。
オプションについては公式のコンパイルとインストールconfigure(英文)を参照してください。

$ ./configure --enable-rewrite --enable-ssl --disable-dav

※ここでAPRのエラーで止まる場合(2007.01.10 追記)

  ・
  ・
  ・
Configuring Apache Portable Runtime Utility library...

checking for APR-util... yes
configure: error: Cannot use an external APR-util with the bundled APR

このエラーが出た場合下記の方法で対応できます。

configure のオプションに下記のいずれかを付加してみてください。

-with-bundled-apr

-with-included-apr

-with-internal-apr

すべてのエラーが無くなりconfigureが終了したら、make(コンパイル)を行います。
(上記でSSLの使用を宣言しているとかなり時間がかかります。)

$ make 

rootに昇格してインストールを実施

$ su - 
$ [root Password] 
$ cd /home/[UserName]/src/httpd_2.0.55
$ make install 

特にエラーメッセージが表示されなければインストール完了です。

以上でAPACHEの標準インストール完了

設定ファイル変更

上記の方法でインストールを行った場合はインストールディレクトリは
/usr/local/apache2
になっています。
設定ファイルは /usr/local/apache2/conf
にあるhttpd.confのファイルが設定ファイルです。
これを必要に応じて編集します。

ここでは
○主のWWW用標準ディレクトリの設定
○ユーザディレクトリの設定
○基本認証の有効設定
○CGIディレクトリの設定と動作設定
をまず行います。

このあとPHP4をインストールした際に、PHPを有効にするための設定はPHPの章で後述します

rootに昇格しapacheの設定ディレクトリへ移動

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

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

# vi httpd.conf  

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

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

デフォルトで使用するポートは8080になっていますので80に変更します

#
# Port: The port to which the standalone server listens. For
# ports < 1023, you will need httpd to be run as root initially.
#
Port 8080
  ↓
Port 80

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

#ServerName xxxxxxxxx
  ↓
ServerName xxxxxxxxx

http://www.XXXX.YY.ZZ/で使用するhtmlの設置ディレクトリを変更します。
私はユーザと同じようにFTPからアップが行いやすいように/home以下に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"

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

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

基本認証を有効にしますので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

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

次にユーザーディレクトリの設定を変更します
デフォルトではコメントアウトされていますので http://www.XXXX.YY.ZZ/~username/ のように各ユーザーに対してディレクトリを用意する場合はこの変更を行ってください。
ここでは各ユーザーのドキュメントフォルダは /home/(UserName)/public_html にしています。
ユーザー管理レベルに応じて設定を変更してください。

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>
  ↓
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#       Order deny,allow
#        Deny from all
#    </LimitExcept>
 </Directory>

ここまでがユーザーディレクトリの設定です。

次にhttp://www.XXXX.YY.ZZ/ のようにファイル名を指定しない場合に呼び出すDirectory Indexの設定を行います。
私はPHP4も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>

アクセスログについてです。
アクセスログ内にIPアドレスでアクセス元を記録するかドメインで記録するか設定を行います
デフォルトではIPアドレスでの記録になっています
管理の厳密さから言えばIPアドレスでの記録が望ましいのですが、どうしてもドメインがいいという方はこの修正を行ってください。
ただし処理に若干の負担がかかります。
アクセスが多く見込まれるサーバーに対しては不向きです。

#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
  ↓
HostnameLookups On

アクセスログの記録にいくつか種類があり、一番詳細に記録してくれる方法が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 /usr/local/apache2/logs/access_log common

#
# If you would like to have agent and referer logfiles, uncomment the
# following directives.
#
#CustomLog /usr/local/apache2/logs/referer_log referer
#CustomLog /usr/local/apache2/logs/agent_log agent

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

#CustomLog /usr/local/apache2/logs/referer_log referer
#CustomLog /usr/local/apache2/logs/agent_log agent

CustomLog /usr/local/apache2/logs/access_log combined

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

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

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

    #AddHandler cgi-script .cgi
  ↓
    AddHandler cgi-script .cgi

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

AddType application/x-httpd-php .php

現時点でのAPACHEの稼動状況を見る事が出来ます。
利用する場合はこの設定を修正してください。
ただし、利用できるIPアドレスの制限をかけることを忘れないでください。
ここではローカルIP(192.168.0.0~192.168.0.255)からのみ利用可能にしてあります

#
# Allow server status reports, with the URL of http://servername/server-status
# Change the ".your-domain.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .your-domain.com
#</Location>

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 192.168.0.
</Location>

ここでは、基本的な設定方法だけとさせてもらいます
この他にAPACHEでのPROXY設定、VirtualHostの設定が可能です。
ここで説明するには奥が深く専門的になりますので、他のサイトを検索して参照ください
APACHEにはもっと専門的、詳細な設定ができます

実際、私の場合はもう少し細かいチューニング設定を行っています。
運用しながら徐々に設定を変更させて、自分の環境にあった設定を見つけてください。

ここまでで設定ファイルの修正が完了です。
APACHEを起動してみましょう

# /usr/local/apache2/bin/apachectl start  

ここで下記の表示が出ていれば設定OKです

# /usr/local/apache2/bin/apachectl start: httpd started  

起動確認・自動起動設定

プロセスを見て起動を確認してみます。

# ps -aef | grep httpd
root     29486     1  0 15:41 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
nobody   29579 29486  0 15:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
nobody   29580 29486  0 15:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
nobody   29581 29486  0 15:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
nobody   29582 29486  0 15:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
nobody   29583 29486  0 15:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
root     29826  9188  0 16:19 pts/0    00:00:00 grep httpd

一回終了させて、自動起動の設定をします。

# /usr/local/apache2/bin/apachectl stop

自動起動の設定は /etc/rc.d/init.d の配下で設定します。

# cd /etc/rc.d/init.d

エディタで httpd のファイル名で作成します。

# vi httpd

下記のスクリプトを入力。

#!/bin/sh
# startup/shutdown/restart script for Apache (/usr/local/apache2/bin/httpd)

APACHE_HOME=/usr/local/apache2 CONF_FILE=/usr/local/apache2/conf/httpd.conf
PIDFILE=/usr/local/apache2/logs/httpd.pid

if [ ! -f ${CONF_FILE} ]; then
exit 0
fi

case "$1" in
'start')
        /bin/rm -f ${PIDFILE}
        cmdtext="starting"
        cmdarg="start"
        ;;

'stop')
        cmdtext="stopping"
        cmdarg="stop"
        ;;

'restart')
        cmdtext="restarting"
        cmdarg="restart"
        ;;

*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

echo "httpd $cmdtext."

status=`${APACHE_HOME}/bin/apachectl $cmdarg 2>&1`

if [ $? != 0 ]; then
        echo "$status"
        exit 1
fi
exit 0

実行用のパーミッションを設定します

# chmod +x httpd  

各起動レベルにリンクをはります。

$ cd ../rc3.d/  
$ ln -s ../init.d/httpd S85httpd  
$ cd ../rc4.d/  
$ ln -s ../init.d/httpd S85httpd  
$ cd ../rc5.d/  
$ ln -s ../init.d/httpd S85httpd  

以上で自動起動の設定が完了です。

自動起動のスクリプトが正しく設定されたか確認します。

# /etc/rc.d/init.d/httpd start
httpd starting.

以上でAPACHEの自動起動設定は終了です。

ログローテーション設定

ログはほっておくとどんどん肥大化しますので定期的に分割するように設定をしてみましょう。
大きく分けて2種類の方法があります。
システムに任せる方法(logrotateを使用する方法)
apache自体に任せる方法(httpd.conf内にrotatelogsを指定する方法)が、あります。どちらも一長一短です。
ここでは、システムに任せる方法(logrotateを使用する方法)について記載します。

システム自体のログローテーションの設定ファイルは /etc/logrotate.d にあります。
ここで httpd というファイルがなければ新規に作成します。
すでに存在している場合は、下記のように修正してください。
なければ新規に作成します。。

/usr/local/apache2/logs/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
       /bin/kill -HUP `cat /usr/local/apache2/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

以上でapacheの設定は終了です。*/



Last-modified: 2015-04-23 (木) 15:18:15 (964d)