サーバー設定 · 3 min read · Sep 08, 2025
ISPConfigの完璧なマルチサーバーセットアップ(Ubuntu 20.04およびDebian 10)

このチュートリアルでは、パネル、ウェブ、DNS、メール、ウェブメール用の専用サーバーを使用して、独自のISPConfig 3マルチサーバーセットアップをインストールする手順を説明します。DNSサーバーとメールサーバーには冗長性のためにミラーサーバーがあります。後で特定のタイプのサーバーを簡単に追加できます。
ISPConfigの公式自動インストーラーを使用してサーバーをセットアップします。オペレーティングシステムにはDebian 10を使用します。このガイドはUbuntu 20.04.2でもテストされています。
自動インストーラーの詳細については、こちらをお読みください。
1. 予備ノート
これがインストールするホストです:
host FQDN IP
panel panel.example.com 10.0.64.12
web01 web01.example.com 10.0.64.13
mx1 mx1.example.com 10.0.64.14
mx2 mx2.example.com 10.0.64.15
ns1 ns1.example.com 10.0.64.16
ns2 ns2.example.com 10.0.64.17
webmail webmail.example.com 10.0.64.18例のホスト名、IPアドレス、およびIP範囲を使用します。コマンド/設定でそれに応じて変更してください。
すべてのサーバーは同じプライベートネットワーク上にありますが、それぞれ独自のパブリックIPを持っています。サーバーが共有ローカルネットワークを持っていない場合は、パブリックIPv4アドレスを使用してください。
サーバーのインストールを開始する前に、サーバーのパブリックIPアドレスを指すAおよび必要に応じてAAAAレコードを設定してください。たとえば、ホスト名がpanel.example.comでパブリックIPが11.22.33.44の場合、panel.example.comが11.22.33.44を指すAレコードを設定する必要があります。すべてのサーバーは独自のパブリックIPとホスト名を持つ必要があります。 **
2. マスターサーバーのインストール
rootとしてログインするか、次のコマンドを実行して
su -サーバーでrootユーザーになります。重要:’su -‘を使用し、単に’su’を使用しないでください。そうしないと、DebianによってPATH変数が誤って設定されます。
2.1 ホスト名とホストの設定
サーバーのホスト名は「panel.example.com」のようなサブドメインである必要があります。「example.com」のようなサブドメイン部分のないドメイン名をホスト名として使用しないでください。そうしないと、後でメール設定に問題が発生します。まず、/etc/hostsでホスト名を確認し、必要に応じて変更してください。行は次のようになります:「IPアドレス - スペース - ドメインを含む完全なホスト名 - スペース - サブドメイン部分」。ホスト名panel.example.comの場合、ファイルは次のようになります(いくつかの行は異なる場合があります。ホスティングプロバイダーによって異なることがあります):
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
# この行はすべてのノードで正しいサーバー名に変更する必要があります:
127.0.1.1 panel.example.com panel
# これらの行はすべてのノードで同じです:
10.0.64.12 panel.example.com panel
10.0.64.13 web01.example.com web01
10.0.64.14 mx1.example.com mx1
10.0.64.15 mx2.example.com mx2
10.0.64.16 ns1.example.com ns1
10.0.64.17 ns2.example.com ns2
10.0.64.18 webmail.example.com webmail
# 次の行はIPv6対応ホストにとって望ましいです
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersご覧のとおり、他のサーバーのホスト名も追加しましたので、後で内部ネットワークを介して通信できます。
次に、/etc/hostnameファイルを編集します:
nano /etc/hostnameそれにはサブドメイン部分のみが含まれている必要があります。私たちの場合:
panel最後に、変更を適用するためにサーバーを再起動します:
systemctl reboot再度ログインし、次のコマンドでホスト名が正しいかどうかを確認します:
hostname
hostname -f出力は次のようになります:
root@panel:~$ hostname
panel
root@panel:~$ hostname -f
panel.example.comこれで、必要なすべてのパッケージとISPConfigをインストールするために自動インストーラーを実行できます:
wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=systemしばらくすると、次のように表示されます:
WARNING! このスクリプトはサーバー全体を再構成します!
これは新しくインストールされたサーバーで実行する必要があり、現在行ったすべての設定はおそらく失われます!
本当に続行したい場合は「yes」と入力してください:「yes」と答えてEnterを押します。インストーラーが開始されます。
インストーラーが完了すると、次のようにISPConfig管理者とMySQLルートパスワードが表示されます:
[INFO] あなたのISPConfig管理者パスワードは:5GvfSSSYsdfdYC
[INFO] あなたのMySQLルートパスワードは:kkAkft82d!kafMwqxdtYsこれらの情報をメモしておき、どのサーバーに対するものかを記録してください。後で必要になります。
2.2 スレーブサーバー用のリモートMySQLユーザーの設定
他のサーバーがインストール中にこのノードのISPConfigデータベースに接続できるようにするために、MySQLにログインして、マスターデータベースに各スレーブサーバーのホスト名とIPアドレスのMySQLルートユーザーのレコードを追加します。
ターミナルで次のコマンドを実行します:
mysql -u root -pMySQLパスワードを入力し、次のコマンドを実行します:
CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;上記のSQLコマンドでは、IPアドレス(10.0.64.12 - 10.0.64.18)をサーバーのIPアドレスに、web01.example.com、mx1.example.com、mx2.example.com、ns1.example.com、ns2.example.com、webmail.example.comをサーバーのホスト名に、myrootpasswordを希望するルートパスワードに置き換えます(各ホストに異なるパスワードを使用することは良い習慣です。メモしておいてください。スレーブサーバーをインストールまたは更新する際に必要になります)。
これが完了したら、次のコマンドでMySQLを終了できます:
EXIT;これで、https://panel.example.com:8080にadminというユーザー名とインストーラーが表示したパスワードでISPConfigにログインできます。
2.3 ファイアウォールの設定
最後に、ファイアウォールを設定する必要があります。
ISPConfig UIにログインし、システム -> ファイアウォールに移動します。次に、「新しいファイアウォールレコードを追加」をクリックします。
パネルサーバーの場合、次のポートを開く必要があります:
TCP:
22,80,443,8080,8081UIを介して開く必要のあるUDPポートはありません。
また、MySQLに使用されるポート3306も開きますが、セキュリティ上の理由からローカルネットワークからのみ開きます。そのためには、ISPConfigパネルからの変更が伝播した後(赤い点が消えたとき)に、CLIから次のコマンドを実行します:
ufw allow from 10.0.64.0/24 to any port 3306 proto tcpこれで、パネルが設定され、使用する準備が整いました。
次のステップでは、ウェブサーバーをインストールします。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。