CentOS:内向き開発サーバ 3)まとめ

社内向け開発サーバ「turmeric.gf」がいよいよ仕上がってきた。

ここまでにやったこと

  • Mac Server上に仮想サーバ(CentOS)を構築
  • Webサーバにバーチャルホストを構築
  • ネットワーク内からドメイン名でアクセスできるようにDNS設定
  • DNSサーバを仮想のCentOSからMac Server(snow leopard)に変更して拡張性を確保
  • FTPサーバ構築(内部ネットワークからFTPでファイル設置)
  • PHP/MySqlサーバ構築
  • ファイルサーバsamba構築(開発領域にエクスプローラでアクセスできるように)


これで一通り、開発サーバのベース要件を満たしたかな。

ベース要件(おさらい)

  1. 今後追加できるような開発領域(サーバ)を設計する。
  2. DNSは仮想OSとは別に構築し、仮想OSの追加が柔軟にできるようにする。
  3. 仮想OSのWebサーバは、バーチャルホストで複数のサイトがサブドメイン形式で運営できるようにする。
  4. 3のバーチャルホストは、社内ネットワークからドメインでアクセスできるようにする。
  5. Webサーバは、PHP/MySQL/Perl等社外公開サーバと同等のプログラム環境にする。
  6. バーチャルホストのルートディレクトリには、FTPでアクセスできるようにする。
  7. バーチャルホストのルートディレクトリには、FTP以外に、Windowsのエクスプローラでもアクセスできるようにし、ファイルの追加・変更・削除の作業ができるようにする。

今後の作業

  • SSLの実装
  • バックアップの設計(Mac ServerのTimeMachineで実装予定)
  • バーチャルホスト作成から、開設までの手順をドキュメント化
  • 開発領域にサイトを順次移設

CentOS:内向き開発サーバ 2)バーチャルホストで複数のサイトが作れるようにする。

社内の開発用Webサーバなので、1つのサーバで複数のサイトが構築できるよう、バーチャルホストを設定。

ゴール

サブドメインで複数のサイトをホストできる環境を作る。

手順

httpd.confを修正し、バーチャルホストを有効に。

  1. まずは、サブドメインで管理するサイトのルートディレクトリを作成(例:virtual)
  2. httpd.confでバーチャルホストを有効に。
  3. httpd.confにバーチャルホストの設定を追加。
[root@turmeric ~]# mkdir /var/www/html/virtual/httpdocs
[root@turmeric ~]# chmod 777 /var/www/html/virtual/httpdocs
[root@turmeric ~]# vi /etc/httpd/conf/httpd.conf

viでhttpd.confを編集

{中略}
NameVirtualHost *:80 ←有効に。
{中略}
<VirtualHost *:80>
    ServerName turmeric.gf
    DocumentRoot /var/www/html
    ErrorLog logs/error_log
    CustomLog logs/access_log combined env=!no_log
</VirtualHost>

<VirtualHost *:80>
    ServerName virtual.turmeric.gf
    DocumentRoot /var/www/html/virtual
    ErrorLog logs/virtual-error_log
    CustomLog logs/virtual-access_log combined env=!no_log
</VirtualHost>

httpdを再起動

[root@turmeric ~]# service httpd configtest
Syntax OK
[root@turmeric ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                    [  OK  ]
httpd を起動中:                                    [  OK  ]

DNSの設定ファイルを修正して仮想ホストを追加。

  1. turmeric.gf.dbを編集。仮想ホストを追加。
  2. DNSサーバを再起動して設定を反映。
[root@turmeric ~]# vi /var/named/chroot/var/named/turmeric.gf.db

viでturmeric.gf.dbを編集(virtual.turmeric.gfになるように。)

{中略}
virtual IN      CNAME   turmeric.gf


DNSサーバを再起動

[root@turmeric ~]# /etc/rc.d/init.d/named restart
named を停止中:                                    [  OK  ]
named を起動中:                                    [  OK  ]


バーチャルホストはすんなりと設定完了!(・∀・)v
これで、新しい案件が発生するたびにバーチャルホストを追加し、サブドメインでアクセスできるようになりました。

CentOS:内向き開発サーバ 1)DNSサーバを構築し、ドメイン名でサーバにアクセスする。

CentOSで内向きの(外部に公開しない)開発サーバを構築した際に躓いたポイントをメモ。
まずはDNSサーバを構築して、ドメイン名でサーバを参照できるようになるまで。

ゴール

  • IPアドレスではなく、ドメイン名で開発サーバにアクセスできるようにする。

手順

DNSサーバのインストール・設定については次を参考に進めた。
http://www.tooyama.org/bind-lan.html

  1. 設定ファイルをコピー
  2. BINDの設定ファイルを編集して、内部IP等の設定。
  3. ヒントファイル作成
  4. ゾーンファイル作成
  5. ルートゾーンの更新
  6. 正引きの設定
  7. 逆引きの設定
[root@turmeric ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
[root@turmeric ~]# vi /var/named/chroot/etc/named.conf
[root@turmeric ~]# vi /var/named/chroot/etc/named.root.hints
[root@turmeric ~]# vi /var/named/chroot/etc/named.turmeric.gf.zone
[root@turmeric ~]# dig @a.root-servers.net . ns > /var/named/chroot/var/named/named.ca
[root@turmeric ~]# vi /var/named/chroot/var/named/turmeric.gf.db
[root@turmeric ~]# vi /var/named/chroot/var/named/11.168.192.in-addr.arpa.db

そしてBINDを起動… と思ったら[失敗](;´Д`)

[root@turmeric ~]# /etc/rc.d/init.d/named start
named を起動中:                                 [失敗]

ログを確認

[root@turmeric ~]# less /var/log/messages

なんだかパーミッションのエラーが出ていることが分かり、参考ページ上部に「権限を修正」という項目があったのを思い出して設定。

[root@turmeric ~]# chown root:named /var/named/chroot/etc/named.conf

今度こそと願ってBINDを起動… 今度は成功!

[root@turmeric ~]# /etc/rc.d/init.d/named start
named を起動中:                                 [  OK  ]

自動起動を設定してひと段落。

[root@turmeric ~]# chkconfig named on

POINT1)ルーターのDHCPサーバ機能にDNSサーバの通知IPを設定する。

ここまではある程度想定通りに進行したが、いろんな参考ページで書かれている次の作業の詳細が分からず行き詰まった。

この後の作業
DNSサーバーは構築できましたが、このDNSサーバーで名前解決するためにクライアント側でDNSの設定を変更する必要があります。
DHCPサーバーによりIPを取得している場合は、DHCPサーバー側のDNS設定を変更してください。

http://www.tooyama.org/bind-lan.html

■問合せ先DNSサーバーをLinuxサーバーに変更
(1)問合せ先DNSサーバーをLinuxサーバーに変更
ルーターのDHCP設定でDNSサーバーのIPアドレスLinuxサーバーのIPアドレスに変更する

http://centossrv.com/bind-lan.shtml

次の参考サイトに詳しい情報があったのでこれを参考にルーターの設定を変更。
http://www.miloweb.net/bind.html#12

BUFFALOルータの場合は、
[Internet/LAN]>[LAN]画面で[拡張設定を表示する]にチェック。出てきた画面で次の設定を行った。

f:id:G-867:20130315194018p:plain

これで行けるかな?と思って、CentOSから[dig]、クライアントマシンから[nslookup]してみる。

CentOSの[dig]では問題がない。つまり、BINDの設定自体はOKのようだ。

[root@turmeric ~]# dig turmeric.gf
{中略}
;; ANSWER SECTION:
turmeric.gf.	 86400	IN	A	192.168.11.18
[root@turmeric ~]# dig -x 192.168.11.18
{中略}
;; ANSWER SECTION:
18.11.168.192.in-addr.arpa. 86400 IN	PTR	turmeric.gf.


しかし、クライアントから[nslookup]したら、DNSサーバを見に行けていない。

C:\Users\867>nslookup
Default Server:  UnKnown
Address:  192.168.11.18

DNS request timed out.
timeout was 2 seconds.

やはり、クライアントマシンからブラウザでドメインをたたいても表示されない。

POINT2)CentOSとルーター、両方でポートを許可。

原因と思われたのが次に紹介されている作業。

■BIND起動
(2)UDPの53番ポートとTCPの53番ポートをオープンする
ルーターの設定で、UDPの53番ポートとTCPの53番ポートへのアクセスをサーバーに転送するようにする

http://centossrv.com/bind.shtml

(12)ファイアウォールでtcp:53とudp:53ポートを開けます。

http://www.tooyama.org/bind-lan.html

ルーターでポートを開く

まずはルーターの設定で「UDPの53番ポートとTCPの53番ポートを開く」。
BUFFALOでは、これを「ポートの交換」と称し、かなり分かりにくいところに設定があったので手こずった。

BUFFALOルータの場合は、
[ゲーム&アプリ]>[ポート交換]

f:id:G-867:20130315201240p:plain

これだけかと思ったが、CentOSの方にも「ファイアウォールでtcp:53とudp:53ポートを開く」という作業が必要だった。つまり、双方で許可する必要があるということ。これは、本を読み返して発見。

CentOSのファイアウォール設定を変更

CentOSSSHでログインし、[iptables]の設定。

[root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p udp -m udp --dport domain -j ACCEPT
[root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport domain -j ACCEPT

[root@turmeric ~]# /etc/rc.d/init.d/iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]

設定内容を確認し、追加を無事確認。

[root@turmeric ~]# iptables -L
{中略}
Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source       destination         
ACCEPT     tcp  --  anywhere     anywhere     tcp dpt:domain  ←コレと
ACCEPT     udp  --  anywhere     anywhere     udp dpt:domain   ←コレ
{後略}

これでいけるか?と思ったが、本を読み返すとWebサーバの導入部分でもファイアウォールの設定が必要な記述を発見。そもそもこれが設定されてないぞ。ということで設定。

[root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport http -j ACCEPT

[root@turmeric ~]# /etc/rc.d/init.d/iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]

最後にhttpdを再起動

[root@turmeric ~]# /etc/rc.d/init.d/httpd restart

これでゴール到達!無事ドメイン名でWebサーバにアクセスできるようになりました(σ・∀・)σゲッツ!!!
ちなみに、社内サーバの名前は「香辛料」シリーズ。
今回のWebサーバは「turmeric(ターメリック)」かわいいでしょ?

さて次は、バーチャルホストの設定です。