開発メモ

開発関係のメモをいろいろと。たぶん。

CentOSにApacheをインストール

VirtualBoxにインストールしたCentOSでいろいろ実験するシリーズ。

今回は、CentOSApacheをインストール。

Apacheのインストール

サービス本体のインストール

以下のコマンドで、Apacheをインストールする。こっそり、開発関係のファイルもインストールしておく。

# yum install httpd httpd-devel

iptablesの設定を変更

「/etc/sysconfig/iptables」を修正。sshの行を複製して、httpで使うport 80でも通信が出来るように修正する。

修正後のiptablesはこんな感じ。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

hosts.allowの設定を変更

「/etc/hosts.allow」を修正して、以下の行を追加。

httpd: ALL

VirtualBoxのポートフォワーディングの設定を変更

いったん仮想マシンを落として、ポートフォワーディングの設定を変更。httpも通信を通すようにしておく。

とりあえず、ホストの80をそのままゲストの80に通すように設定。すでに、ホストPCでポート80を使ってる場合は、別のポートを指定する。当たり前だけど。

f:id:see_ku:20130524121345p:plain

接続を確認

仮想マシンを起動して、以下のコマンドでサービスを起動。

# service httpd start

以下のようなメッセージが出るけど、とりあえず無視。

httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

VirtualBoxの動いてるPCでブラウザを立ち上げて、「localhost」に接続。特に問題がなければ、Apacheのテストページが表示されるはず。

f:id:see_ku:20130524121546p:plain

サービスの自動起動

いちいち手動で立ち上げるのも面倒なので、サービスが自動で立ち上がるように設定しておく。

# chkconfig httpd on

Apacheの環境設定

無事に動くことは確認できたので、いろいろ、細かい設定を変更しておく。

※作業の前に、httpd.confのバックアップを取っておくのがおすすめ

「fully qualified domain name」の警告を消す

「/etc/hosts」のlocalhostに書かれた名前と、「/etc/httpd/conf/httpd.conf」 のServerNameに書かれた名前が一致しないのが原因。

「/etc/httpd/conf/httpd.conf」を修正。コメントになってるServerNameの行があるので、その下に以下の内容を追加。

ServerName localhost:80

修正したらサービスを再起動。警告が出なくなってるはず。

# service httpd restart

※とりあえず警告を消しただけなので、まじめに運用するときはまじめに対応する事

ディレクトリ単位の設定を変更

以下のように修正。

  • 自動でファイルの一覧が表示される機能は明示的にオフ(-Indexes)
  • シンボリックリンクの使用を許可(FollowSymLinks)

「/etc/httpd/conf/httpd.conf」の該当する箇所を、以下のように修正。 ※コメント部分は省略

修正前

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

修正後

<Directory "/var/www/html">
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

デフォルトのキャラセットをオフに

今時、キャラセットを指定していないコンテンツを扱うことはないはずなので、オフにしておく。

「/etc/httpd/conf/httpd.conf」を以下のように修正。

修正前

AddDefaultCharset UTF-8

修正後

#AddDefaultCharset UTF-8

デフォルトのフッターをオフに

エラー画面など、サーバーが生成する画面のフッターに表示される情報をオフに。外部に漏れる情報は減るけど、管理者自身も情報が取得できなくなるので要注意?

修正前

ServerSignature On

修正後

ServerSignature Off

設定ファイルの内容を確認する方法

以下のコマンドで、設定ファイルが正しいかどうかを確認できる。

# service httpd configtest

覚えておくと良いことが・・・ あまりないかな。

検討事項

ドキュメントルートの権限はどうするべきか?

「/var/www/html」の権限は、どう設定するのが一番良いのか?

  1. rootのまま
  2. apache
  3. それ以外

セキュリティを考えると、rootのままにしておくのが一番無難? 他のユーザーで操作が必要になったら、権限を与えたサブディレクトリでやらせるべき? そもそも、rootのままにしておくのが本当に安全なのか?

そもそも、Apacheをroot権限で動かしてて良いのか?

情報元

core - Apache HTTP サーバ
http://httpd.apache.org/docs/2.2/ja/mod/core.html