RHELで始めるサーバー構築:Red Hat Enterprise Linuxによるサーバー構築ガイド
Red Hat Enterprise Linux (RHEL) は、エンタープライズ環境で広く利用されている、信頼性と安定性に優れた Linux ディストリビューションです。本ガイドでは、RHEL を用いたサーバー構築の基礎から応用までを網羅し、初めて RHEL でサーバーを構築する方でもスムーズに作業を進められるように、詳細な手順と解説を提供します。
1. RHEL を選択する理由:
RHEL は、他の Linux ディストリビューションと比較して、以下の点で優れています。
- 安定性と信頼性: RHEL は、長期間のサポートと堅牢なテストプロセスを経て提供されるため、安定性と信頼性に優れています。特に、エンタープライズ環境では、システムのダウンタイムは大きな損失に繋がるため、この点は非常に重要です。
- セキュリティ: RHEL は、セキュリティアップデートと脆弱性対応が迅速かつ継続的に提供されます。また、SELinux (Security-Enhanced Linux) などのセキュリティ機能がデフォルトで有効化されており、高度なセキュリティ環境を構築できます。
- 認定ハードウェアとソフトウェア: RHEL は、多くのハードウェアベンダーやソフトウェアベンダーによって認定されており、互換性と動作が保証されています。これにより、ハードウェアやソフトウェアの選択肢が広がり、安心してシステムを構築できます。
- Red Hat サポート: RHEL は、Red Hat 社による商用サポートを受けることができます。問題発生時には、専門家のサポートを受けることで、迅速な問題解決が可能です。
- エコシステム: RHEL は、Red Hat が提供する様々な製品やサービスと連携できます。これにより、クラウド環境やコンテナ環境など、最新の技術を活用したサーバー構築が容易になります。
2. RHEL の入手とインストール:
RHEL は、Red Hat 社のウェブサイトから入手できます。評価版をダウンロードして試用することも可能です。正式な利用には、Red Hat サブスクリプションが必要です。サブスクリプションの種類によって、サポートレベルや利用できる機能が異なります。
2.1. RHEL のダウンロード:
Red Hat Customer Portal (access.redhat.com) にログインし、必要な RHEL のバージョンとアーキテクチャを選択してダウンロードします。通常、ISO イメージファイル形式で提供されます。
2.2. インストールメディアの作成:
ダウンロードした ISO イメージファイルを、DVD メディアまたは USB メモリに書き込みます。DVD メディアに書き込む場合は、DVD ライティングソフトウェアを使用します。USB メモリに書き込む場合は、dd
コマンドや Rufus などのツールを使用します。
2.3. RHEL のインストール:
作成したインストールメディアからサーバーを起動します。BIOS または UEFI の設定で、起動デバイスを DVD ドライブまたは USB メモリに変更する必要がある場合があります。
2.4. インストーラの使用:
RHEL インストーラが起動したら、画面の指示に従ってインストールを進めます。
- 言語の選択: 最初に、インストーラで使用する言語を選択します。
- キーボードレイアウトの選択: 使用するキーボードレイアウトを選択します。
- インストールの種類: 通常は、「サーバー」または「最小限のインストール」を選択します。「サーバー(GUI 使用)」を選択すると、グラフィカルなデスクトップ環境がインストールされますが、サーバー用途ではリソースを消費するため、推奨されません。
- インストール先: RHEL をインストールするディスクを選択します。ディスクが複数ある場合は、適切なディスクを選択してください。
- パーティションの設定: パーティションを自動構成することも、手動で構成することもできます。手動で構成する場合は、少なくとも以下のパーティションが必要です。
/
: ルートパーティション (通常は 20GB 以上)/boot
: ブートパーティション (通常は 1GB 以上)swap
: スワップパーティション (通常は RAM 容量の 2 倍程度)- 必要に応じて、
/home
,/var
,/tmp
などのパーティションを作成することもできます。
- ネットワークの設定: ネットワークインターフェースの設定を行います。IP アドレス、ネットマスク、ゲートウェイ、DNS サーバーなどを設定します。
- ユーザーアカウントの作成: root ユーザーのパスワードを設定します。また、通常使用するユーザーアカウントも作成します。
- インストールの開始: 設定が完了したら、インストールの開始をクリックします。
2.5. インストール後の設定:
インストールが完了したら、サーバーを再起動します。再起動後、作成したユーザーアカウントでログインします。
- ネットワーク設定の確認:
ip addr
コマンドなどで、ネットワーク設定が正しく行われているかを確認します。 - パッケージのアップデート:
yum update
コマンドで、インストールされているパッケージを最新の状態にアップデートします。 - タイムゾーンの設定:
timedatectl set-timezone <タイムゾーン>
コマンドで、タイムゾーンを設定します。(例:timedatectl set-timezone Asia/Tokyo
) - ホスト名の設定:
/etc/hostname
ファイルを編集して、ホスト名を設定します。 - SELinux の設定: SELinux が有効になっていることを確認します。必要に応じて、SELinux のポリシーを調整します。
- ファイアウォールの設定:
firewall-cmd
コマンドで、ファイアウォールを設定します。必要なポートを開放し、不要なポートを閉じます。
3. 基本的なサーバー構築:
RHEL をインストールしたら、次に、目的に応じたサーバーを構築します。ここでは、基本的なサーバー構築として、Web サーバー、DNS サーバー、メールサーバーの構築について説明します。
3.1. Web サーバー (Apache):
Apache は、最も広く利用されている Web サーバーの一つです。RHEL では、httpd
パッケージとして提供されています。
- httpd パッケージのインストール:
yum install httpd
コマンドで、httpd パッケージをインストールします。 - Apache の起動:
systemctl start httpd
コマンドで、Apache を起動します。 - Apache の自動起動設定:
systemctl enable httpd
コマンドで、Apache を自動起動するように設定します。 - ファイアウォールの設定:
firewall-cmd --permanent --add-service=http
コマンドで、HTTP (ポート 80) をファイアウォールで開放します。firewall-cmd --reload
コマンドで、ファイアウォールを再読み込みします。 - Apache の設定:
/etc/httpd/conf/httpd.conf
ファイルを編集して、Apache の設定を行います。- DocumentRoot: Web サイトのドキュメントルート (Web コンテンツを配置するディレクトリ) を設定します。
- ServerName: Web サーバーのホスト名を設定します。
- VirtualHost: 複数の Web サイトをホストする場合、VirtualHost を設定します。
- Web コンテンツの配置: Web サイトのコンテンツを、DocumentRoot に設定したディレクトリに配置します。
- SELinux の設定: SELinux が有効になっている場合、Web コンテンツに適切な SELinux コンテキストを設定する必要があります。
chcon
コマンドを使用します。
3.2. DNS サーバー (BIND):
BIND は、最も広く利用されている DNS サーバーの一つです。RHEL では、bind
パッケージとして提供されています。
- bind パッケージのインストール:
yum install bind
コマンドで、bind パッケージをインストールします。 - named の起動:
systemctl start named
コマンドで、named (BIND のデーモンプロセス) を起動します。 - named の自動起動設定:
systemctl enable named
コマンドで、named を自動起動するように設定します。 - ファイアウォールの設定:
firewall-cmd --permanent --add-service=dns
コマンドで、DNS (ポート 53) をファイアウォールで開放します。firewall-cmd --reload
コマンドで、ファイアウォールを再読み込みします。 - BIND の設定:
/etc/named.conf
ファイルを編集して、BIND の設定を行います。- options: グローバルなオプションを設定します。
- zone: ゾーンを設定します。ゾーンは、DNS の名前空間の一部を表します。正引きゾーンと逆引きゾーンを設定する必要があります。
- ゾーンファイルの作成: 正引きゾーンと逆引きゾーンのゾーンファイルを作成します。ゾーンファイルには、ホスト名と IP アドレスのマッピングを記述します。
- SELinux の設定: SELinux が有効になっている場合、ゾーンファイルに適切な SELinux コンテキストを設定する必要があります。
chcon
コマンドを使用します。
3.3. メールサーバー (Postfix):
Postfix は、安全で信頼性の高いメールサーバーです。RHEL では、postfix
パッケージとして提供されています。
- postfix パッケージのインストール:
yum install postfix
コマンドで、postfix パッケージをインストールします。 - postfix の起動:
systemctl start postfix
コマンドで、postfix を起動します。 - postfix の自動起動設定:
systemctl enable postfix
コマンドで、postfix を自動起動するように設定します。 - ファイアウォールの設定:
firewall-cmd --permanent --add-service=smtp
コマンドで、SMTP (ポート 25) をファイアウォールで開放します。firewall-cmd --reload
コマンドで、ファイアウォールを再読み込みします。 - Postfix の設定:
/etc/postfix/main.cf
ファイルを編集して、Postfix の設定を行います。- myhostname: メールサーバーのホスト名を設定します。
- mydomain: メールサーバーのドメイン名を設定します。
- myorigin: 送信メールの送信元ドメインを設定します。
- mydestination: ローカルに配信するドメインを設定します。
- relayhost: 他のメールサーバーにメールをリレーする場合、リレーホストを設定します。
- ユーザーアカウントの作成: メールアカウントを作成します。
useradd
コマンドでユーザーアカウントを作成し、passwd
コマンドでパスワードを設定します。 - SELinux の設定: SELinux が有効になっている場合、Postfix の設定ファイルに適切な SELinux コンテキストを設定する必要があります。
chcon
コマンドを使用します。
4. 高度なサーバー構築:
上記の基本的なサーバー構築に加えて、より高度なサーバー構築を行うことができます。ここでは、ロードバランサー、データベースサーバー、コンテナ環境の構築について説明します。
4.1. ロードバランサー (HAProxy):
HAProxy は、高性能なロードバランサーです。RHEL では、haproxy
パッケージとして提供されています。ロードバランサーは、複数のサーバーにトラフィックを分散することで、負荷を分散し、可用性を向上させます。
- haproxy パッケージのインストール:
yum install haproxy
コマンドで、haproxy パッケージをインストールします。 - HAProxy の起動:
systemctl start haproxy
コマンドで、HAProxy を起動します。 - HAProxy の自動起動設定:
systemctl enable haproxy
コマンドで、HAProxy を自動起動するように設定します。 - ファイアウォールの設定: HAProxy がリッスンするポートをファイアウォールで開放します。
- HAProxy の設定:
/etc/haproxy/haproxy.cfg
ファイルを編集して、HAProxy の設定を行います。- global: グローバルなオプションを設定します。
- defaults: デフォルトのオプションを設定します。
- frontend: フロントエンド (クライアントからの接続を受け付ける部分) を設定します。
- backend: バックエンド (トラフィックを分散するサーバーのグループ) を設定します。
- ヘルスチェックの設定: バックエンドサーバーのヘルスチェックを設定します。HAProxy は、ヘルスチェックの結果に基づいて、正常なサーバーにのみトラフィックを分散します。
4.2. データベースサーバー (MySQL/MariaDB):
MySQL または MariaDB は、広く利用されているリレーショナルデータベースサーバーです。RHEL では、mysql-server
または mariadb-server
パッケージとして提供されています。
- mysql-server または mariadb-server パッケージのインストール:
yum install mysql-server
またはyum install mariadb-server
コマンドで、データベースサーバーのパッケージをインストールします。 - データベースサーバーの起動:
systemctl start mysqld
またはsystemctl start mariadb
コマンドで、データベースサーバーを起動します。 - データベースサーバーの自動起動設定:
systemctl enable mysqld
またはsystemctl enable mariadb
コマンドで、データベースサーバーを自動起動するように設定します。 - ファイアウォールの設定: データベースサーバーがリッスンするポートをファイアウォールで開放します。
- 初期設定:
mysql_secure_installation
スクリプトを実行して、データベースサーバーの初期設定を行います。 - ユーザーアカウントの作成: データベースにアクセスするためのユーザーアカウントを作成します。
- データベースの作成: アプリケーションで使用するデータベースを作成します。
- SELinux の設定: SELinux が有効になっている場合、データベースサーバーの設定ファイルに適切な SELinux コンテキストを設定する必要があります。
chcon
コマンドを使用します。
4.3. コンテナ環境 (Docker/Podman):
Docker または Podman は、コンテナ仮想化技術です。RHEL では、docker
または podman
パッケージとして提供されています。コンテナは、アプリケーションとその依存関係をパッケージ化し、隔離された環境で実行することができます。
- docker または podman パッケージのインストール:
yum install docker
またはyum install podman
コマンドで、コンテナ環境のパッケージをインストールします。 - Docker または Podman の起動:
systemctl start docker
またはsystemctl start podman
コマンドで、Docker または Podman を起動します。 - Docker または Podman の自動起動設定:
systemctl enable docker
またはsystemctl enable podman
コマンドで、Docker または Podman を自動起動するように設定します。 - ファイアウォールの設定: コンテナが公開するポートをファイアウォールで開放します。
- Docker イメージのダウンロード: Docker Hub から必要なイメージをダウンロードします。
- コンテナの作成と実行:
docker run
またはpodman run
コマンドで、コンテナを作成して実行します。 - Docker Compose の利用: 複数のコンテナを連携させて実行する場合、Docker Compose を利用すると便利です。
- SELinux の設定: SELinux が有効になっている場合、コンテナに適切な SELinux コンテキストを設定する必要があります。
5. RHEL のセキュリティ:
RHEL は、セキュリティに重点を置いたディストリビューションです。以下のセキュリティ対策を講じることで、RHEL サーバーのセキュリティをさらに強化できます。
- SELinux の有効化: SELinux を有効にして、強制アクセス制御 (MAC) を実施します。SELinux は、システムのセキュリティポリシーに基づいて、プロセスがファイルやリソースにアクセスできるかどうかを制御します。
- ファイアウォールの設定: ファイアウォールを設定して、不要なポートを閉じます。
firewall-cmd
コマンドを使用します。 - 定期的なアップデート:
yum update
コマンドで、パッケージを定期的にアップデートします。セキュリティアップデートは、脆弱性への対応が含まれているため、非常に重要です。 - root アカウントの利用制限: root アカウントの使用を最小限に抑え、sudo コマンドを使用して、必要な場合にのみ root 権限を取得します。
- パスワードポリシーの設定: 強力なパスワードポリシーを設定し、定期的にパスワードを変更するようにユーザーに促します。
- SSH の設定: SSH の設定を強化します。パスワード認証を無効にし、公開鍵認証を使用するように設定します。また、SSH のポート番号を変更することも有効です。
- ログ監視: ログ監視システムを導入して、不正なアクセスや異常な動作を監視します。
- 侵入検知システム (IDS) / 侵入防御システム (IPS) の導入: IDS/IPS を導入して、不正なアクセスや攻撃を検知し、防御します。
6. RHEL の運用と保守:
RHEL サーバーを安定して運用するためには、定期的な運用と保守が必要です。
- バックアップ: 定期的にバックアップを取得します。バックアップは、データの損失を防ぐために非常に重要です。
- 監視: サーバーのリソース使用状況やパフォーマンスを監視します。監視ツールを使用して、CPU 使用率、メモリ使用率、ディスク使用率、ネットワークトラフィックなどを監視します。
- ログ分析: ログを定期的に分析して、不正なアクセスや異常な動作を検知します。
- パフォーマンスチューニング: サーバーのパフォーマンスが低下した場合、パフォーマンスチューニングを行います。CPU、メモリ、ディスク、ネットワークなどのボトルネックを特定し、改善します。
- 障害対応: 障害が発生した場合、迅速に対応します。障害の原因を特定し、解決策を実施します。
7. まとめ:
RHEL は、安定性と信頼性に優れたエンタープライズ向けの Linux ディストリビューションです。本ガイドでは、RHEL を用いたサーバー構築の基礎から応用までを網羅し、初めて RHEL でサーバーを構築する方でもスムーズに作業を進められるように、詳細な手順と解説を提供しました。本ガイドを参考に、RHEL を活用して、安全で信頼性の高いサーバーを構築してください。
8. 参考資料:
- Red Hat Enterprise Linux Documentation: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
- Apache Documentation: https://httpd.apache.org/docs/
- BIND Documentation: https://www.isc.org/bind/
- Postfix Documentation: http://www.postfix.org/
- HAProxy Documentation: https://www.haproxy.org/
- MySQL Documentation: https://dev.mysql.com/doc/
- MariaDB Documentation: https://mariadb.com/kb/en/
- Docker Documentation: https://docs.docker.com/
- Podman Documentation: https://podman.io/