バーチャルホストの設定

この記事はだいぶ前に書かれたものなので情報が古いかもしれません

一つのサーバーで複数のサイトを運営するようなときは、バーチャルホストってやつを設定することでできるらしいです。

ポートを分けちゃうっていう手もあるようなんですけど、httpでの接続の場合、デフォルトでは80番のポートに接続されるようになっているんですが、これを意図的に別のポートにした場合、URLにポート番号をつけなきゃいけなくなってしまうんですね。

例えば、あかつきのお宿にアクセスする際のポートを8000番とした場合。

http://norm-nois.com:8000/

こういうURLになっちゃうんですね。何と言うかまあ……そんなに気にすることないような気もするけど、せっかく自分でドメイン取ってるんだから、表示されない方が良いような気はしなくもないですよね。かっこ悪いって言い方も何か違うのですけど……そんな感じ?

特にnorm-nois.comの場合なんかだと、何を思ってそんなドメインにしたのかってーと、実はこれ、アナグラムなんですよねー。ちょっぴり中二病の匂いがするアナグラムだから、あまり声を大にしては言わないけどねww何にせよ、そんなわけだから余計な数字とかついててほしくない気はしますね。

数字をつけないためには、ポートは80番じゃなきゃいけない。でも同じポートに複数のドメインを割り当てた場合、どのドメインでアクセスしても同じサイトが表示されちゃう。

こりゃあ困ったぞってことで、じゃあどうすれば解決できんのかって問いに対する答えが、バーチャルホストなんですね。

いざやってみるとそんなに難しくもなかったんで、ちゃちゃっとやってみましょう。



httpd.confの設定

今ここに、二つのサイトを用意したとします。トップページのURLは以下の通り。

http://www.norm-nois.com
http://test.norm-nois.com

それぞれのドキュメントルートが別のところにあるとして、バーチャルホストを設定にするには、httpd.confに以下のように記述すればよい。

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.norm-nois.com
  DocumentRoot /var/www/html/
  ErrorLog logs/www.norm-nois.com-error_log
  CustomLog logs/www.norm-nois.com-access_log combined
</VirtualHost>

<VirtualHost *:80>
  ServerName test.norm-nois.com
  DocumentRoot /var/www/html/test/
  ErrorLog logs/test.norm-nois.com-error_log
  CustomLog logs/test.norm-nois.com-access_log combined
</VirtualHost>

httpd.confに書かなくても良いんですけどね。「/etc/httpd/conf.d」ってところに下に「norm-nois.conf」みたいなファイルを作って、上と同じような内容を書いても良い。

# vi /etc/httpd/conf.d/norm-nois.conf

あとはapacheを再起動すりゃオッケーです。

これで、それぞれのURLにアクセスしたときに、別々のページが表示される。お手軽だーね。「errorLog」とか「CustomLog」というのは、エラーやアクセスログなどを書き込むファイルのパスです。CustomLogの方はパスの後ろに「combined」って書いてますけど、これはログの形式のようです。「common」と「combined」があって、どっちかを書いとけば良いようです。

よく分からなかったらcombinedにしとけば良いんじゃないかな。「コモン」より「コンバイン」の方が強そうだし。超電磁ヨーヨーとか使いそうだし。



80番以外のポートを使用する場合

試してないのであれなんですけど、たぶん80番以外のポートにバーチャルホストの設定をする場合は、上の記述で80ってなってるところを全部別の数字にすれば良いだけだと思う。

ああ、あとはあれだ。たぶんhttpd.confの中を見ると、こんな記述があると思います。

Listen 80

80番以外のポートを使う場合、この数字も変えてやる必要があるかな。

だから、こんな感じになるかしら。

//8000番のポートを使う場合
Listen 8000
NameVirtualHost 8000

<VirtualHost *:8000>
  ServerName www.norm-nois.com
  DocumentRoot /var/www/html/
  ErrorLog logs/www.norm-nois.com-error_log
  CustomLog logs/www.norm-nois.com-access_log combined
</VirtualHost>

<VirtualHost *:8000>
  ServerName test.norm-nois.com
  DocumentRoot /var/www/html/test/
  ErrorLog logs/test.norm-nois.com-error_log
  CustomLog logs/test.norm-nois.com-access_log combined
</VirtualHost>

書いといてなんなんですけど、これに関しては検証してないもので……間違ってたらごめんなさい。






今日は以上ですね。ここ最近の開発技術の記事の中では、格段に内容が薄いっすね。まあそんな日もあるさ。

本当はいつだって、これくらいの感じで何でもかんでも設定やら何やらができれば良いんですけどね。

この前もね、ImageMagickっていうやつを使いたくて、サーバーにインストールしてみたんですけど、上手く動かないんですよね。同じように上手く動かなかった人の、解決するまでの記事とかも読んだんですけど、同じことやってもやっぱり上手く動かなかったんですよね。

何でですかねー。こういうことがあるから、サーバーをいじるのはめんどいって思っちゃうんですよねー。

うん、グチり出すと長くなりそうだから、今日はこの辺にしときましょう。

ほいじゃーまたー。

まだコメントはいただけてないみたい……
もしかしたら何か関連しているかも?