|
|
|
|
|
|
|
|
|
インストール (その9) |
|
apache の設定 |
|
CentOS サーバーで Webサーバー機能を提供する apache2(apacheと略記)の設定です。
Webサーバーと言えば、apache が定番です。
世界に公開しても良い内容なら、プロバイダのホームページサービスを利用するもよし、ドメインを取得して公開するもよしです。
Webサーバーのコンテンツの登録には Windows クライアントからの FTP ソフトが便利ですので、これも定番の "FFFTP" をダウンロードしておきましょう。 |
|
■ いきなり apache を起動してみる |
|
まず、LAN内のクライアント機から SSHクライアントで、Linuxサーバー にログインし、su コマンドでアカウント を "root" に変更し、httpd の起動コマンドを実行します。 |
|
|
[xxx@xxxx]$ su - [Ent] |
|
Password: ........ [Ent] |
← "root"のパスワード(表示されない) |
|
[xxxt@xxxx]# /etc/init.d/httpd start [Ent] |
|
httpdを起動中: [ OK ] |
|
[xxxt@xxxx]# |
|
|
同じクライアントPC の Webブラウザから、Linuxサーバー のプライベートIPアドレスを使って、"http://192.168.xxx.xxx/" という URL でアクセスすると、右のテストページが表示すれば、
Webサーバーは正常に稼動していることになります。
このテストページは、ホームページの基点となる htmlファイル である "index.html" が、apache のデフォルトで指定されている「コンテンツ の収容ディレクトリ」に存在しないときに表示されるものです。 |
|
|
|
|
では、更に動作確認のために、Apache のデフォルトのコンテンツ収容ディレクトリの "/var/www/html" に移動し、"nano" エディタでごく簡単なページ "index.html" を作成します。 |
|
|
[xxx@xxxx]# cd /var/www/html [Ent] |
← /var/www/html に移動 |
|
[xxx@xxxx]# nano index.html [Ent] |
← index.html を新規作成 |
|
|
以下の "index.html" を作成し保存します。(保存先は、"/var/www/html" ) |
|
<html> |
|
<head> |
|
</head> |
|
<body> |
|
TestPage |
← 表示する文字列 |
|
</body> |
|
</html> |
|
|
同じネットワーク内(IP=192.168.xxx.xxx)のクライアント機の Webブラウザから、Linuxサーバー のプライベートIPアドレスを使って、
"http://192.168.xxx.xxx/" という URL でアクセスすると、右のテストページを表示すれば、Webサーバーは正常に稼動していることになります。 |
|
|
|
|
Apache は基本的に、「所定の位置(ディレクトリ)に格納されているhtmlファイルなどを、クライアントからの要求に応じて送信する」という動作を行っています。 |
|
|
つまりこれから行う 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/httpd/conf/httpd.conf" の編集 |
|
Apache の設定ファイルの中心は "/etc/httpd/conf/httpd.conf" で、ほとんどの動作はこの内容を参照しています。 |
|
|
1. |
"/etc/httpd/conf/httpd.conf" を見る |
|
LAN 内の適当なクライアント機から SSH クライアントで Linuxサーバーにログインし、su コマンドで "root" に変更し、cp コマンドでバックアップを作成した後、
nanoエディタで "/etc/httpd/conf/httpd.conf" を開きます。 |
|
|
[xxx@xxxx]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org [Ent] |
|
[xxx@xxxx]# nano /etc/httpd/conf/httpd.conf [Ent] |
|
|
nanoエディタで開いた "/etc/httpd/conf/httpd.conf" → |
|
|
|
※ |
"/etc/httpd/conf/httpd.conf" は、httpd が動作中でも自由に書換えることができる |
|
|
|
2. |
httpd 設定の準備 |
|
httpd の設定ファイル "/etc/httpd/conf/httpd.conf" は、デフォルトでも1,000行に及ぶ巨大な設定ファイルですが、その大部分は "#" のコメント文であり、実際の設定部分はその一部です。 |
|
httpd の設定のコツは、「すべてを完璧に設定してから動作チェック」でなく、「実際に動作させてみながら試行錯誤で設定してゆく」のが望ましい設定手順といえます。
そのためには、設定をチェックするための htmlファイルを、"FTP" でクライアント機からサーバーに送る環境を作っておく必要があります。 |
|
|
(1) |
ドキュメントルートのユーザーパーミッションの変更 |
|
FTP でクライアント機からサーバーに html ファイルを送信するのだが、サーバーのコンテンツ収容ディレクトリ(ドキュメントルート:"/var/www/html/" )のパーミッションは
"755" に設定されており、一般のユーザーアカウントでのデータ送信はでません。 |
|
|
これを可能にするために、この "/var/www/html/" と、CGI のスクリプトを格納する "/var/www/cgi-bin/" の2つのディレクトリの所有者と所有グループを、chown コマンドで、一般ユーザーアカウントに変更します。 |
|
|
SSH クライアントで Linux サーバー にログインし、以下のように操作します。 |
|
|
[xxx@xxxx]# cd /var/www [Ent] |
|
[xxx@xxxx]# ls -l [Ent] |
← "/var/www/" の内容とパーミッション表示 |
|
合計 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 |
|
[xxx@xxxx]# chown tanaka.tanaka -R html/ [Ent] |
← "/html/"を変更 |
|
[xxx@xxxx]# chown tanaka.tanaka -R cgi-bin/ [Ent] |
← "/cgi-bin/"を変更 |
|
# ls -l [Ent] |
|
合計 24 |
|
drwxr-xr-x 2 Asano Asano 4096 7月 1 2005 cgi-bin |
|
drwxr-xr-x 3 root root 4096 10月 25 10:14 error |
|
drwxr-xr-x 2 Asano Asano 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 |
|
|
これで、"/var/www/html/" と "/var/www/cgi-bin/" の2つのディレクトリは、ユーザーアカウント "Asano" で書換えが可能となりました。 |
|
|
(2) |
"Asano" に FTP 接続で上位ディレクトリ参照許可を与える |
|
上記 (1) で "Asano" に、"/var/www/html/" と "/var/www/cgi-bin/" のパーミッションを与えたが、上位のディレクトリが参照できないと、FTP(vsFTPd)でファイルを送信できないので、この制限を解除します。 |
|
|
----<< 自分以外のユーザーに利用させる場合の対処 >>---- |
|
デフォルト の vsFTPd では、ログインしたすべてのユーザーが、CentOS 5 のシステム最上位である "/ (ルート)" ディレクトリまで参照できるが、知合いに Webサーバーのスペースを貸すとか、
ファイル置場として FTP サーバーを使わせるなどの場合は、自分以外のユーザーが FTP でサーバーにローカルユーザー(一般アカウント)で接続するために、"/ (ルート)" のアクセス権限を与えることになります。
ところが、データ領域には「誰でも書換え可能なファイル」があったり、利用者が誤ったパーミッションを与えかねないので、「セキュリティホール」となります。
これを防止するために、ユーザーアカウントに対して、各々のホームディレクトリよりも上位の参照を制限する設定を行います。 |
|
(a) |
vsFTPd "chroot_list_enable"~ L2. ディレクトリ参照リストの使用 |
|
デフォルトは、"#" でコメントアウトされて、「使用しない」に設定されているので、"#" を削除して、設定を「使用する」に変更する |
|
#chroot_list_enable=YES |
|
↓ |
|
chroot_list_enable=YES |
|
(b) |
vsFTPd "chroot_list_file"~ L3. 参照リストファイルの指定 |
|
上位ディレクトリ参照ユーザーリストファイルを指定する項目で、任意のファイル名が使用できるが、デフォルトのファイル名を使用し、"#" を削除する |
|
#chroot_list_file=/etc/vsftpd/chroot_list |
|
↓ |
|
chroot_list_file=/etc/vsftpd/chroot_list |
|
(c) |
vsFTPd "chroot_local_user"~ 参照リストファイルの動作の指定 |
|
"/etc/vsftpd/chroot_list" は、デフォルトでは「上位ディレクトリを参照させないユーザーアカウントのリスト」なので参照させないユーザーアカウントを記述すれば良い訳だが、
管理者を除き、大部分のユーザーアカウントは参照させない設定となる
しかし、ユーザーアカウントを作成するたびにこのファイルを編集する面倒が起きるところが、"chroot_local_user=YES " を追加すると意味が反転する
(「記載の者だけに参照権限を与える」となり、運用上面倒がなくなる) |
|
(d) |
"/etc/vsftpd/chroot_list"の作成 |
|
"/etc/vsftpd/chroot_list" は準備されていないので、"root"アカウントでログインし、新規に作成する |
|
[xxx@xxxx]# echo > /etc/vsftpd/chroot_list [Ent] |
|
ファイルを作成したら、編集を行う前にパーミッションを設定する所有者、所有グループが "root"、パーミッションは "644"(root以外の ユーザーアカウントでも内容を参照できる)になっており、
rootアカウント以外は読書きできないよう、 chmod コマンドでパーミッションを "600" に変更する |
|
[xxx@xxxx]# ls -l /etc/vsftpd/chroot_list [Ent] |
|
-rw-r--r-- 1 root root 16 ・・略・・ /etc/vsftpd/chroot_list |
|
[xxx@xxxx]# chmod 600 /etc/vsftpd/chroot_list[Ent] |
|
[xxx@xxxx]# ls -l /etc/vsftpd/chroot_list [Ent] |
|
-rw------- 1 root root 16 ・・略・・ /etc/vsftpd/chroot_list |
|
作成した "/etc/vsftpd/chroot_list" を開き、上位のディレクトリを参照させるユーザーアカウントを一件一行で記述し、保存する |
|
root |
|
Asano |
|
-------------------------------------------------------------- |
|
|
(3) |
FTP 接続してみる |
|
設定が終ったら、FTPクライアント( "FFFTP" )から接続する |
|
|
|
サーバー側ディレクトリを "/var/www/" に指定して接続 |
|
|
|
接続が完了すると、サーバー側の "/var/www/html/" と "/var/www/cgi-bin/" の所有者が数字(この場合は500:ユーザーアカウント"Asano"を示すID)で表示される |
|
|
|
|
3. |
httpd.conf の設定項目 |
|
(1) |
httpd の主設定ファイル "/etc/httpd/conf/httpd.conf" で、「 httpd の動作全体に関係する部分」の設定を説明します。 |
|
(a) |
ServerTokens~ (クライアントに送り返す情報) 〔CentOS 5 44行目あたり〕 |
|
接続を要求してきたクライアントに対して、どの程度のサーバー情報を回答するかを設定で、サーバーエラーが発生したときなどに Webブラウザに表示する情報です。 |
|
|
|
|
・ |
この種の情報は第三者に知られても危険というわけではないので、デフォルトのままでも構わない |
|
・ |
表示させなくするには、以下に変更する |
|
ServerTokens OS → ServerTokens Prod |
|
・ |
また、"ServerSignature" 項目(後述)を "Off" に設定すれば、この "ServerTokens" 項目に関係なく、一切の情報表示を行わない |
|
(b) |
ServerRoot~ (各種設定の基点ディレクトリ) 〔CentOS 5 57行目あたり〕 |
|
httpd が自身で参照、作成するディレクトリやファイルの基点となるディレクトリを設定 |
|
・ |
デフォルトは、「ServerRoot "/etc/httpd" 」 |
|
← 変更不要 |
|
以後の設定に関係する(設定ファイルが相対パスで表記された場合の基点となる) |
|
(c) |
PidFile~ (httpd のプロセスID記録ファイルの指定) 〔CentOS 5 62行目あたり〕 |
|
CentOS上で動作するプログラムは、OS がその動作を管理するために「ID番号」を割振り、ファイル(Pidファイルと呼ぶ)として記録する
"PidFile" 項目はそのファイルを具体的に指定する |
|
・ |
デフォルトは、「 PidFile run/httpd.pid 」 |
|
← 変更不要 |
|
(相対パス表記で、"/etc/httpd/run/httpd.pid" となるが、run は "/var/run" のシンボリックリンクで、実際の場所は、"/var/run/httpd.pid" となる) |
|
(d) |
Timeout~ (リクエストが返ってくるまでの待ち時間) 〔CentOS 5 68行目あたり〕 |
|
HTTP では、クライアントからサーバーへのリクエストは、HTTP メソッドを用いる(データをサーバーに送る "POST"/データの置換えを行う "PUT"/取得する "GET" など)
HTTPメソッドで、データはクライアントからサーバーに送信され、サーバーからクライアントに送信されるが、通信障害などで通信が終らない場合の httpd は適当なところで受信待ちを止める必要があり、
この時間(単位は「秒」)を設定する |
|
・ |
デフォルトは、「 Timeout 120 」 |
|
← 変更不要 |
|
(e) |
KeepAlive~ (http接続の維持) 〔CentOS 5 74行目あたり〕 |
|
Web コンテンツ は、Web サーバー上の html ファイルや、サーバーサイドアプリケーションにより出力されるデータ、画像ファイルなどの組合せでひとつのページが構成される
"KeepAlive" 項目は、1回の送信で "HTTP接続" を終了するか否かを設定する |
|
・ |
デフォルトは、「 KeepAlive Off 」(1回で終了)で、構成要素が多い場合は時間がかかる |
|
← 「 KeepAlive On 」に変更する |
|
・ |
本項目を変更すると、次の "MaxKeepAliveRequests" 項目が同時に有効になる |
|
(f) |
MaxKeepAliveRequests~ (KeepAliveの最大値) 〔CentOS 5 81行目あたり〕 |
|
(e) 項が「 KeepAlive On 」のとき、クライアントからの要求に対し、HTTP 接続を維持する最大リクエスト数を設定 |
|
・ |
デフォルトは、「 MaxKeepAliveRequests 100 」だが、もっと大きな数値が良いとされている |
|
← 無難な値、 500 に変更する |
|
・ |
ちなみに、"0" の設定は"無制限"だが、トラブル発生時の対処が難しくなる |
|
(g) |
KeepAliveTimeout~ (HTTPを切断するまでの時間) 〔CentOS 5 87行目あたり〕 |
|
httpd は、接続を要求する多くのクライアントに対し、個々に httpd プロセスを起動して接続し、接続を止めたクライアントの接続プロセスは逐次終了しなければならない
しかし、次々にページを開くクライアントは、ページごとに接続し直すことになりレスポンスの面でデメリットになる
「各クライアントごとに、最後のリクエストに応えた後、接続プロセスを終了するまでにどのくらいの時間(単位は「秒」)、接続を維持しておくか」を設定する
この値を大きくすれば、クライアント側の快適さが向上するが、大量の httpd プロセスを稼動させるためサーバーの負荷は大きくなる |
|
・ |
デフォルトは、「 KeepAliveTimeout 15 」 |
|
← 変更不要 |
|
(h) |
Linten~ (受付けるIPアドレスとポート番号) 〔CentOS 5 134行目あたり〕 |
|
httpd が扱う IPアドレスとポート番号を指定する
一般書式は、" Listen [接続を許可するIPアドレス]:[接続を許可するポート番号] " |
|
・ |
デフォルトは、「 Listen 80 」 (IPアドレス指定せず:すべて許可/ポート番号"80") |
|
← 変更不要 |
|
・ |
セキュアWebサーバー(https://)のポート番号 "443" の追加は不要
( SSL がインストールされると同時に、Apache の設定ファイルで有効になる) |
|
(i) |
User,Group~ (アクセスするアカウントの設定) 〔CentOS 5 231行目あたり〕 |
|
Linux OS のシステムを利用する場合(どのようなプロトコルでも)には、必ず "アカウント" が必要で、httpd に HTTP でアクセスを行う不特定多数のクライアントに対して、一時的に貸出すアカウントを設定する |
|
・ |
デフォルトは、「 User apache 」「 Group apache 」なので、Linuxサーバーに、HTTP でアクセスするユーザーはすべて、"apache" のアカウントで接続する |
|
← 変更不要 |
|
(j) |
ServerAdmin~ (サーバー管理者の連絡先) 〔CentOS 5 251行目あたり〕 |
|
httpd は、クライアントがホームページを閲覧中にエラーが発生すると、クライアント側の Web ブラウザにエラーページを表示した際のサーバー管理者の連絡先を設定
この設定は、利用者がホームページの作成者に対して、Web サーバーのエラーをリポートし、不具合の修正に役立てる「助け合い精神」に基づくもの |
|
・ |
デフォルトは、「 ServerAdmin root@localhost 」
しかし、親切なメールを送ってくれる人は非常に稀であり、反対にスパムメールのもとになる現実から、"ServerSignature" 項目(後述)を変更しないと表示されないようになっている |
|
← 変更不要 |
|
(k) |
ServerName~ (主となるFQDNとポート番号の設定) 〔CentOS 5 265行目あたり〕 |
|
公開しようとするコンテンツの FQDN(ドメイン名)と受付けるポート番号を設定 |
|
・ |
デフォルトは、「 #ServerName new.host.name:80 」とコメントアウトされているので "#" を外す
実をいうと省略してもとりあえず動作する
( "www.obenri.com" というFQDNは、 WAN 空間ではダイナミックDNS でグローバル IPアドレスに、LAN 空間では BIND や hostsァイルなどで "192.168.100.11" に名前解決されていなければならない)
なお、具体的なFQDNの設定を行った場合は、次の "UseCanonicalName" 項目を適切に設定する必要がある |
|
← 変更する(ケースバイケース) |
|
(l) |
UseCanonicalName~ ("ServerName"の利用の有無) 〔CentOS 5 274行目あたり〕 |
|
(k)項の、"ServerName"~ での設定を利用するか否かを設定 |
|
・ |
デフォルトは、「 UseCanonicalName Off 」
httpd はユーザーからリクエストされた FQDN 、ホスト名などをそのまま利用して URL を生成して動作する |
|
・ |
この項目を、「 UseCanonicalName On 」に設定すると、ユーザーからのリクエストに応えた後、 "ServerName" 項目で設定された FQDN を用いて URL を生成して動作する |
|
← 変更不要(ケースバイケース) |
|
(m) |
DocumentRoot~ (メインコンテンツの格納場所) 〔CentOS 5 281行目あたり〕 |
|
httpd の コンテンツ データの格納場所を指定 |
|
・ |
デフォルトは、「 DocumentRoot "/var/www/html" 」 |
|
← 変更不要 |
|
(n) |
DirectoryIndex~ (省略を許可するファイル名) 〔CentOS 5 391行目あたり〕 |
|
コンテンツの最初のページの htmlファイル名は、省略してアクセスできれば好都合で、その上位のディレクトリ名だけで httpd にアクセスできるよう省略を許可するファイル名を指定 |
|
・ |
デフォルトは、「 DirectoryIndex index.html index.html.var 」
スペースで区切って複数のファイル名を記述できる |
|
・ |
「 DirectoryIndex index.html index.htm 」に変更しておき、適宜追加する |
|
← 変更(適宜追加) |
|
(o) |
AccessFileName~ (外部設定ファイルのファイル名) 〔CentOS 5 291行目あたり〕 |
|
httpd は、設定の一部を "AllowOverride" 項目の設定により、第三者が書換え可能な他の設定ファイルに記述でき、その設定ファイル、通称 アクセスファイル」のファイル名を指定 |
|
・ |
デフォルトは、「 AccessFileName .htaccess 」
変更する場合でも、ファイル名は必ず ".ht" で始まるファイル名を設定する(理由割愛) |
|
← 変更不要 |
|
(p) |
ErrorLog~ (エラーログを出力するファイルの指定) 〔CentOS 5 472行目あたり〕 |
|
クライアント からのアクセス時に発生したエラーログを記録するファイルを指定 |
|
・ |
デフォルトは、「 ErrorLog logs/error_log 」
(相対パス表記で、"/etc/httpd/logs/error_log" となるが、logs は "/var/log/httpd" のシンボリックリンクで、実際の場所は、"/var/log/httpd/error_log" となる) |
|
← 変更不要 |
|
(q) |
CustomLog~ (アクセスログを出力するファイルの指定) 〔CentOS 5 515行目あたり〕 |
|
クライアントからのアクセスログを記録するファイルを指定 |
|
・ |
デフォルトは、「 CustomLog logs/access_log combined 」
(相対パス表記で、"/etc/httpd/logs/access_log" となるが、logs は "/var/log/httpd" のシンボリックリンクで、実際の場所は、"/var/log/httpd/access_log" となる) |
|
← 変更不要 |
|
(r) |
ServerSignature~ (サーバー情報の表示設定) 〔CentOS 5 524行目あたり〕 |
|
httpd がクライアントにエラーメッセージなどを表示する際に、サーバーに関する情報をどの程度まで掲載するかを決定する |
|
・ |
デフォルトは、「 ServerSignature On 」で、"ServerTokens" (a)項で設定した内容だけをサーバー情報として追加表示する |
|
・ |
「 ServerSignature EMail 」と設定すると、"ServerTokens" 項目で設定した内容に加えて、"ServerAdmin" 10)項)で設定した連絡先も掲載する |
|
・ |
セキュリティを最優先に考える場合は、「 ServerSignature Off 」と設定する
エラーメッセージ以外の情報はクライアント側に表示されなくなる |
|
← 変更不要(ケースバイケース) |
|
(s) |
AddDefaultCharset~ (標準で利用する文字セット) 〔CentOS 5 747行目あたり〕 |
|
httpd が、クライアントにコンテンツデータを送るとき、Webブラウザで利用させる文字セットを設定 |
|
・ |
デフォルトは、「 AddDefaultCharset UTF-8 」
(クライアント側の Webブラウザの文字セットは UTF-8 に選択される)
このデフォルト設定のまま httpd を利用する場合には、コンテンツデータの文字セットを UTF-8 で作成すればよいことになる |
|
・ |
文字セット UTF-8 は大きな問題がある
・UTF は、まだ日本では充分に浸透していない文字セット
・FTP クライアントの多くが、UTF-8 の文字セット変換機能を持っていない
・CGI プログラムの多くも UTF-8 形式の入出力に対応していない
ところで、html ファイルは通常、ヘッダ部分に
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
と、クライアント側の Webブラウザの文字セットを指定して表示させることができるが、
この "AddDefaultCharset" 項目で具体的な文字セットを指定すると、このヘッダ部分の命令は無視され、"AddDefaultCharset" で指定の文字セットで強制的に表示してしまう
そこで、この項目は、以下のように変更する
・「 #AddDefaultCharset UTF-8 」と設定そのものを無効にする
・「 AddDefaultCharset Off 」と明示的に無効にする
(ただし、その場合にはコンテンツデータ自身に必ず文字セットの指定が必要となる) |
|
← 適宜変更 |
|
(t) |
Alias~ (仮想ディレクトリの設定) 〔CentOS 5 539,837行目あたり〕 |
|
LinuxOS における、ディレクトリのシンボリックリンクに相当する機能の設定 |
|
例えば、"DocumentRoot" ディレクティブが、"/var/www/html" に設定されている場合、Alias 項目で、「 Alias /admin_only/"/var/www/admin/" 」を設定すると、
クライアントから、"http://www.obenri.com/admin_only/" のアクセス要求があると、"/var/www/html/admin_only/" ではなく、"/var/www/admin/" というディレクトリからコンテンツデータが送信される〔利用価値は割愛〕
( "/var/www/html/admin_only/" がなくても、実在していてもエラーにならない) |
|
・ |
デフォルトは、以下で変更不要
・アイコン用 :Alias /icons/ "/var/www/icons/"
・マニュアル用:Alias /manual "/var/www/manual"
・エラー配信用:Alias /error/ "/var/www/error/" |
|
|
(2) |
コンテナディレクティブ |
|
(a) |
ローカルユーザーにコンテンツスペースを提供する |
|
"http://www.obenri.com/~suzuki/" などのように、「大勢のユーザーに手間なくコンテンツスペースを提供する設定」 (割愛) |
|
(b) |
CGI を利用して動的なコンテンツを作成する |
|
「 CGI の実行許可の設定」 < Perl を利用> (割愛) |
|
(c) |
任意のディレクトリのログイン制限 |
|
「ユーザー認証機能の設定」で、ホームページの会員限定ページや、管理者専用ページなどでもよく用いられる (割愛) |
|
(d) |
バーチャルホストの設定 |
|
(割愛) |
|
|
4. |
設定ファイルの書式チェックコマンドについて |
|
CentOS のインストールの「パッケージグループの選択」で、"Webサーバ"(Apache)を選択すると Apache の動作コントロールコマンド「 apachectl 」が自動的にインストールされている。
このコマンドは、 httpd の起動や終了、動作チェックの他、保存済みの設定ファイル "/etc/httpd/conf/httpd.conf" の誤りをレポートできる。 |
|
|
以下の3つの方法のどれでも同じ書式チェックを行うことができる。 |
|
(1) |
apachectl -t コマンドを入力 |
|
httpd の実体プログラムである "/usr/sbin/httpd" を利用して作られているシェルスクリプト |
|
(2) |
/etc/init.d/httpd configtest コマンドを入力 |
|
httpd の起動、停止のコントロールに用いられる、"/etc/init.d/httpd"のシェルスクリプト |
|
(3) |
httpd -t コマンドを入力 |
|
httpd の本体プログラムである "/usr/sbin/httpd" に対して間接的に起動 |
|
|
これらのチェックコマンドは非常に強力で、"/etc/httpd/conf/httpd.conf" だけではなく、"/etc/httpd/conf.d/" 以下に収容されているモジュール類の設定ファイルも同時に検査する。
また、単純な書式上の誤りだけでなく、その中で記述されているディレクトリやファイルが存在しない場合や、それらのディレクトリやファイルのパーミッションが httpd の動作の妨げになるケースでもエラーをリポートする。
ただし、チェックできるのは、仕組みとしての誤りだけで、設定内容そのものの間違いはチェックできない。 |
|
|
「 httpd -t 」コマンドでの書式チェック例 |
|
<問題なしの場合> |
|
[xxx@xxxx]# httpd -t [Ent] |
|
Syntax OK |
|
<エラーを検出した場合> |
|
[xxx@xxxx]# httpd -t [Ent] |
|
Syntax error on line 307 of /etc/httpd/conf/httpd.conf: |
|
/etc/httpd/conf/httpd.conf:336: <Directory> was not |
|
closed.!/etc/httpd/conf/httpd.conf:307: was not closed. |
|
↑ |
|
"/etc/httpd/conf/httpd.conf" の307行目に書式エラーがあります。と検出 |
|
|
5. |
httpdの起動、停止、再起動 |
|
httpd の起動、停止は、予め準備されているシェルスクリプト、"/etc/init.d/httpd" を利用して行う
(正確なスクリプトの場所は、 "/etc/rc.d/init.d/httpd" だが、"/etc/rc.d/init.d/" のシンボリックリンクが "/etc/init.d/" で作成されているので、"/etc/init.d/httpd" でも実行できる) |
|
|
(1) |
httpd の起動、停止 |
|
[xxx@xxxx]# /etc/init.d/httpd start [Ent] |
← httpd の起動 |
|
httpdを起動中: [ OK ] |
|
[xxx@xxxx]# /etc/init.d/httpd stop [Ent] |
← httpd の起動 |
|
httpdを停止中: [ OK ] |
|
|
(2) |
httpd の再起動、設定の再読込み、httpd の状態確認 |
|
<再起動、設定の再読込み> |
|
[xxx@xxxx]# /etc/init.d/httpd restart [Ent] |
← httpd の再起動 |
|
httpdを停止中: [ OK ] |
|
httpdを起動中: [ OK ] |
|
[xxx@xxxx]# /etc/init.d/httpd reload [Ent] |
← 設定の再読込み |
|
httpdを再読み込み中: [ OK ] |
|
<httpd の状態確認> |
|
[xxx@xxxx]# /etc/init.d/httpd status [Ent] |
← httpd の状態確認 |
|
httpd (pid 5875 5874 5873 5872 5871 5870 5848) を実行中... |
|
[xxx@xxxx]# ps ax | grep httpd [Ent] |
← httpd のプロセス状態確認 |
|
5848 ? S 0:02 /usr/sbin/httpd |
← httpd が実行中 |
|
5870 ? S 0:00 /usr/sbin/httpd |
← : |
|
5871 ? S 0:00 /usr/sbin/httpd |
← : |
|
5872 ? S 0:00 /usr/sbin/httpd |
← : |
|
5873 ? S 0:00 /usr/sbin/httpd |
← : |
|
5874 ? S 0:00 /usr/sbin/httpd |
← : |
|
5875 ? S 0:00 /usr/sbin/httpd |
← : |
|
5890 pts/2 S 0:00 grep httpd |
← grepのプロセス実行中 |
|
[xxx@xxxx]# /etc/init.d/httpd stop [Ent] |
← httpd の停止 |
|
httpdを停止中: [ OK ] |
|
[xxx@xxxx]# /etc/init.d/httpd status [Ent] |
← httpd の状態確認 |
|
httpdは停止しています |
|
[xxx@xxxx]# ps ax | grep httpd [Ent] |
← httpd の状態確認 |
|
5919 pts/2 S 0:00 grep httpd |
← httpd 実行中(pidなし) |
|
|
(3) |
httpdを自動的に起動する |
|
httpd は、常に動作させてしておくべきサーバーアプリケーションですから、Linux サーバーが起動したときに自動的にデーモンが起動するように設定します。
設定は ntsysv コマンドで設定画面を開き、"httpd" にチェックを入れ、[OK] をクリックするか、[Ent] を押します。 |
|
|
|
|
設定が終ったら、念のため Linuxサーバーを reboot コマンドで再起動し、きちんと起動しているかをチェックします。 |
|