読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

バーチャルホストの設定 その2(サブドメイン運用)

Webサーバ
今回はDNSの設定を行います。DNSの詳細は「内部向けDNSサーバ」を参考にしてください。 今回はサブドメインを使用する場合です。具体的には www.example.com web.example.com のようにホスト名のみ変わり、ドメイン部分は同一の場合です。 DNSサーバの構築も確認の意味で行います。ただし今回はバーチャルホストの確認のためだけですので、サーバ(127.0.0.1)のみでしか使用できない(LANではない)し、逆引きゾーン設定などはしない手抜き版です。 DNSの設定 $ sudo apt-get install bind9 ①resolv.confの設定 # emacs -nw /etc/resolv.conf nameserver 127.0.0.1 注意としてresolv.confは無線など繋ぎ直すと更新される場合があるのでうまく行かないときは確認してみてください。 ②named.confの設定 # emacs -nw /etc/bind/named.conf.options options {         directory "/etc/bind";         allow-query { localhost;};         allow-transfer {none;};         auth-nxdomain no;    # conform to RFC1035 }; # emacs -nw /etc/bind/named.conf include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; #include "/etc/bind/named.conf.default-zones"; ←コメントアウト include "/etc/bind/named.conf.internal-zones"; # cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.internal-zones # emacs -nw /etc/bind/named.conf.internal-zones 以下を先頭に追記します。最後に閉括弧を忘れないように。 view "internal" {    match-clients {        localhost;    }; # 内部向け正引きゾーン設定 zone "example.com" {      type master;      file "/etc/bind/db.internal"; }; …… ←コピー元の記述 }; ←view "internal" の閉括弧 ③ゾーン設定 ここで www.example.com web.example.com が使えるようにゾーン設定をします。 # emacs -nw /etc/bind/db.internal $TTL 1D @    IN        SOA    ns.example.com. root.example.com. (              2011043001          ;Serial         1H              ;Refresh 1 hour         30M              ;Retry 30 minutes         1W              ;Expire 1 week         1D              ;Minimum TTL 1 day )         IN    NS    ns.example.com.         IN    MX 10    mail.example.com. @        IN    A      127.0.0.1 ns        IN    A      127.0.0.1 www        IN    A      127.0.0.1 web        IN    CNAME      www ちなみに web        IN    A      127.0.0.1 でも構いません。むしろCNAMEは避ける傾向のようで、こっちの方がいいかもしれないです。 完了したらbind9の再起動 $ sudo /etc/init.d/bind9 restart ④確認 $ dig www.example.com$ dig web.exapmle.com
; <<>> DiG 9.7.0-P1 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49754
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.		IN	A

;; ANSWER SECTION:
www.example.com.	86400	IN	A	127.0.0.1

;; AUTHORITY SECTION:
example.com.		86400	IN	NS	ns.example.com.

;; ADDITIONAL SECTION:
ns.example.com.		86400	IN	A	127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun  4 17:30:04 2012
;; MSG SIZE  rcvd: 82
となればOKです。 これでDNSの設定は完了です。 Apacheのディレクティブ設定 デフォルトの設定に追記します。 $ sudo emacs -nw /etc/apache2/sites-available/default # 最後尾に追記 <Virtualhost *:80>     ServerName www.example.com     ServerAdmin webmaster@example.com     DocumentRoot /var/www     ErrorLog /var/log/apache2/example.com.error.log     CustomLog /var/log/apache2/example.com.access.log combined     LogLevel warn </Virtualhost> <Virtualhost *:80>     ServerName web.example.com     ServerAdmin webmaster@example.com     DocumentRoot /home/web/public_html     ErrorLog /var/log/apache2/example.com.error.log     CustomLog /var/log/apache2/example.com.access.log combined     LogLevel warn </Virtualhost> 編集したらリロード $ sudo /etc/init.d/apache2 reload ◆テストページの作成 区別のためwww.example.comはデフォルトの「It works」のページを使い、web.example.comは前回と同じ日付が表示されるページを使用します。 $ cd /home/web/public_html $ emacs -nw index.php <html> <body> <div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;"> Virtual Host Test Page<br /> <?php print Date("Y/m/d"); ?> </div> </body> </html> ◆確認 http://www.example.com/ にアクセスして「It works」が表示されればOK http://web.example.com/ にアクセスして日付が表示されればOK。 ソース: 名前ベースのバーチャルホストで複数のホストを管理する バーチャルホストによる複数サイトの同時運用