CentOS 8入門:初心者でもわかるLinuxサーバー構築
CentOS 8は、Red Hat Enterprise Linux (RHEL) 8をベースにしたコミュニティ主導のLinuxディストリビューションであり、サーバー用途として非常に人気があります。安定性とセキュリティに優れ、長期間にわたってサポートが提供されるため、企業や個人が安心して利用できます。本記事では、Linux初心者の方でもCentOS 8を使ってサーバーを構築できるように、基礎から応用までを丁寧に解説します。
目次
- CentOS 8とは?
- CentOSの概要
- CentOS 8の特徴とメリット
- RHELとの違い
- CentOS Streamへの移行とCentOS 8のEOL
- サーバー構築の基礎知識
- サーバーとは?
- サーバーの種類
- CentOS 8が適している用途
- 必要なハードウェアとソフトウェア
- CentOS 8のインストール
- 仮想環境 (VirtualBox) の構築
- CentOS 8のダウンロード
- インストールメディアの作成 (USBメモリ)
- CentOS 8のインストール手順
- ネットワーク設定
- タイムゾーン設定
- rootパスワード設定
- ユーザーアカウントの作成
- CentOS 8の初期設定
- パッケージ管理システム (yum/dnf) の理解
- リポジトリ設定
- OSのアップデート
- SELinuxとファイアウォールの設定
- SSHの設定 (リモートアクセス)
- ホスト名の設定
- 基本的なサーバー構築
- Webサーバー (Apache) の構築
- Apacheのインストール
- 設定ファイルの編集
- バーチャルホストの設定
- SSL/TLS証明書の導入
- Apacheの起動と停止
- データベースサーバー (MariaDB) の構築
- MariaDBのインストール
- 初期設定 (rootパスワードの設定)
- データベースとユーザーの作成
- リモートアクセスの設定
- メールサーバー (Postfix) の構築 (概要)
- Postfixのインストール
- 基本的な設定
- DKIM/SPF/DMARCの設定 (セキュリティ対策)
- Webサーバー (Apache) の構築
- セキュリティ対策
- ファイアウォールの設定 (firewalld)
- SELinuxの活用
- SSHのセキュリティ強化
- rootユーザーの扱い
- 定期的なアップデート
- ログ監視
- サーバーの運用と管理
- プロセスの監視
- リソースの使用状況の監視
- ログの管理
- バックアップとリストア
- トラブルシューティング
- CentOS 8の学習リソース
- 公式ドキュメント
- オンラインコミュニティ
- 書籍と記事
- 資格試験
1. CentOS 8とは?
1.1 CentOSの概要
CentOS (Community ENTerprise Operating System) は、RHEL (Red Hat Enterprise Linux) のソースコードをベースに、Red Hatの商標などを取り除いた、無償で利用できるLinuxディストリビューションです。RHELの高い安定性とセキュリティをそのまま受け継いでおり、多くの企業や個人がサーバー用途で利用しています。
1.2 CentOS 8の特徴とメリット
CentOS 8は、CentOS 7から大幅なアップデートが加えられ、様々な点で優れています。
- 最新のソフトウェア: 最新のLinuxカーネル、GNOMEデスクトップ環境、gccコンパイラなどが含まれています。
- YumからDnfへの移行: パッケージ管理システムがyumからdnfに置き換わり、依存関係の解決がより効率的になりました。
- モジュールストリーム: 特定のソフトウェアを複数のバージョンから選択してインストールできるモジュールストリームが導入されました。
- セキュリティの強化: より新しいバージョンのセキュリティ関連ソフトウェアが採用され、セキュリティが強化されました。
- 長期間のサポート: 標準的なサポート期間は10年間と長く、安定した運用が可能です。(CentOS 8自体は2021年12月末でEOLを迎えましたが、RHEL 8を基盤とした知識は依然として有効です。)
1.3 RHELとの違い
CentOSとRHELの最も大きな違いは、費用とサポート体制です。RHELはRed Hat社が提供する商用ディストリビューションであり、利用にはライセンス費用が必要です。しかし、Red Hat社による手厚いサポートを受けることができます。一方、CentOSは無償で利用できますが、公式なサポートはありません。CentOSコミュニティが提供するサポートを利用することになります。
1.4 CentOS Streamへの移行とCentOS 8のEOL
Red Hatは、CentOS Linuxの開発を終了し、代わりにCentOS Streamに注力することを発表しました。CentOS Streamは、RHELのアップストリームバージョンであり、RHELの次期バージョンの開発過程を先行して体験できます。CentOS 8は2021年12月末にEOL (End of Life) を迎え、セキュリティアップデートなどのサポートが終了しました。
CentOS 8ユーザーは、以下のいずれかの選択肢を検討する必要があります。
- RHELへの移行: Red Hatの商用版に移行することで、継続的なサポートを受けることができます。
- AlmaLinuxやRocky Linuxへの移行: CentOS Linuxの代替となる、コミュニティ主導のRHEL互換ディストリビューションです。
- 他のLinuxディストリビューションへの移行: Ubuntu ServerやDebianなど、他のLinuxディストリビューションへの移行も可能です。
本記事では、CentOS 8の知識が他のRHEL互換ディストリビューションやLinuxディストリビューションにも応用できることを念頭に、サーバー構築の基礎を解説していきます。
2. サーバー構築の基礎知識
2.1 サーバーとは?
サーバーとは、ネットワークを通じて他のコンピューター (クライアント) にサービスを提供するコンピューターのことです。具体的には、Webサイトのデータを配信したり、メールを送信・受信したり、データベースを管理したりするなど、様々な役割を担います。
2.2 サーバーの種類
サーバーには様々な種類があります。
- Webサーバー: Webサイトのコンテンツを配信するサーバー。ApacheやNginxが代表的です。
- データベースサーバー: データベースを管理するサーバー。MySQL、MariaDB、PostgreSQLなどが代表的です。
- メールサーバー: メールを送信・受信するサーバー。Postfix、Sendmailなどが代表的です。
- ファイルサーバー: ファイルを共有するサーバー。Samba、NFSなどが代表的です。
- DNSサーバー: ドメイン名とIPアドレスを紐付けるサーバー。BINDなどが代表的です。
2.3 CentOS 8が適している用途
CentOS 8 (およびRHEL互換ディストリビューション) は、安定性、セキュリティ、長期間のサポートが求められるサーバー用途に適しています。
- Webサーバー: 企業サイトやECサイトなど、安定した稼働が求められるWebサイトのホスティングに適しています。
- データベースサーバー: 顧客情報や製品情報など、重要なデータを管理するデータベースサーバーに適しています。
- アプリケーションサーバー: 業務アプリケーションやWebアプリケーションなど、様々なアプリケーションを実行するサーバーに適しています。
- 開発・テスト環境: RHELと互換性があるため、RHEL環境での動作確認を行うための開発・テスト環境に適しています。
2.4 必要なハードウェアとソフトウェア
CentOS 8をインストールするためには、以下のハードウェアとソフトウェアが必要です。
- ハードウェア:
- CPU: 64ビットのプロセッサ (推奨: 2コア以上)
- メモリ: 2GB以上 (推奨: 4GB以上)
- ストレージ: 20GB以上 (推奨: 40GB以上)
- ネットワークインターフェース
- インストールメディア (USBメモリまたはDVDドライブ)
- ソフトウェア:
- CentOS 8のISOイメージファイル
- ISOイメージをUSBメモリに書き込むためのソフトウェア (例: Rufus, Etcher)
- 仮想環境構築ソフトウェア (VirtualBox, VMware Workstation など) (仮想環境にインストールする場合)
3. CentOS 8のインストール
3.1 仮想環境 (VirtualBox) の構築
CentOS 8を物理サーバーに直接インストールすることも可能ですが、初心者の方は仮想環境 (VirtualBoxなど) を利用することをお勧めします。仮想環境では、既存のOS (Windows, macOSなど) 上にCentOS 8をインストールできるため、誤ってシステムを破壊するリスクを減らすことができます。
VirtualBoxのインストール手順は以下の通りです。
- VirtualBoxの公式サイト (https://www.virtualbox.org/) から、お使いのOSに対応したインストーラーをダウンロードします。
- ダウンロードしたインストーラーを実行し、指示に従ってVirtualBoxをインストールします。
- VirtualBoxを起動し、新しい仮想マシンを作成します。
- 仮想マシンの名前、OSの種類 (Linux)、バージョン (Red Hat (64-bit)) を指定します。
- 仮想マシンのメモリサイズ (4GB以上を推奨) を指定します。
- 仮想ハードディスクを作成します。VDI形式、動的割り当てを選択します。
- 仮想ハードディスクのサイズ (40GB以上を推奨) を指定します。
3.2 CentOS 8のダウンロード
CentOS 8のISOイメージファイルは、CentOSの公式サイト (https://www.centos.org/) からダウンロードできます。ただし、CentOS 8はEOLを迎えているため、アーカイブサイトからダウンロードする必要があります。
3.3 インストールメディアの作成 (USBメモリ)
ダウンロードしたISOイメージファイルをUSBメモリに書き込み、インストールメディアを作成します。Rufusなどのツールを使うと簡単に作成できます。
- Rufusを起動します。
- デバイス (USBメモリ) を選択します。
- ブートの種類で、ISOイメージを選択し、ダウンロードしたCentOS 8のISOイメージファイルを選択します。
- スタートボタンをクリックし、USBメモリへの書き込みを開始します。
- 書き込みが完了したら、USBメモリを取り外します。
3.4 CentOS 8のインストール手順
- VirtualBoxを起動し、作成した仮想マシンを起動します。
- 起動時に、作成したUSBメモリを選択し、CentOS 8のインストーラーを起動します。
- インストーラーが起動したら、言語を選択し、インストール概要画面に進みます。
- インストール概要画面では、以下の項目を設定します。
- キーボード: 使用するキーボードレイアウトを選択します。
- 言語サポート: 使用する言語を選択します。
- 時刻と日付: タイムゾーンを選択します。
- インストール元: インストールメディア (USBメモリ) が選択されていることを確認します。
- ソフトウェアの選択: サーバーを選択します。(GUI環境が必要な場合は、サーバー (GUI付き) を選択します。)
- インストール先: インストール先のハードディスクを選択します。自動パーティション構成で問題ありませんが、必要に応じてカスタムパーティション構成を選択することもできます。
- KDUMP: KDUMPを有効にするかどうかを選択します。(デフォルトで有効になっています。)
- ネットワークとホスト名: ネットワークインターフェースを設定し、ホスト名を設定します。
- セキュリティポリシー: セキュリティポリシーを設定します。(デフォルトで有効になっています。)
- 設定が完了したら、インストールの開始ボタンをクリックします。
- インストール中に、rootパスワードとユーザーアカウントを作成します。
3.5 ネットワーク設定
インストール概要画面の「ネットワークとホスト名」で、ネットワークインターフェースを設定します。
- ホスト名: サーバーのホスト名を設定します。FQDN (Fully Qualified Domain Name) 形式で設定することをお勧めします。(例: server.example.com)
- イーサネット: ネットワークインターフェースを選択し、有効にします。
- 設定: IPアドレス、ネットマスク、ゲートウェイ、DNSサーバーなどを設定します。DHCPサーバーからIPアドレスを自動的に取得する場合は、DHCPを有効にします。固定IPアドレスを設定する場合は、手動で設定します。
3.6 タイムゾーン設定
インストール概要画面の「時刻と日付」で、タイムゾーンを設定します。
- 地域: 日本を選択します。
- 都市: 東京を選択します。
- ネットワーク時刻: NTPサーバーを使用して時刻を自動的に同期する場合は、ネットワーク時刻を有効にします。
3.7 rootパスワード設定
インストール中に、rootユーザーのパスワードを設定します。強力なパスワードを設定してください。
3.8 ユーザーアカウントの作成
インストール中に、一般ユーザーアカウントを作成します。rootユーザーでログインするのではなく、一般ユーザーでログインし、必要に応じてsudoコマンドを使用してroot権限を取得することをお勧めします。
4. CentOS 8の初期設定
4.1 パッケージ管理システム (yum/dnf) の理解
CentOS 8では、パッケージ管理システムとしてdnfが使用されます。dnfは、yumの後継であり、依存関係の解決がより効率的になりました。
- パッケージ: ソフトウェアのファイルや設定情報などをまとめたもの。
- リポジトリ: パッケージが保存されている場所。
- パッケージ管理システム: パッケージのインストール、アップデート、削除などを管理するシステム。
4.2 リポジトリ設定
dnfは、リポジトリからパッケージをダウンロードしてインストールします。CentOS 8には、標準のリポジトリが設定されていますが、必要に応じて追加のリポジトリを設定することもできます。
4.3 OSのアップデート
インストール後、最初にOSをアップデートすることをお勧めします。
bash
sudo dnf update
このコマンドを実行すると、インストール済みのパッケージが最新の状態にアップデートされます。
4.4 SELinuxとファイアウォールの設定
SELinux (Security-Enhanced Linux) は、Linuxカーネルのセキュリティ機能を強化する仕組みです。ファイアウォールは、ネットワークからの不正なアクセスを防ぐための仕組みです。
CentOS 8では、SELinuxが有効になっており、ファイアウォールとしてfirewalldが使用されます。
- SELinux: 状態を確認するには
sestatusコマンドを使用します。必要に応じて、設定を変更することもできますが、基本的には有効にしたままにしておくことをお勧めします。 - firewalld: 状態を確認するには
sudo firewall-cmd --stateコマンドを使用します。必要なポートを開放したり、サービスを許可したりするには、firewall-cmdコマンドを使用します。
4.5 SSHの設定 (リモートアクセス)
SSH (Secure Shell) は、リモートからサーバーに安全にアクセスするためのプロトコルです。CentOS 8では、SSHサーバーがデフォルトでインストールされており、有効になっています。
SSHの設定は、/etc/ssh/sshd_configファイルで行います。
- ポート番号: デフォルトでは22番ポートが使用されますが、セキュリティのために別のポート番号に変更することをお勧めします。
- PermitRootLogin: rootユーザーでのログインを許可するかどうかを設定します。セキュリティのため、許可しないことをお勧めします。
- PasswordAuthentication: パスワード認証を許可するかどうかを設定します。セキュリティのため、公開鍵認証を使用することをお勧めします。
4.6 ホスト名の設定
ホスト名は、/etc/hostnameファイルに設定します。
bash
sudo hostnamectl set-hostname <ホスト名>
5. 基本的なサーバー構築
5.1 Webサーバー (Apache) の構築
5.1.1 Apacheのインストール
bash
sudo dnf install httpd
5.1.2 設定ファイルの編集
Apacheの設定ファイルは、/etc/httpd/conf/httpd.confです。
5.1.3 バーチャルホストの設定
複数のWebサイトを1つのサーバーでホスティングする場合は、バーチャルホストを設定します。
バーチャルホストの設定ファイルは、/etc/httpd/conf.d/ディレクトリに作成します。
5.1.4 SSL/TLS証明書の導入
SSL/TLS証明書を導入することで、WebサイトをHTTPSで暗号化することができます。
Let’s Encryptなどの無償の証明書を利用することもできます。
5.1.5 Apacheの起動と停止
bash
sudo systemctl start httpd # Apacheの起動
sudo systemctl stop httpd # Apacheの停止
sudo systemctl restart httpd # Apacheの再起動
sudo systemctl status httpd # Apacheの状態確認
sudo systemctl enable httpd # Apacheの自動起動設定
5.2 データベースサーバー (MariaDB) の構築
5.2.1 MariaDBのインストール
bash
sudo dnf install mariadb-server
5.2.2 初期設定 (rootパスワードの設定)
bash
sudo mysql_secure_installation
5.2.3 データベースとユーザーの作成
sql
CREATE DATABASE <データベース名>;
CREATE USER '<ユーザー名>'@'localhost' IDENTIFIED BY '<パスワード>';
GRANT ALL PRIVILEGES ON <データベース名>.* TO '<ユーザー名>'@'localhost';
FLUSH PRIVILEGES;
5.2.4 リモートアクセスの設定
リモートからデータベースにアクセスする場合は、bind-addressを0.0.0.0に変更し、ファイアウォールで3306番ポートを開放する必要があります。
5.3 メールサーバー (Postfix) の構築 (概要)
5.3.1 Postfixのインストール
bash
sudo dnf install postfix
5.3.2 基本的な設定
Postfixの設定ファイルは、/etc/postfix/main.cfです。
5.3.3 DKIM/SPF/DMARCの設定 (セキュリティ対策)
メールサーバーを構築する際は、DKIM (DomainKeys Identified Mail)、SPF (Sender Policy Framework)、DMARC (Domain-based Message Authentication, Reporting & Conformance) などのセキュリティ対策を設定することをお勧めします。
6. セキュリティ対策
6.1 ファイアウォールの設定 (firewalld)
bash
sudo firewall-cmd --state # ファイアウォールの状態確認
sudo firewall-cmd --zone=public --add-port=<ポート番号>/tcp --permanent # ポートの開放 (TCP)
sudo firewall-cmd --zone=public --add-service=<サービス名> --permanent # サービスの許可
sudo firewall-cmd --reload # 設定の反映
6.2 SELinuxの活用
SELinuxを有効にして、強制モードで運用することをお勧めします。
6.3 SSHのセキュリティ強化
- ポート番号の変更
- PermitRootLoginの禁止
- PasswordAuthenticationの禁止
- 公開鍵認証の利用
6.4 rootユーザーの扱い
rootユーザーでの直接ログインは避け、一般ユーザーでログインし、sudoコマンドを使用してroot権限を取得することをお勧めします。
6.5 定期的なアップデート
bash
sudo dnf update
6.6 ログ監視
ログファイルを定期的に監視し、不正なアクセスや異常な動作を検知します。
7. サーバーの運用と管理
7.1 プロセスの監視
psコマンドやtopコマンドを使用して、プロセスの状態を監視します。
7.2 リソースの使用状況の監視
dfコマンドやduコマンドを使用して、ディスクの使用状況を監視します。freeコマンドを使用して、メモリの使用状況を監視します。vmstatコマンドを使用して、CPUの使用状況を監視します。
7.3 ログの管理
ログファイルを定期的にローテーションし、ディスク容量を節約します。logrotateコマンドを使用すると、ログファイルのローテーションを自動的に行うことができます。
7.4 バックアップとリストア
定期的にバックアップを取得し、障害発生時にデータを復旧できるようにします。
7.5 トラブルシューティング
問題が発生した場合は、ログファイルを確認したり、関連するドキュメントを読んだりして、原因を究明し、解決策を見つけます。
8. CentOS 8の学習リソース
8.1 公式ドキュメント
- Red Hat Enterprise Linux documentation: (RHELのドキュメントを参照することで、CentOS 8の知識を深めることができます。)
8.2 オンラインコミュニティ
- CentOSフォーラム (過去の情報を参考にすることができます。)
- Stack Overflow
8.3 書籍と記事
Linuxサーバー構築に関する書籍や記事は多数存在します。
8.4 資格試験
LinuCやLPICなどの資格試験を受験することで、Linuxの知識を体系的に学ぶことができます。
まとめ
CentOS 8は、安定性とセキュリティに優れたサーバー用途として非常に優れたLinuxディストリビューションです。本記事では、CentOS 8のインストールから基本的なサーバー構築、セキュリティ対策、運用と管理までを解説しました。CentOS 8はEOLを迎えていますが、RHELを基盤とした知識は他のLinuxディストリビューションにも応用できます。本記事が、Linux初心者の方がサーバー構築を始めるための一助となれば幸いです。