サーバリテラシ2006 - 第4回 Apacheインストール

lin

Apache インストール

ソースファイルの用意

Apache のソースファイルを保存するディレクトリを作成します。今回は環境を統一するために 「/usr/local/src/」 ディレクトリ以下に保存します。
root ユーザに変更します。

$ su -

ソースファイルを保存するディレクトリを作成します。

# mkdir /usr/local/src/httpd

作成したディレクトリに移動します。

# cd /usr/local/src/httpd

ソースファイルのダウンロードを行います。本家サイトに記載されているミラーサーバからでは時間がかかる場合があるため、学内サーバである storage サーバからソースファイルをダウンロードします。本家サイトの URL は http://www.apache.org/ です。storage サーバは学外から繋ぐ事が出来ないので注意してください。

# wget http://storage.cis.k.hosei.ac.jp/pub/apache/httpd/httpd-2.2.3.tar.gz

ダウンロードしたファイルを解凍します。

# tar zxf httpd-2.2.3.tar.gz
# chown -R root: httpd-*
chown コマンドはファイル/ディレクトリの所有ユーザ/グループを変更するコマンドです。

解凍したディレクトリに移動します。

# cd httpd-2.2.3

コンパイルとインストール

Apache を動作させるユーザとグループを作成します。

# groupadd -g 300 httpd
# useradd -g httpd -u 300 -c "Apache Daemon User" httpd
-g はグループIDの指定、-u はユーザIDの指定、-c はコメントを指定します。

コンパイルとインストールを開始します。コンパイルオプションの説明は、記事の末尾に講義外の資料として記載されています。コンパイルの際は今回は用意しましたが、--helpを使用してどのようなオプションがあるのか理解してから行ってください。

# ./configure --help
"./configure" \
"--prefix=/usr/local/httpd" \
"--enable-userdir" \
"--enable-deflate" \
"--enable-so" \
"--enable-ssl" \
"--enable-suexec" \
"--with-mpm=prefork" \
"--with-ssl=/usr" \
"--with-suexec-bin=/usr/local/httpd/bin/suexec" \
"--with-suexec-caller=httpd" \
"--with-suexec-userdir=public_html" \
"--with-suexec-docroot=/home" \
"--with-suexec-logfile=/var/log/httpd/suexec_log"
# make
# make install

Apacheの設定

今回は環境を統一するために 「/etc/」 ディレクトリ以下に設定ファイルを保存します。設定ファイルを置くディレクトリを作成します。

# mkdir /etc/httpd

作成したら、設定ファイルを適切な位置に配置し シンボリックリンクを作成します。

# mv /usr/local/httpd/conf /etc/httpd/
# ln -s /etc/httpd/conf /usr/local/httpd/conf

設定ファイルを編集します。

# vi /etc/httpd/conf/httpd.conf
Apacheを動作させるユーザ
User daemon

User httpd
Apacheを動作させるグループ
Group daemon

Group httpd
管理者のメールアドレス
ServerAdmin you@example.com

ServerAdmin xxx@k.hosei.ac.jp
サーバのIPアドレスと利用するポート
#ServerName www.example.com:80

ServerName 10.0.10.1xx:80
エラーログの保管位置
ErrorLog logs/error_log

ErrorLog /var/log/httpd/error_log
アクセスログの保管位置
CustomLog logs/access_log common

CustomLog /var/log/httpd/access_log common
一般ユーザディレクトリの拡張設定を読み込む
#Include conf/extra/httpd-userdir.conf

Include conf/extra/httpd-userdir.conf

今回は環境を統一するために 「/etc/init.d/」 ディレクトリ以下に起動スクリプトを保存します。起動スクリプトを 「/etc/init.d/httpd」 にコピーします。

# cp ./build/rpm/httpd.init /etc/init.d/httpd

起動ファイルを書き換えます。

# vi /etc/init.d/httpd

httpd=${HTTPD-/usr/sbin/httpd} は2箇所あります。コメントアウトされていない側なので、注意して下さい。

apachectl=/usr/sbin/apachectl

apachectl=/usr/local/httpd/bin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}

httpd=${HTTPD-/usr/local/httpd/bin/httpd}

今回は環境を統一するために 「/var/log/」 ディレクトリ以下に、ログファイルを保存場所します。ログファイルを置くディレクトリを作成します。

# mkdir /var/log/httpd
# chmod 700 /var/log/httpd
# chown httpd: /var/log/httpd

httpd の起動

Apache のデーモンである httpd を起動します。

# /etc/init.d/httpd start

起動時に自動起動するようにします。

# chkconfig --add httpd
# chkconfig --level 345 httpd on

ランレベルの3,4,5がオンになっているか確認してください。

# chkconfig --list | grep httpd

3.4.5がオンになると次のように表示されます。

httpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

動作確認

第3回を参考にして、PuTTYで源ポート10080を使ってポート80番をフォワーディングしてください。

httpd が動いているか確認します、一般ユーザ権限に戻ってください。

# exit

http://localhost:10080/ にブラウザでアクセスして下さい。動作している場合

It Works!

と表示されます。次はユーザ領域へのアクセスの動作確認です、ファイルを置くディレクトリを作成します。

$ mkdir /home/ユーザ名/public_html

作成したらテスト用のインデックスファイルを作成します。

$ vi /home/ユーザ名/public_html/index.html
<html><body>test!</body></html>

Escキーを押してから

:wq

と入力し、保存します。ディレクトリとファイルのアクセス許可が正しく設定されていないと表示することができません、パーミッションの変更をします。root ユーザで行ってください。

$ su -
# chmod 750 ~ユーザ名
# chgrp httpd ~ユーザ名

http://localhost:10080/~ユーザ名/ にアクセスして

test!

と表示されるか確認して下さい。

トラブルシューティング

今回の操作で一般的に起こるエラーの対策を記載します。

404 NotFound

httpd.conf の Include conf/extra/httpd-userdir.conf の指定が間違っている可能性があります。

403 Forbidden

許可のないファイルにアクセスしています。今回の設定では、/var/log/httpd/error_log にエラーログが残ります。正しくパーミッションが設定されているか確認して下さい。また、確認する際、root ユーザでなければエラーログを見ることが出来ないので注意してください。

コンパイルオプションの詳細(講義外)

項目内容
--prefix=/usr/local/httpd指定したディレクトリにインストールする
--enable-userdirユーザ領域の利用を可能にする
--enable-deflatedeflate変換を有効にする
--enable-soモジュールを動的に読み込む
--enable-sslSSL接続を有効にする
--enable-suexecCGIを一般ユーザ権限で動かす
--with-mpm=prefork他(主にサードパティ)のモジュールとの競合を防ぐ
--with-ssl=/usrSSLの保存場所
--with-suexec-bin=/usr/local/httpd/bin/suexecsuEXECを行う実行ファイルの位置
--with-suexec-caller=httpdsuEXECをコールするユーザ
--with-suexec-userdir=public_htmlsuEXECを行うユーザ領域
--with-suexec-docroot=/homesuEXECを行うファイルの保存場所
--with-suexec-logfile=/var/log/httpd/suexec_logsuEXECのログの保存場所