バーチャルドメイン

一つのサーバー(一つのIPアドレス)で複数のドメイン,ホスト名のホームページやメールアドレスを使う方法として,バーチャルドメインがある。現在のコンピュータの能力からすれば一台のサーバーでかなりの多くのドメインの扱いが可能である。バーチャルドメインの活用により,コンピュータの資源,さらにIPアドレスの資源を有効に利用することができる。バーチャルドメインはサーバー管理の基本技術と言えるだろう。
現在本サイトでもこれを利用していて,一つのサーバーで,4つのドメインを使っている。バーチャルドメインの実装方法については,明確な規則が無いらしく,各ソフトウエアがそれぞれの工夫でバーチャルドメインを実現している。CentOS8,Oracle Linux 8.3をインストールした経験では,バーチャルドメインの取り扱いには,次の3つのパターンがある。(以下の記述は,本サーバーにインストールした方法による一応の分類であり,設定の仕方によっては異なる。)

  1. リアルドメインとバーチャルドメインを明確に区別をする。
  2. リアルドメインとバーチャルドメインを同じに扱う。
  3. リアルドメインとバーチャルドメインを大体同じに扱う。

postfix

postfixのバーチャルドメインの扱いは,タイプ1と言える。/etc/postfix/main.cf の中で,

hostname
mydomain
myorigin
mydestination

を設定するが,これはいずれもリアルドメイン,リアルホスト名周辺の名前である。更にバーチャルドメインについては,

virtual_alias_domains

で設定する。この名前は,リアルでなく,バーチャルなドメイン名のみを設定する。postfixの説明では,「バーチャル エイリアスドメイン名を mydestination ドメインには「絶対に」リストアップしないでください。」とある。(但し,mydestination ドメインに追加ドメインを設定する方法もある。しかし,この方法はここで想定するバーチャルドメインとは異なる。)実際にバーチャルの具体的設定は /etc/postfix/virtual ファイルに記述する。postfixの説明の中には,「バーチャル***は,×××に「絶対に」・・・しないでください。」という記述が多くみられる。バーチャルの設定はかなり慎重にする必要がある。

mailman

メーリングリストソフトmailmanは,バーチャルドメインに対応していて,一つのサーバー上で各バーチャルドメイン宛てのメールイングリストを作成・運営することができる。mailmanの設定は,/etc/mailman/mm_cfg.pyで行う。そこでの方法を見ると,mailmanはタイプ2の扱いをしていると考えられる。

POSTFIX_STYLE_VIRTUAL_DOMAINS
DEFAULT_URL_HOST
DEFAULT_EMAIL_HOST

が既定の変数で,POSTFIX_STYLE_VIRTUAL_DOMAINSには,(あえてpostfix形式でのと断っている)バーチャルドメインのリストを設定する。DEFAULT_URL_HOSTにはリアルホスト名を設定する。これ以外に,バーチャルホストの名前の変数を設定して(例えば,V1_URL_HOST,V1_EMAIL_HOSTのように。),

add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
add_virtualhost(V1_URL_HOST, V2_EMAIL_HOST)
・・・

のように,バーチャルホストを順次設定する。即ち,ここでのリアルホスト名は,最初のバーチャルホストの扱いになっている。つまり,すべてホストはバーチャルとして扱うと言える。

apache

apacheのバーチャルドメインの取り扱いは,タイプ3と言える。/etc/httpd/conf/httpd.conf の中で,

ServerName

で,リアルホスト名を設定する。この名前がデフォルトのサーバーとなる。バーチャルドメインホストは/etc/httpd/conf.dの中で,各ホスト名vhostname(仮の名前)に対応する,

vhostname.conf

を置く。このconf はバーチャルホストに対応していくつでも置くことができる。このそれぞれのconfファイルに,それぞれのDocumentRootや各ディレクトリのアクセス関係を記述する。この,conf.dのconfファイルの中に,リアルホスト名のconfファイルを置いてもよい。httpd.confは全体の基本設定をして,各ホスト名についての細かい設定は,このconf.dにあるconfファイルで可能である。そして,リアル,バーチャルにかかわらず,すべてのホスト名がここで,平等に設定可能である。(勿論,このディレクトリにあるconfファイルは,実際は,httpd.conf に読み込まれるものであるので,httpd.confで同様な設定をしても良いことになる。)

wordpress,simple machines forum

これらのソフトは,webでのアクセスで動作し,各webページにインストールすれば,バーチャルホストごとの運用が可能である。即ち,バーチャルとリアルの区別はなく,タイプ2と言える。

このように,各ソフトによって扱いは異なるが,バーチャルドメインでの運用が基本的に可能となっている

但し,バーチャルの考え方は,ソフトによって微妙に異なるので,インストールの際はよく注意して設定をする必要がある。

事前準備

全てのことがそうであるように,OSのインストール・設定にも,事前の準備が重要である。実際に,計画表のように文書化した事前準備もあるし,頭脳・記憶の中で行うだけの準備もあるだろう。
昨年11月に,CentOS8をインストールしたときは,7年前のインストールメモと,私の記憶・想像の中での事前準備のみで,実際の作業を始めた。CentOS6の経験はCentOS8ではあまり役に立たないと考えた。そこで,ネットでの解説記事を参考に,まずは,試行錯誤で行うと思った。実現する機能は,CentOS6の場合とほぼ同じなので,余り難しいとは考えていなかった。実際,スムーズにいった部分もあった。しかし,中々うまくいかず,何日か考えたところもあった。また,方針が間違っていたことに気づき,やり直したこともあった。余裕を取って,1か月くらいと考えていたが,最終的な移行完了は,予定より少しオーバーしてしまった。
これらの経験を,次のOS新インストールのときのために,まとめて置こうと考えたのが,CentOS8インストールメモの投稿であった。しかし,突然の,CentOS開発終了の知らせで,CentOSの利用をあきらめざるを得なかった。そこで後継のOSの候補として,旧サーバーに別のOS,Oracle Linux をインストールすることにした。CentOS8で実現したものとほぼ同じものをOracle Linux で,実現するのが目標であった。これが実現できれば,旧サーバーにに新サーバーの内容を移行し,新サーバーに再度 Oracle Linuxをインストールし,それに旧サーバーのデータを戻すことで,サーバー移行を完了とする予定である。
Oracle LinuxはほぼCentOSと同じであろうという予想から,まだ記憶に新しいCentOS8インストールのメモと経験を使って,インストールを行った。その結果,Oracle LinuxはほぼCentOSと同じであるといことが分かった。そして,今回は,1週間もかからずに,Oracle Linux で求める機能を実現することができた。
現在,CentOS8の新サーバーから,Oracle Linuxの旧サーバーにデータ移行を始めたところである。

Oracle LinuxのインストールがCentOSの場合に比べて,かなり短期間でインストール・設定が可能であったのは,Oracle Linuxは,ほぼCentOSと同じであり,その結果,CentOSのインストール経験を生かすことができたからであった。特に,全体を見て,計画を作り,やり直しや不要な作業を行うことなく,作業ができたのが大きな理由である。勿論,最初のCentOS8のインストールのときは,知識が少なく,あちこちのネットの記事を参考に試行錯誤的に行っていたので,全体を見ての計画などそもそもできなかった。しかし,一度インストールした後は,全体をある程度見渡すことができ,それを生かすことで,短期間に可能であったのと思う。
このメモ,そしてこれに続くメモで,その経験,そしてそれから得た新たな工夫を纏めて,次回の参考としよう。

インストールに先立ち,予めいくつかのことを検討し,決めた。それは以下の通りである。これらを確認しておくことで,大分時間の節約になったと思う。

  • サーバー名は自分が所持しているドメインを使った名前とする。
    SPFやDKimでDNSでの設定が必要となり,VPSのデフォルト名では対応できない。
  • サーバー名はインストール時に決めて,後で変更はしない。
    サーバー名は後で変更は可能であるが,インストールしたソフトとの整合を取る必要があり,変更はかなり面倒になることが多い。
  • サーバー名のIPアドレスをDNSに登録しておく。
  • インストール時にできるだけ多くの設定をして,後でそれを変更しない。
    パーティションも決めて置く。
  • GUIでの利用は考えない。
  • SELinux を使う。
  • ファイヤーウォールは既定のゾーンを使う。workを自宅からのみアクセス可能とする。
  • 複数のバーチャルドメインを利用する。
  • ソフトの設定では,デフォルトの設定をできるだけ使う。
  • 利用するソフトは主として以下の通りとする。
    1. sshd
    2. cockpit
    3. vsftp
    4. httpd(apache),ユーザーは apacheを使う。
    5. php7.4
    6. mysql
    7. phpMyAdmin
    8. wordpress
    9. simple machines forum
    10. postfix
    11. dovecot
    12. mailman
    13. clamav
  • 署名関係では次を利用する。
    1. letsencrypt
    2. SPF
    3. opendkim
  • ソースファイルを用意する。
    OracleLinux-R8-U3-x86_64-dvd.iso 8.60 GB (9,235,857,408 バイト)
    をダウンロードした。

以上の準備のもと,実際のインストール作業に入った。

1 2 3