3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VirtualDocumentRoot使うとサブドメを自由に作成できるね

Last updated at Posted at 2014-12-10

サブドメインをディレクトリっぽく

DocmentRootがずれてると何も出来ない僕です。
そのための設定するためだけnamedのファイルを開いたり、rndc reloadやったりするのはもうこりごりなのです。ちょっと調べてみたら、あっという間に出来ちゃう事がわかったので対応してみました。仮サイトで使うのでbasic認証もおまけでついてます。安心ですね!

##今回設定した条件を書いておきますね。

  • URLは、http://VERSION.PROJECT.DOMAIN.JP/
    (バージョン・プロジェクト名・自分のドメイン)という順番にします。
  • ファイルの実体があるディレクトリ構成は、/home/www/project/version/public/を想定しています。
  • basic認証のパスワードは共通する場所(/home/www/.htpasswd)

##順にやってみると動くはずです!
素のApacheは何も設定されてないのかという感じでしたので、一応書いておきます。a2enmodというコマンドでモジュールをアクティブに出来たので、ホント簡単でした。

###1.mod_rewrite追加
「戻りライト」と聞き間違えないようにするためにも追加しておきます。

sudo a2enmod rewrite 

###2.vhost_aliasを追加(a2enmodで出来るかも?)

VirtualDocumentRootを使うためにはこの設定がミソっぽいです。

sudo ln -s /etc/apache2/mods-available/vhost_alias.load /etc/apache2/mods-enabled

###3.password認証の設定
一応、仮環境なので、パスワード認証もつけます。Googleさんが見に来ないためにも大切なとこですね。

sudo a2enmod authz_groupfile
vi /home/www/.htpasswd

###4.confファイル編集

あとは設定ファイルをいじるだけです。

sudo vi /etc/apache2/sites-available/000-default.conf 

中身を下記のようにします。パスワード制限が不要であれば、タグ内は不要なのでもっと簡単ですー(DOMAIN.JPはみなさんのドメインに)

 <VirtualHost *:80>
  ServerName web.DOMAIN.JP
  ServerAlias  web.DOMAIN.JP  *.DOMAIN.JP
  VirtualDocumentRoot /home/www/%2/%1/public

  RewriteEngine on
  RewriteMap    lowercase    int:tolower
  RewriteRule   ^/server-status - [L]
  RewriteRule   ^/icons/ - [L]
  RewriteCond   %{HTTP_HOST} ^(.+)\.(DOMAIN.JP)(:(80|443))?$
  RewriteCond   /home/www/%2/ -d
  RewriteRule   ^/(.*)$ /home/www/%2/%1/public/$1


  <Directory /home/www/*/*/public>
    AuthUserFile /home/www/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Secret Area"
    AuthType Basic
    require valid-user

    <Files ~ "^.(htpasswd|htaccess)$">
      deny from all
    </Files>

  </Directory>
</VirtualHost>

###5.再起動

サーバを再起動します。今回はreloadでやってしまいますね。
(configtestからのreloadの方がオススメです)

sudo service apache2 reload

これでイロイロな面倒から解放されるはずです!僕はすごく解放されましたー
Gruntでrsync走らせて、HubotでSlackに通知するとかまでやったのですが、そちらはまた書きます。

MarkDown記法でグレーで括るやり方がわかって楽しくなってきました。
皆さん、快適な開発環境になって、いいモノを作っていきましょう!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?