VirtulHostの設定

手違いによりブログデータを削除してしまったため、キャッシュから拾える範囲で再エントリー。そのためパーマネントリンクが違うと思います。また、投稿日も再エントリーした日付になっています。

少しずつ開発用サーバーもステップアップ。

今回、複数ドメインでサイトを開発・実験したくなり、VirtulHostの環境が欲しくなった。

いつも参考にさせてもらっている

CentOSで自宅サーバー
を真似て設定しようとしたところ、このマシンを提供してくれた友人からもっと管理のしやすい方法を伝授してもらった。

その方法を忘れないように以下に記録。どうもDebianでは標準的な管理のようなことを言っていたと思うが、操作を目で追うのが精一杯でよく覚えていない。まぁ管理が楽になればそれでよし。

/etc/httpd/以下に、

mkdir sites-available

mkdir sites-enabled

と、2つのディレクトリを作成。

sites-available にはVirtulHost毎の設定ファイルを作成し。

sites-enabled の中に、sites-available以下にある有効にしたいVirtulHostの設定ファイルをリンクさせる。

そして、

/etc/httpd/httpd.conf

の210行目あたりの下に

Include sites-enabled/*

を追加し、読込ませるようにする。

こうすることで、VirtulHost毎の設定をファイル単位で管理し、なおかつ有効・無効を簡単に行えるようになる。

さらに、sites-enabled内のリンクを貼る作業も、より簡単にするために「a2ensite」というシェルを作成。逆にリンクを外す場合は「a2dissite」というシェルを準備。

a2ensite

#!/bin/sh -e

SYSCONFDIR=’/etc/httpd’

if [ -z $1 ]; then
echo “Which site would you like to enable?”
echo -n “Your choices are: ”
ls $SYSCONFDIR/sites-available/* | \
sed -e “s,$SYSCONFDIR/sites-available/,,g” | xargs echo
echo -n “Site name? ”
read SITENAME
else
SITENAME=$1
fi

if [ $SITENAME = "default" ]; then
PRIORITY=”000″
fi

if [ -e $SYSCONFDIR/sites-enabled/$SITENAME -o \
-e $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME" ]; then
echo “This site is already enabled!”
exit 0
fi

if ! [ -e $SYSCONFDIR/sites-available/$SITENAME ]; then
echo “This site does not exist!”
exit 1
fi

if [ $SITENAME = "default" ]; then
ln -sf $SYSCONFDIR/sites-available/$SITENAME \
$SYSCONFDIR/sites-enabled/”$PRIORITY”-”$SITENAME”
else
ln -sf $SYSCONFDIR/sites-available/$SITENAME $SYSCONFDIR/sites-enabled/$SITENAME
fi

echo “Site $SITENAME installed; run /etc/init.d/httpd reload to enable.”

a2dissite

#!/bin/sh -e

SYSCONFDIR=’/etc/httpd’

if [ -z $1 ]; then
echo “Which site would you like to disable?”
echo -n “Your choices are: ”
ls /etc/apache2/sites-enabled/* | \
sed -e “s,$SYSCONFDIR/sites-enabled/,,g” | xargs echo
echo -n “Site name? ”
read SITENAME
else
SITENAME=$1
fi

if [ $SITENAME = "default" ]; then
PRIORITY=”000″
fi

if ! [ -e $SYSCONFDIR/sites-enabled/$SITENAME -o \
-e $SYSCONFDIR/sites-enabled/"$PRIORITY"-"$SITENAME" ]; then
echo “This site is already disabled, or does not exist!”
exit 1
fi

if ! rm $SYSCONFDIR/sites-enabled/$SITENAME 2>/dev/null; then
rm -f $SYSCONFDIR/sites-enabled/”$PRIORITY”-”$SITENAME”
fi
echo “Site $SITENAME disabled; run /etc/init.d/httpd reload to fully disable.”

この仕組みを準備する最初の注意点として、sites-availableの中にはdefaultファイルを作成し、IPでアクセスされたときのデフォルト設定を用意する。

例)ファイル名:default

NameVirtualHost *:80
ServerName dev.xxxxxxx.jp
DocumentRoot /var/www/html/
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined env=!no_log

そして、実際の管理ではこうなる。

設定

CentOS#a2ensite 設定ファイル名

apacheの再起動。

解除

CentOS#a2dissite 設定ファイル名

apacheの再起動。

こんな感じで完了。

謝謝

コメントはFacebookを利用しています

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>