apache2インストール/設定

以前も一度書いていますが、仮想環境構築を通して、随分と理解が深まった気がするので、
まとめておこうとおもいます。


○ apache2 のインストール

インストールは単純に

# aptitude install apache2-mpm-prefork

とするだけで、インストールできちゃいます。
インストール終了後、 webブラウザから"http://${マシンのIPアドレス/" としてアクセスすると、

It works!

ってな、ページが表示されるはずです。

...噂に聞いた「あなたの予想に反して...」ってページは出ませんでした。
くどいからやめたんでしょうかね?

○ apache2 超入門

インストールが終了したら、apache2の設定を行います。

最低限、押さえておく必要がある項目は次の三点です。

  • /etc/apache2/apache2.conf
  • /etc/apache2/site-available/
  • /etc/apache2/mods-available/

"apache2.conf" には、apacheの基本設定を書き込みます。
cgiの許可とか、タイムアウトの時刻なんかをここに設定していきます。

apacheの設定を変更したときには、次のようにapacheのリスタートを行います

# /etc/init.d/apache2 restart

まぁ、この辺はおなじみな感じです。

"site-available" には、サイトの設定ファイルがおかれています。
デフォルトでは、"/etc/apache2/site-available/default"が使われています。

サイトの設定は、次のようにすることで有効にできます。

# a2ensite ${サイトの設定ファイル}

逆に無効にしたい場合には、次のようにします

# a2dissite ${サイトの設定ファイル}

サイトを有効にすると、"/etc/apache2/site-enabled"にファイルがコピーされます。

つまり、"/etc/apache2/site-availavle"には設定ファイルを置き、現在有効になっている
設定に関しては、"/etc/apache2/site-enabled"におかれるってことになります。

"/etc/apache2/mods-available/"には、モジュールの設定ファイルが置かれています。
モジュールってのは、サイトにくっつけて使う設定ファイルみたいなもので、ユーザディレクト
の動作の設定なんかが該当します。

これも、サイトの設定と同じように、

# a2enmod ${モジュールファイル}

として、モジュールを有効にし、

# a2dismod ${モジュールファイル}

として、モジュールを無効にします。

モジュールファイルの置き場が、"/etc/apache2/mods-available"となり、有効なモジュールが
"etc/apache2/mods-enabled"になります。

○ apache2 の初期設定

そいでは、早速apacheの設定を行っていきます。

まずは、apache2.conf をいじって、cgiが利用できるようにしておきます。

"/etc/apache2/apache2.conf" を開いて、次の行を編集します

# AddHandler cgi-script .cgi コメントになっている行を...

AddHandler cgi-script .cgi コメントの解除

これで、*.cgiってファイルがcgiとして動くようになります。
 *.pl を動かしたければ、「AddHandler cgi-script .cgi .pl」と設定すれば良いです。

ついでに、言語設定もなおしておきます

LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw

LanguagePriority ja en da nl et fr de el it ko no pl pt pt-br ltz ca es sv tw

...まぁ、日本人ですから

編集が終わったら、

# /etc/init.d/apache2 restart

として、apacheの再起動を行います。
念のため、apacheが正しく再起動したか確認しておきましょう

○ サイトの編集

詳しいことはわかりませんが、昔は"httpd.conf"にサイトの設定を書いていたようです。
(このため、apacheの設定に関してぐぐると、httpd.confに...ってことが書かれている方が多いです)

apache2では、site-availableで管理することによって、複数のサイトを管理できるようになっている
ようです。

そんなわけで、俺サイト設定を書いていくことにします。

# cd /etc/apache2/site-available
# cp default my-site

こんな感じで、デフォルト設定をコピーしてきます。

そして、my-siteを編集します。

(以下、書き換えの内容)

Options Indexes FollowSymLinks MultiViews

Options ExecCGI -FollowSymLinks MultiViews

参考サイト
http://www.itmedia.co.jp/help/tips/linux/l0499.html
MultiViewsについて。

ユーザエージェントに埋め込まれているメタ情報から、適切なページを選び出す仕組み
たとえば、サイトが日本語と英語に対応していた場合、Accept-Languageヘッダ値に「en」が
優先されていれば英語版のファイル、「ja」が優先されていれば日本語版のファイルが送り出される。

AllowOverride None

AllowOverride All

AllとAuthConfigの違い(Allすべての.htaccess機能を有効。AuthConfig、認証に関する機能のみ有効。)

RedirectMatch ^/$ /apache2-default/

# RedirectMatch ^/$ /apache2-default/

リダイレクトマッチをしないようにしておく

ServerSignature On

ServerSignature Off

apacheからよけいな情報を出さない(バージョンがわかると、セキュリティに甘い)

編集が終わったら、現在有効になっているサイト設定を無効にして、今回書いた設定を有効にします

# a2dissite default
# a2ensite my-site


○ userdir モジュールの設定

最後に、ユーザディレクトリの設定をしておきます。
ユーザディレクトリを設定することで、"http://${ホストのIP}/~${ユーザ名}"として
ユーザごとのページが作成できるようになります。

/etc/mods-available/userdir.con がユーザディレクトリモジュールになるので、
emacsなんかで開いて、以下の設定を追加しときます


Options ExecCGI

この設定を追加しておくことで、ユーザごとにcgiの設置が行えるようになります。

書き加えたら、ユーザディレクトリを有効にしておきます。

# a2enmod userdir.conf

ユーザディレクトリモジュールはデフォルトでは無効になっていると思いました。

もし、有効になっていたら

# a2dismod userdir.conf
# a2enmod userdir.conf

とするだけです。

最後に、apacheを再起動して、動作確認してみれば基本設定は終了です。

# /etc/init.d/apache2 restart

これで、ユーザディレクトリが使えるようになったり、cgiが使えるようになりました。


○ 参考サイト

http://golgotha.xrea.jp/archives/2005/12/debian_sarge_ap.html