
| ApacheでWebサーバを構築する |
ここでは、ApacheでWebサーバを構築する際、最低限やっておいたほうがいいと思われる設定の
紹介をします。このページで紹介するものは、Apacheの基本的な設定、Apacheのバージョンを
表示しないようにする設定、ログの見方や設定になります。
| Apacheの基本設定をする |
ここでは、Apacheの基本的な設定の紹介をしていきたいと思います。
先ず、設定ファイルはデフォルトでは、/etc/httpd/conf/httpd.confになりますので、
このファイルを編集することになります。それでは、早速設定をしていきます。
| # vi /etc/httpd/conf/httpd.conf ServerAdmin root@localhost ←243行目 ↓ ServerAdmin webmaster@chibi.name #ServerName new.host.name:80 ←257行目 ↓ ServerName chibi.name <Directory /var/www/html> Options Indexes FollowSymLinks ←312行目 ↓ Options IncludesNoExec ExecCGI FollowSymLinks (行数については、場合によって異なるので、あくまでも目安です) |
とりあえずここで一旦区切って、解説したいと思います。先ず最初のServerAdminですが、これは
メールアドレスの指定になります。別にデフォルトのままでも構いませんが、そのままだと管理していない
ように思われることもありますので、ここでは変更しています。
次のServerNameですが、ここでは#(コメント)を解除して、自分のドメイン名を入れました。
次は<Directory /var/www/html>という部分のOptions Indexes FollowSymLinksを変えます。
先ず最初にIndexesの記述は確実に消します。これはindex.htmlなどのデフォルトページが無い場合に
ディレクトリ内のファイルの一覧を表示する機能です。何かファイルの一覧を見せる必要がある場合には
このIndexesは消さなくても構いませんが、通常の場合は先ずその必要は無いと思います。また見せる
つもりの無かったものまで表示させてしまいますので、セキュリティ的にみても消しておくべきです。
次に2つほど追加しています。IncludesNoExecは#execを除くSSIの利用を許可します。
SSIの利用を完全に許可したい場合は、Includesとしてください。
ExecCGIはCGIプログラムの実行を許可します。SSIやCGIなどを使う予定が無い場合には、この2つの
記述はしなくてもいいです。ここで大事なのは、Indexesの記述を消すことです。
| ServerTokens OS ←43行目 ↓ ServerTokens Prod ServerSignature On ←513行目 ↓ # ServerSignature On |
これら2つはセキュリティ上、設定を変更しておくのが望ましいです。これはtelnetで接続された時の
バナー情報を隠します。デフォルトの状態ですと、telnetで接続されてバナー取得を試みられると、
ApacheのバージョンとOSを答えてしまいます。ソフトのバージョンなどは表示させても損することは
ありますが得することはありません。もし古いバージョンを使っていて、それにはセキュリティホールが
存在することが分かれば攻撃を受けるかもしれません。そしてこーゆーところの設定を変えておけば
それだけ管理が行き渡っているというのが伝わります。これら2つの設定を変更して、Apacheの
バージョンとOSを表示させないようにしてください。
| #CustomLog logs/referer_log referer ←496行目 #CustomLog logs/agent_log agent ←497行目 ↓ CustomLog logs/referer_log referer CustomLog logs/agent_log agent AddDefaultCharset UTF-8 ←767行目 ↓ # AddDefaultCharset UTF-8 #AddHandler cgi-script .cgi ←844行目 ↓ AddHandler cgi-script .cgi .pl ←.plを追加 |
先ず上段から。この2つコメントを解除してあげましょう。これでリファラログとエージェントログを
出力してくれるようになります。
次にAddDefaultCharsetですが、これは初期状態ではUTF-8を指定されてしまっています。このままですと
文字化けの原因になりますので、ここではコメントアウトして無効にしています。
次のAddHandler cgi-scriptは、cgiの有効とpl拡張子の追加をしています。またPerlコマンドへ
/usr/local/bin/perlでもアクセスできるようにする為、次のコマンドを打ちます。
| # ln -s /usr/bin/perl /usr/local/bin/perl |
以上で基本的な設定は終わりです。また何もまだコンテンツを置いていない場合はテストページが
出るようになっています。あとでhttpdのサービスを開始したら、ぜひ自分のサーバに接続してみて
テストページが表示されるかどうか確認してみてください。
またコンテンツの置き場ですがデフォルトでは、/var/www/html/以下になります。
このディレクトリ以下に何かページを作成して置いてみましょう。
最後にサービスの開始と自動起動するように設定しておきます。
| # chkconfig --level 345 httpd on # service httpd start |
ルータを利用している場合は80番ポートの解放をします。でないと外部から接続できません。
サーバ側のポート開放については、当サイトのファイアウォールスクリプト使用の場合は、
そのままでOKです。
スクリプトを使用せず、iptablesのルールをデフォルトのまま使用している場合は、ポートの開放が必要です。
以下のようにします。
| # vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT |
青地部分の追加をします。その後でiptablesの再起動をしてください。
| # service iptables restart |
| ログのチェックをする |
ログを見るという作業がこれから先大事になります。ログは、/var/log/httpd/以下に
アクセスログですとかエラーログなんかがあります。またログは新しいものは後ろに追加されていくという
形式を取ります。ここではログの見方の例を紹介します。例えばアクセスログを見たいなら、
| # tail -100 /var/log/httpd/access_log |
エラーログを見たいなら
| # tail -50 /var/log/httpd/error_log |
こんな感じになります。tailコマンドはファイルの末尾部分を表示するコマンドです。
またその次に続く、「−数字」というのは行数の指定です。-100なら100行表示ということになります。
また、あまりにも長い行数を指定する場合には次のようにパイプを使ってlessに渡すようにします。
| # tail -300 /var/log/httpd/access_log | less |
これでlessで見れますので、Enterキーやスペースキーを押して画面をスクロールさせながら見れます。
次にこれら2つのログは今後も結構見る機会が多いと思います。見る機会が多いのにわざわざ上のような
コマンドを毎回打つのはちょっと面倒臭いです。
ここではaliasの設定をして、楽に見るようにしたいと思います。
| # vi .bashrc ←/rootで alias access="tail -300 /var/log/httpd/access_log" alias error="tail -50 /var/log/httpd/error_log" |
viで.bashrcを開き上の2行を追加してみました。
ここではaccessと実行すれば、tail -300 /var/log/httpd/access_logが実行されます。
何を入力すればこのログが開くようにするかは自分の分かりやすいものに変えてください。
またtailの後ろの行数指定も自分に合わせて変えてください。最後にパイプを使ってlessを指定
するとこまで記述してしまうのも手です。注意点は「=」の前後にはスペースが入らないということと、
実際のコマンド部分は必ず「"」で囲んでください。これらの記述を済ませたら、保存して終了し、
一回ログアウトしてまたログインしてみてください。設定が反映されていると思います。
最終更新 : 06/04/2005