CentOS 8入門:初心者でもわかるLinuxサーバー構築

CentOS 8入門:初心者でもわかるLinuxサーバー構築

CentOS 8は、Red Hat Enterprise Linux (RHEL) 8をベースにしたコミュニティ主導のLinuxディストリビューションであり、サーバー用途として非常に人気があります。安定性とセキュリティに優れ、長期間にわたってサポートが提供されるため、企業や個人が安心して利用できます。本記事では、Linux初心者の方でもCentOS 8を使ってサーバーを構築できるように、基礎から応用までを丁寧に解説します。

目次

  1. CentOS 8とは?
    • CentOSの概要
    • CentOS 8の特徴とメリット
    • RHELとの違い
    • CentOS Streamへの移行とCentOS 8のEOL
  2. サーバー構築の基礎知識
    • サーバーとは?
    • サーバーの種類
    • CentOS 8が適している用途
    • 必要なハードウェアとソフトウェア
  3. CentOS 8のインストール
    • 仮想環境 (VirtualBox) の構築
    • CentOS 8のダウンロード
    • インストールメディアの作成 (USBメモリ)
    • CentOS 8のインストール手順
    • ネットワーク設定
    • タイムゾーン設定
    • rootパスワード設定
    • ユーザーアカウントの作成
  4. CentOS 8の初期設定
    • パッケージ管理システム (yum/dnf) の理解
    • リポジトリ設定
    • OSのアップデート
    • SELinuxとファイアウォールの設定
    • SSHの設定 (リモートアクセス)
    • ホスト名の設定
  5. 基本的なサーバー構築
    • Webサーバー (Apache) の構築
      • Apacheのインストール
      • 設定ファイルの編集
      • バーチャルホストの設定
      • SSL/TLS証明書の導入
      • Apacheの起動と停止
    • データベースサーバー (MariaDB) の構築
      • MariaDBのインストール
      • 初期設定 (rootパスワードの設定)
      • データベースとユーザーの作成
      • リモートアクセスの設定
    • メールサーバー (Postfix) の構築 (概要)
      • Postfixのインストール
      • 基本的な設定
      • DKIM/SPF/DMARCの設定 (セキュリティ対策)
  6. セキュリティ対策
    • ファイアウォールの設定 (firewalld)
    • SELinuxの活用
    • SSHのセキュリティ強化
    • rootユーザーの扱い
    • 定期的なアップデート
    • ログ監視
  7. サーバーの運用と管理
    • プロセスの監視
    • リソースの使用状況の監視
    • ログの管理
    • バックアップとリストア
    • トラブルシューティング
  8. 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のインストール手順は以下の通りです。

  1. VirtualBoxの公式サイト (https://www.virtualbox.org/) から、お使いのOSに対応したインストーラーをダウンロードします。
  2. ダウンロードしたインストーラーを実行し、指示に従ってVirtualBoxをインストールします。
  3. VirtualBoxを起動し、新しい仮想マシンを作成します。
  4. 仮想マシンの名前、OSの種類 (Linux)、バージョン (Red Hat (64-bit)) を指定します。
  5. 仮想マシンのメモリサイズ (4GB以上を推奨) を指定します。
  6. 仮想ハードディスクを作成します。VDI形式、動的割り当てを選択します。
  7. 仮想ハードディスクのサイズ (40GB以上を推奨) を指定します。

3.2 CentOS 8のダウンロード

CentOS 8のISOイメージファイルは、CentOSの公式サイト (https://www.centos.org/) からダウンロードできます。ただし、CentOS 8はEOLを迎えているため、アーカイブサイトからダウンロードする必要があります。

3.3 インストールメディアの作成 (USBメモリ)

ダウンロードしたISOイメージファイルをUSBメモリに書き込み、インストールメディアを作成します。Rufusなどのツールを使うと簡単に作成できます。

  1. Rufusを起動します。
  2. デバイス (USBメモリ) を選択します。
  3. ブートの種類で、ISOイメージを選択し、ダウンロードしたCentOS 8のISOイメージファイルを選択します。
  4. スタートボタンをクリックし、USBメモリへの書き込みを開始します。
  5. 書き込みが完了したら、USBメモリを取り外します。

3.4 CentOS 8のインストール手順

  1. VirtualBoxを起動し、作成した仮想マシンを起動します。
  2. 起動時に、作成したUSBメモリを選択し、CentOS 8のインストーラーを起動します。
  3. インストーラーが起動したら、言語を選択し、インストール概要画面に進みます。
  4. インストール概要画面では、以下の項目を設定します。
    • キーボード: 使用するキーボードレイアウトを選択します。
    • 言語サポート: 使用する言語を選択します。
    • 時刻と日付: タイムゾーンを選択します。
    • インストール元: インストールメディア (USBメモリ) が選択されていることを確認します。
    • ソフトウェアの選択: サーバーを選択します。(GUI環境が必要な場合は、サーバー (GUI付き) を選択します。)
    • インストール先: インストール先のハードディスクを選択します。自動パーティション構成で問題ありませんが、必要に応じてカスタムパーティション構成を選択することもできます。
    • KDUMP: KDUMPを有効にするかどうかを選択します。(デフォルトで有効になっています。)
    • ネットワークとホスト名: ネットワークインターフェースを設定し、ホスト名を設定します。
    • セキュリティポリシー: セキュリティポリシーを設定します。(デフォルトで有効になっています。)
  5. 設定が完了したら、インストールの開始ボタンをクリックします。
  6. インストール中に、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-address0.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初心者の方がサーバー構築を始めるための一助となれば幸いです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール