CentOS6 Apache2 インストールと設定

CentOS6でのApache2の設定ですが、基本httpd.confがあるApacheだったらだいたい同じ設定でいけるかと思います。Debian/Ubuntuだけちょっと違う感じになりますが、考え方は同じです。
AWSの「Amazon Linux AMI」でもだいたい同じような設定でなんとかなります。(ちなみにAWSのLinuxは、ec2-userでログインします。)

Apacheのインストール

httpdのインストールとかapacheのインストールとかいろいろ言い方がありますが、httpdはサーバー内のサービス名もしくはデーモン名ということになっていて、Apacheはミドルウェアそのものの名前ということになります。
前提としてセキュリティーグループやFWでポートの80はあけておきましょう。443などは後からでもよいかと思います。

インストール

# yum -y install httpd

オプション-yはいらないですがInstall中にYes/Noを聞かれて中断するので、デフォルトの設定でよい場合は、-y付きでOKです。
一応バージョンの確認をします。

# httpd -v
Server version: Apache/2.2.31 (Unix)
Server built:   Mar  7 2016 23:50:21

再起動すると問題ないかぎりこれでWebサーバーが立ち上がってます。IPアドレスでアクセスしてみましょう。

# service httpd start

キャプチャ

自動起動の設定

OS再起動した際にApacheも自動的に起動するように設定します。これやらないとyumとかのアップデートで勝手に再起動がかかったときWEBサーバーが落ちます。

# chkconfig httpd on
# chkconfig httpd --list
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

3.4.5がonになっていればOKです。意味はランレベルとかで検索して勉強すること!(ランレベル関係ないかな)
※そのほかのデーモンのステータスはchkconfig –listで見られます。

Apacheの細かい設定

設定ファイルにて細かい設定をします。まずは設定ファイルのバックアップを取ります。-pを忘れないように。またこれはある意味お作法でもあります。

cp -p  /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.def

最初に設定しないといけないのは、

  • グローバルIP (例: 111.111.111.111)
  • Domain (例: www.example.com)
  • DocumentRoot (例: /home/test/www [default])

ドメインとIPはDNSであらかじめ設定しておきます。ドメインはAレコードで設定したものになります。ドキュメントルートになるユーザーとディレクトリもあらかじめ設定しておきます。ここでは、例の内容で設定します。(※viは面倒だけど使い方を覚えましょう!)
また、ここではあらかじめtestというユーザーと/home/test/wwwを設定しておきます。ユーザーの作成は別項で。

# vi /etc/httpd/conf/httpd.conf

135行目あたりでListenの設定。コメントアウト

#Listen 12.34.56.78:80
↓
Listen 111.111.111.111:80

Listen 80
↓
#Listen 80

277行目あたり。

#ServerName www.example.com:80
↓
ServerName www.example.com:80

293行目、ドキュメントルートの設定

DocumentRoot "/var/www/html"
↓
DocumentRoot "/home/test/www"

基本的な設定はこれで終わり。DocumentRoot以下に設定したindex.htmlとかがドメインやIPでブラウザーから見えればOKです。デフォルトではwww以下のindex.htmlを見に行くようになっています。

DrirectryIndexの設定

デフォルトでindex.htmlを見に行くようになっているので、よく使うファイル名を登録しなおします。今時index.html.varとか使わないと思うので。htmlとphpとplとrbがあれば十分かと思います。

DirectoryIndex index.html index.html.var
↓
DirectoryIndex index.html index.php index.pl index.rb

httpd2.4以降ではDocumetRootに権限を与えてあげないとダメになったので、103行目あたりのところでアクセス許可する必要あります。

<Directory />
    AllowOverride none
    Require all denied
</Directory>
↓
<Directory />
    AllowOverride all
    Require all granted
</Directory>

Welcomeページの削除

デフォルトではApacheの動作確認のために403エラーの場合はWelcomeページを表示することになっているので、実際に運用はじめると格好悪いので設定を削除します。
/etc/httpd/conf.dにwelcome.confというものがあるのでその中身をコメントアウトして再起動します。

# vi /etc/httpd/conf.d/welcome.conf

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>
↓
#<LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#</LocationMatch>

セキュリティーの設定

とはいっても本当のセキュリティーの設定じゃなくて、できるだけクラッカーにヒントを与えないという程度の設定です。本当のセキュリティー設定は全く別です。

  • ServerTokens ProductOnly
  • ServerSignature Off
  • TraceEnable Off

44行目あたりにあるサーバートークンをProductOnlyに変更します。これはサーバー情報にOS情報を表示させないという設定です。

ServerTokens OS
↓
ServerTokens ProductOnly

537行目あたりにあるServerSignatureを変更します。デフォルトではエラー画面にApacheの詳細情報が表示されてしまうからです。

ServerSignature On
↓
ServerSignature Off

TraceEnableをoffにしておきます。ディレクティブ自体がたぶんないと思うので、httpd.confのバーチャルホスト設定の前あたりに追記します。

....
TraceEnable Off

### Section 3: Virtual Hosts
....

再起動して設定反映して終了です。

Last update: 2016.06.09 (木)