いつもはレンタルサーバーのコントロールパネルからポチポチやってるんですが、いろいろあって ubuntu の Apache2 へ複数の VirtualHost を設定しました。そもそも Apache の設定ってわかりにくいので触りたくないイメージなんですが、ubuntu は設定ファイルが分割されてるらしく、さらにわけわかめ。ググって出てくるページもいろいろアレンジされてて、なにも考えずにコピペしてたら予想しない動きになってしまい OS のインストールからやり直してしまったので自分用に最低減のメモ。
まず設定ファイルの位置は /etc/apache2/ 。VirtualHost の設定はその下の sites-abailable 内のファイルへいろいろ書き込みます。手順はこう。全部 sudo で。
- sites-abailable にある default を適当な名前でコピー
- 中身をゴニョゴニョ
- 設定を読み込ませる
- Apache を再起動して反映させる
- Bon appetit!
コピーはスルーしてゴニョゴニョから。vi とかで開いた上の方の ServerAdmin と DocumentRoot が書かれているところへ ServerName example.com を追加して、必要に応じて DocumentRoot を変更します。とりあえずこれで終了。複数のドメインを設定したければコピーのトコから繰り返します。なにをやればいいかわかっていればカンタンなんですが、それを探すのがめんどくさいです。
下の方にあるディレクトリの設定はデフォルトの /var/www/ から設定した DocumentRoot へ書き換えるだけで放置しました。あとで必要なときに設定すればよさそう。たぶん消しても default の設定が有効になるんじゃないかなぁ。もしそうなら設定した DocumentRoot についてのところだけ書いておくのがスマート?
とにかく、よくわからないけど動いてるんだから放置です。phpinfo() も動いてくれたし。
あと適当なサブドメイン hoge.example.com でアクセスしたときにも example.com を表示させたかったので ServerAlias *.example.com を同じところへ設定しました。もちろん DNS の設定が前提です。でも、これをやりつつ www だけ別の表示させたいときはどうやるんだろ?設定ファイルを読み込む順番とかあったりする?いや、そもそもそんなことできるのかあやしい気がします。
ゴニョゴニョが終わったら a2ensite って叩いて Apache へ認識させます。引数に設定ファイル名を渡すか、引数無しなら「どれにする?」と聞かれるので答えましょう。実際はリンクをどうのこうのと解説されているページもありましたが、細かい事は気にしません。
正常に読み込まれたら Apache を再起動してね!とメッセージが表示されるのでその通りに。service apache2 restart です。
警告が多少表示されてもブラウザからアクセスすればたぶん表示されると思います。警告は hosts ファイルをいじれば消えるらしいですが、特に困る事も無さそうなので放置しました。
エラーなど思ったとおりの動きではないときはログをみたいですが、ログファイルが置かれている場所へは移動できなかったので sudo ls /var/log/apache2/ で一覧を表示させて……みたいなことになるようです。てか、なんでこんなに厳重なの?なんかあったときに改ざんされないように?
普段使うにはやっぱり Windows ぐらいがちょうどいい気がします。