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-*
解凍したディレクトリに移動します。
# cd httpd-2.2.3
Apache を動作させるユーザとグループを作成します。
# groupadd -g 300 httpd # useradd -g httpd -u 300 -c "Apache Daemon User" httpd
コンパイルとインストールを開始します。コンパイルオプションの説明は、記事の末尾に講義外の資料として記載されています。コンパイルの際は今回は用意しましたが、--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
今回は環境を統一するために 「/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
User daemon
↓
User httpd
Group daemon
↓
Group httpd
ServerAdmin you@example.com
↓
ServerAdmin xxx@k.hosei.ac.jp
#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
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!
と表示されるか確認して下さい。
今回の操作で一般的に起こるエラーの対策を記載します。
httpd.conf の Include conf/extra/httpd-userdir.conf の指定が間違っている可能性があります。
許可のないファイルにアクセスしています。今回の設定では、/var/log/httpd/error_log にエラーログが残ります。正しくパーミッションが設定されているか確認して下さい。また、確認する際、root ユーザでなければエラーログを見ることが出来ないので注意してください。
項目 | 内容 |
---|---|
--prefix=/usr/local/httpd | 指定したディレクトリにインストールする |
--enable-userdir | ユーザ領域の利用を可能にする |
--enable-deflate | deflate変換を有効にする |
--enable-so | モジュールを動的に読み込む |
--enable-ssl | SSL接続を有効にする |
--enable-suexec | CGIを一般ユーザ権限で動かす |
--with-mpm=prefork | 他(主にサードパティ)のモジュールとの競合を防ぐ |
--with-ssl=/usr | SSLの保存場所 |
--with-suexec-bin=/usr/local/httpd/bin/suexec | suEXECを行う実行ファイルの位置 |
--with-suexec-caller=httpd | suEXECをコールするユーザ |
--with-suexec-userdir=public_html | suEXECを行うユーザ領域 |
--with-suexec-docroot=/home | suEXECを行うファイルの保存場所 |
--with-suexec-logfile=/var/log/httpd/suexec_log | suEXECのログの保存場所 |