目的
高いサービスレベルを求められない数百のサイトを運用していく際、サーバ統合率を上げた構築を行い、短納期を実現するために運用管理も効率的な構成にしたい。
環境
- Ubuntu 14.04.1 LTS
- apache2.4.7-1ubuntu4.1
使用モジュール
/etc/apache2$ ls -l mods-available/ | grep vhost_alias
vhost_alias.load
モジュール有効化
/etc/apache2/mods-enabled$ sudo a2enmod vhost_alias
/etc/apache2/mods-enabled$ ll
vhost_alias.load -> ../mods-available/vhost_alias.load
設定ファイル作成
/etc/apache2/sites-available$ sudo nano vhost_alias.conf
documentrootに書いた%1がサブドメイン毎に作成したディレクトリを見る。
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot /var/www/sites-enabled/%1/htdocs
LogFormat "%{%FT%T%z}t %>s %T %B \"%m http://%{Host}i%U%q\" \"%{User-Agent}i\" %h" custom
CustomLog /var/log/apache2/virtual_alias-access.log custom
ErrorLog /var/log/apache2/virtual_alias-error.log
<Directory "/var/www/sites-enabled/*/htdocs">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
作成した設定ファイルのシンボリックリンクを作成
/etc/apache2/sites-available$ sudo a2ensite vhost_alias.conf
/etc/apache2/sites-enabled$ ll ../sites-enabled/
000-default.conf -> ../sites-available/000-default.conf
vhost_alias.conf -> ../sites-available/vhost_alias.conf
apache再起動
$ sudo service apache2 restart
公開を限定的にする
ドキュメントルート配下にディレクトリを作ると同時に公開されてしまうので、
シンボリックリンクを利用して公開範囲を限定的にする。
/var/www$ sudo mkdir sites-available sites-enabled
/var/www/sites-enabled$ sudo ln -s ../sites-available/v-test1 v-test1
/var/www/sites-enabled$ sudo ln -s ../sites-available/v-test2 v-test2
/var/www/sites-enabled$ ll
v-test1.example.comとv-test2.example.comのサイトのみ公開。
v-test1 -> ../sites-available/v-test1/
v-test2 -> ../sites-available/v-test2/
利点
作成したディレクトリをコピーして利用すれば、サイトの作成・削除が容易で管理しやすい。
また、サイト追加時にapacheの再起動も必要としないので、バーチャルホスト全体への影響は無い。