このページではLinux上でApache/httpdを使ってWebサーバー構築するために必要な準備を初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Webサーバーの構築

Webサーバーについて

Apacheの構成と設定の準備

全般的な動作環境の設定

コンテナディレクティブの形式

コンテナディレクティブの設定

ドキュメントルートの設定等

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

バーチャルホストの設定

CGIの実行許可の設定

ユーザー認証機能の設定

httpdのコントロール

httpdの動作チェック

ポートフォワーディングの設定


Apacheの構築に必要なファイル

この コンテンツ に従って普通に WBEL CentOS インストール すると、 Apache とその設定に必要なファイル類は既に 構築中のLinuxサーバー にインストールされているはずです。

以下に、WBELおよびCentOSにインストールされているApacheで、操作や設定が必要なファイルを示します。

それ以外の ディストリビューション をお使いの場合や、標準添付以外のパッケージをインストールした場合には、ファイル名やディレクトリの パス が以下とは異なる場合がありますので注意してください。

Apacheの必要ファイル一覧
Apacheの必要ファイル一覧

Apacheの本体プログラムは"/usr/sbin/httpd"ですが、これを直接呼び出すことはまずありません。

実際にはこの"/usr/sbin/httpd"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/httpd" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/httpd" でも呼び出すことができます。

例えば、

"/etc/init.d/httpd start" →httpdの起動

"/etc/init.d/httpd stop" →httpdの停止

という使い方になります。

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできませんので注意してください。

Apacheの設定ファイルの中心は "/etc/httpd/conf/httpd.conf" です。

Apacheはほとんどの動作についてこの"/etc/httpd/conf/httpd.conf"の内容を参照します。

またApacheの補助プログラムの多くは、モジュールとして最初からApache組み込まれる形になっていて、そのモジュールの設定ファイルのいくつかは、"/etc/httpd/conf.d/"以下にまとめて収められています。

またこのディレクトリに"/etc/httpd/conf/httpd.conf"の書式に基づいて部分的に記述を行った テキスト ファイルを、 "*.conf" というファイル名で保存すると、その内容は"/etc/httpd/conf/httpd.conf"とみなされて動作します。

"/etc/httpd/conf/httpd.conf"の記述が煩雑になってきたときは、設定のひとまとまりを独立させて "/etc/httpd/conf.d/*.conf" として保存するようにすると整理がしやすくなります。

このページの先頭へ↑

"/etc/httpd/conf/httpd.conf"の編集

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンド アカウント "root" に変更し、 cp コマンドでバックアップを作成した後、 nano エディタで "/etc/httpd/conf/httpd.conf" を開きます nanoエディタでファイルを開く

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd
.conf.org
Enter
[root@web1 ~]# nano /etc/httpd/conf/httpd.confEnter


nanoで/etc/httpd/conf/httpd.confを開く
nanoで"/etc/httpd/conf/httpd.conf"を開く

"/etc/httpd/conf/httpd.conf" は、 httpd が動作中でも自由に書き換えることができます。

ただし、 WBEL CentOS サーバー アプリケーション は通常、設定ファイルを保存しただけでは設定は反映されません。もちろんhttpdもその例外ではありません。

サーバーアプリケーションの設定ファイルは、通常サーバーアプリケーションの起動時に参照されて読み込まれますから、設定ファイルの保存後にサーバーアプリケーションの再起動を行うか、設定ファイルの再読み込みのコマンドを実行しなければ、設定ファイルの修正は有効になりませんので注意してください。

httpdの再起動、設定ファイルの再読み込みについては、 httpdのコントロールについて で説明します。

このページの先頭へ↑

httpd設定の準備

httpd の設定ファイル "/etc/httpd/conf/httpd.conf" は、 デフォルト でも1,000行に及ぶ巨大な設定ファイルです。

httpd_conf_wbel3_org.txt ←WBEL3のデフォルトのhttpd.conf
httpd_conf_cent3_org.txt ←CentOS3のデフォルトのhttpd.conf
httpd_conf_wbel4_org.txt ←WBEL4のデフォルトのhttpd.conf
httpd_conf_cent4_org.txt ←CentOS4のデフォルトのhttpd.conf
httpd_conf_cent5_org.txt ←CentOS5のデフォルトのhttpd.conf

もっとも、その大部分は "#" で始まる解説のためのコメント文で占められていますから、実際の設定部分はその一部に過ぎません。

とはいえ、 sshd vsFTPd になどと比べると非常に多くの設定項目がありますし、設定内容そのものも、"YES"や"NO"で選択するタイプよりも具体的なパラメータを入力するパターンが多いのが特徴です。

従って、自分ではきちんと設定したつもりでも必ず「思い違い」や「見落とし」が必ずあります。

比較的設定項目の少ない vfFTPd sshd などは設定の間違いを見つけやすいので、一通りの設定をしてから デーモン を起動させても大丈夫です。

しかしhttpdのように設定項目の多い サーバー アプリケーション では、一度にたくさんのキーワードに設定を行うと、不具合があったときに後から原因のキーワードを見つけるのは大変な作業になります。

httpdの設定のコツは、「すべてを完璧に設定してから動作チェック」ではなく、 「実際に動作させてみながら試行錯誤で設定してゆく」 のが、望ましい設定手順といえるでしょう。

そのためには、設定をチェックするためのhtmlファイルを、 FTP クライアント機 から サーバー機 に送るための環境を作っておく必要があります。

以下にその方法を説明します。

ドキュメントルートのユーザーパーミッションの変更

httpd では、 サーバー 上の コンテンツ 収容ディレクトリ (ドキュメントルート) として、 デフォルト では "/var/www/html/" が指定されています。

いきなりApacheを起動してみる では、 コマンド 操作でサーバー上に直接 htmlファイル を作成しましたが、htmlファイルは普通そういう作り方はしません。

一般的には、 クライアント機 上で、ホームページ作成用の適当な アプリケーション を使って作成したものを、 FTPクライアント サーバー に送信します。

ただ、デフォルトの"/var/www/html/"は、所有者、所有グループとも "root" で、 パーミッション "755" に設定されていますから パーミッション755について 、一般の ユーザーアカウント からは FTP でのデータ送信はできません。

そこで、これを可能にするために、この"/var/www/html/"と、 CGI スクリプト を格納する "/var/www/cgi-bin/" の二つのディレクトリの所有者と所有グループを、 chown コマンドで、あなた専用の一般ユーザーアカウントに変更してしまいましょう。

SSHクライアント から 構築中のLinuxサーバー ログイン して、以下のように操作してください。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cd /var/wwwEnter cdコマンドの説明
[root@web1 www]# ls -lEnter lsコマンドの説明
合計 24
drwxr-xr-x  2 root   root     4096 7月 1 2005 cgi-bin
drwxr-xr-x  3 root   root     4096 10月 25 10:14 error
drwxr-xr-x  2 root   root     4096 1月 2 09:43 html
drwxr-xr-x  3 root   root     4096 10月 25 10:14 icons
drwxr-xr-x  3 root   root     4096 7月 21 14:14 manual
drwxr-xr-x  2 webalizer root     4096 12月 21 04:02 usage
[root@web1 www]# chown tanaka.tanaka -R html/Enter
[root@web1 www]# chown tanaka.tanaka -R cgi-bin/Enter
[root@web1 www]# ls -lEnter lsコマンドの説明
合計 24
drwxr-xr-x  2 tanaka  tanaka    4096 7月 1 2005 cgi-bin
drwxr-xr-x  3 root   root     4096 10月 25 10:14 error
drwxr-xr-x  2 tanaka  tanaka    4096 1月 2 09:43 html
drwxr-xr-x  3 root   root     4096 10月 25 10:14 icons
drwxr-xr-x  3 root   root     4096 7月 21 14:14 manual
drwxr-xr-x  2 webalizer root     4096 12月 21 04:02 usage
[root@web1 www]#

これで、"/var/www/html/"と"/var/www/cgi-bin/"の二つのディレクトリは、ユーザーアカウント"tanaka"で書き換えが可能になりました。

"tanaka"にFTP接続で上位ディレクトリ参照許可を与える

もしも、 ユーザーアカウント "tanaka" FTP 接続で、 ホームディレクトリ より上位のディレクトリを参照できないように設定されているときは、"/var/www/html/"と"/var/www/cgi-bin/"に FTPクライアント から直接ファイルを送信することができません。

そこで、この制限を解除してしまいましょう。

vsFTPd の「ローカルユーザーからの接続の設定」の「上位ディレクトリの参照許可の設定」 上位ディレクトリの参照許可の設定(WBWL3,CentOS3,WBEL4,CentOS4) 上位ディレクトリの参照許可の設定(CentOS5) を参考に、ローカルユーザー "tanaka" に「上位ディレクトリ参照」の許可設定を与えてください。

これで"tanaka"からFTPで 構築中のLinuxサーバー に接続して、直接"/var/www/html/"と"/var/www/cgi-bin/"にファイルを送信できるようになります。

設定が終わったら、以下のようにFTPクライアントから接続してみてください。

接続が完了すると、サーバー側の"/var/www/html/"と"/var/www/cgi-bin/"の所有者が数字(この場合は500)で表示されていることがお解かりと思います( の部分です)。

この "500" という数字は、 構築中のLinuxサーバー 上のユーザーアカウント"tanaka"を示すIDです。

サーバー側ディレクトリを/var/www/に指定して接続
サーバー側ディレクトリを"/var/www/"に指定して接続

↓接続

これで、"tanaka"はFTP接続で"/var/www/html/"と"/var/www/cgi-bin/"にファイル送信が可能になっているはずですので、適当なファイルで送受信を試してみてください。

このページの先頭へ↑

httpd設定の裏ワザ

httpd の設定は普通、

1. nanoエディタ でhttpdの設定を修正する。

2."httpd -t"などの コマンド で、httpdの設定をチェックする。

3.httpdを再起動する。

4. Webブラウザ でhttpdの動作を確認する。

という作業の繰り返しになります。

もちろんそれ例外にも、 FTP サーバー htmlファイル を送信したり、コマンド操作でサーバー上のディレクトリやファイルを操作したり、という操作も途中に入ることになります。

これらの操作は、すべて一台の クライアント機 から行うことができます。つまり、 SSHクライアント 、Webブラウザ、 FTPクライアント を同時に起動し、それぞれの画面を切り替えながら操作するわけです。

ただ、上の 1.2.3. はいずれもSSHクライアントから行う操作ですがこれを一つの プロンプト から行うのはちょっと面倒です。

なぜなら、変更されたhttpdの設定内容を反映させるには必ずhttpdの再起動が必要ですから、その再起動のコマンドを実行するには一度nanoエディタを終了しなければならないからです。

つまりこの方法では、httpdを再起動して動作確認を行う度に、一度閉じた1,000行にも及ぶ"/etc/httpd/conf/httpd.conf"を開き直し、設定中だった行に移動する、という作業が必要になってしまいます。

こういった面倒を無くすには、複数のSSHクライアントで 構築中のLinuxサーバー ログイン するという方法があります。

つまり、一つ目のSSH接続をnanoエディタ専用に、二つ目のSSH接続を"http -t"や"/etc/init.d/httpd restart"の実行用に、という具合に複数起動してしまうわけです。

複数のSSHクライアントを起動して役割分担させる
複数のSSHクライアントを起動して役割分担させる

nanoエディタ専用のSSHクライアントでは"/etc/httpd/conf/httpd.conf"を開きっぱなしにしておき、必要なところまで編集したら Ctrl + o で保存作業だけ行うようにします nanoエディタでファイルを保存する

一方コマンド実行用のSSHクライアントでは、設定ファイルの保存後に、"http -t" httpdの設定チェック 、や"/etc/init.d/httpd restart" httpdのコントロール などのコマンドを実行します。

このような使い方をすることで、一台のクライアント機からとても効率よくhttpdの設定を行うことができるようになります。

このページの先頭へ↑

"/etc/httpd/conf/httpd.conf"の構成

httpd の中心となる設定ファイル "/etc/httpd/conf/httpd.conf" は、

1.全体的な環境の設定

2.サーバーの主設定

3.バーチャルホストの設定

の三つのセクションから成り立っています。

ただ、初心者のうちはこのままのセクション分けでは説明が難しいので、この コンテンツ では設定の目的ごとに細かく分類して説明していきます。

また、 デフォルト "/etc/httpd/conf/httpd.conf" に記述されているキーワードの設定を説明するときは、その行番号で"/etc/httpd/conf/httpd.conf"の中の位置を示します。

従って、 nanoエディタ で編集を行うときは、 nanoエディタ〜検索機能について で目的の行にジャンプしたり、編集対象のキーワードで検索を行ったりすると便利です。

もちろん、設定ファイルの修正を行うと行番号は少しずつずれてきますので、行番号でキーワードを探すときは「ほぼ何行目」というイメージで解釈してください。

このサイトは リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。今のところ更新予定はありませんのでご了承ください。
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。