Apacheの設定

始めてのサーバ構築*1Apacheの設定でかなり躓いている。/etc/apache2/sites-available/defaultをコピーしてmysiteってファイルを作って変更しているがforbiddenになってアクセスできない。具体的には /home/yagiey/public_html/index.html は http://localhost/index.html でアクセスできるものと期待したけどforbiddenになった。同様に /home/yagiey/public_html/mysite/index.html にアクセスするために http://localhost/mysite/index.html ってしたらforbiddenだった。
分かってる人からするとアホみたいな間違いなんだろうなーと思ったり。公開するのはかなり恥ずかしいけども、現状は以下のとおり。

<VirtualHost *:80>
  ServerAdmin webmaster@localhost

  # ここを変更
  DocumentRoot /home/yagiey/public_html

  # 変更なし
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>

  # ディレクトリをDocumentRootに合わせて変更
  <Directory /home/yagiey/public_html/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>

  # このエントリ追加
  <Directory /home/yagiey/public_html/mysite/>
    Options all
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>

  # これより以下には変更なし
  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
  • なぜルートディレクトリに対する設定が必要なのだろう?なんでルートディレクトリを選んで設定しているんだろう?他のディレクトリは設定は要らないのかな(全部のディレクトリなんて無理だけど)?
  • FollowSymLinksはシンボリックリンクをたどることを許可するものらしいが、具体的にどういう効果があるのかな?何を期待しているのだろう?

デフォルトでは /var/www がDocumentRootになってた。ここにファイル置いていけばいいんだろうけど ~/public_html に置きたいなぁ。UserDirってのもあるみたいだけど、特にユーザ増やしたりはしないしなぁー。

*1:いや学部の授業でやったような気がするな。なんも覚えてないけど。