apache2の設定

  • サイト定義ファイルを作成、設定する

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite

で定義ファイルをコピーし、
mysiteの"/var/www"部分をルートディレクトリにしたいディレクトリに変更

# a2ensite mysite
# a2dissite default
# /etc/init.d/apache2 reload または /etc/init.d/apache restart

で変更完了

# a2enmod userdir
# /etc/init.d/apache2 restart

でOK。

  • CGI,PHPを使えるようにする
  1. CGI

apache2.confを書き換える(デフォルト設定のバックアップを取っておくこと)
AddHandler Script-cgi .cgi
(下から1/4ぐらいのところにある)のコメントをはずす。

特定のユーザーだけ使えるようにするには
/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec

すべてのユーザーについてしたければ内にもExecCGIを追加する(推奨しない)

  1. PHP

# a2enmod php5
# /etc/init.d/apache2 restart

PHPの実行範囲の設定はよくわかってません。

  • ディレクトリにアクセスしたときにリスト表示しないようにする

/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)

  1. すべてのユーザーのリスト表示を許可しない

内のOptionsがある行の"Indexes"を削除する

  1. ある特定のユーザーだけリスト表示を許可しない


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec

というようにする(他のオプションは適宜変更)。

*注意*
禁止するユーザーを先に書いてはいけない。
理由:後に書いてあるほうが優先されるから。
最後にマッチしたものが適用される。

ルーティングと同じように上から検索してマッチしたらそれ以降は見ないという仕様にしたらいいのにと思いました。

  • index.cgiやindex.phpなどを有効/無効にする

/etc/apache2/mods-available/dir.conf
のDirectoryIndexの行に
index.cgiやindex.phpを追加またはその行から削除する
左にあるものの方が優先されるので優先させたいものを左に移動させる。