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初心者の方がサーバー構築を始めるための一助となれば幸いです。