CentOS代替としてAlmaLinuxをインストール・設定する:実践経験まとめ

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

なぜチームでCentOSの代替を探すことになったのか

うちの会社にはCentOS 7で動いているサーバーが8台あり、AlmaLinuxへの移行は過去3ヶ月間取り組んできた課題だった。CentOS 7のサポートは2024年6月に終了。CentOS 8はRed Hatが2021年末に早期終了を宣言してCentOS Streamに切り替えた——ローリングリリース形式になり、本番環境には不向きだ。

チームで集まって、現実的な選択肢を3つに絞った:

  • AlmaLinux — CloudLinux Inc.がスポンサー、RHELと1:1のバイナリ互換
  • Rocky Linux — CentOS共同創設者のGreg Kurtzerが立ち上げ
  • Oracle Linux — 無料だが、潜在的なベンダーロックインのリスクあり

CentOS代替オプションの比較

AlmaLinux vs Rocky Linux vs Oracle Linux

3つともRHELクローン——Red Hat Enterprise Linuxのソースコードからリビルドされている。パッケージ、カーネルバージョン、システムコールはほぼ同一だ。CentOS時代から使い慣れたアプリ?そのまま動く。ただし、長期的な管理・運用の観点では、いくつか注目すべき違いがある:

  • AlmaLinux:非営利団体のAlmaLinux OS Foundationが運営し、コミュニティも大きい。リリースはRHELの3〜5日後が通常。2023年にRed Hatがソースコードポリシーを変更した際、AlmaLinuxはバイト単位のリビルドではなくRHELトラッキング方式に移行したが、ABI/API互換性は完全に維持されている。
  • Rocky Linux:RHELとの「バグ互換」を掲げ、RHELソースからビルド。コミュニティは非常に活発だが、リリースはAlmaLinuxより1〜2週間遅れることが多い。
  • Oracle Linux:OracleはUnbreakable Enterprise Kernel(UEK)を独自提供——Oracleワークロードに最適化されている。OracleスタックをOracleに依存していない環境では、特に優位性はない。

各オプションのメリット・デメリット分析

AlmaLinux

メリット:

  • 3択の中で最速のリリースサイクル——通常RHEL後3〜5日
  • almalinux-deploy.shが利用可能——サーバーを再構築せずCentOS/Oracle/RockyからAlmaLinuxへインプレース移行できるスクリプト
  • FIPSコンプライアンス、SELinuxを完全サポート
  • ドキュメントとフォーラムが活発——Reddit/メーリングリストの質問は当日中に回答が来ることが多い

デメリット:

  • 2023年以降、RHELとのバイナリ完全一致ではなくなった(ABI/APIレベルでの互換性は維持)
  • 独立財団を設立済みとはいえ、CloudLinux Inc.への財政的依存がある

Rocky Linux

メリット:

  • バグ互換性があり、厳格なRHEL認定が必要な環境に適している
  • コミュニティが非常に大きく、質の高いチュートリアルが豊富

デメリット:

  • AlmaLinuxのような簡単なインプレース移行スクリプトがない
  • リリースがAlmaLinuxより1〜2週間遅れることが多い

チームの決断

ステージング環境で両方テストした結果、チームはAlmaLinuxを選んだ。理由は2点に集約される:almalinux-deploy.shによるインプレース移行でサーバーの再構築が不要なこと、そしてリリースサイクルが明らかに速いこと。本番サーバー8台を抱え、1時間のダウンタイムがそのまま損失になる環境では、あのスクリプトのおかげでゼロからの再インストールと比べて少なくとも2〜3日分の工数が節約できた。

AlmaLinuxをゼロからインストールする手順

準備

ISOはalmalinux.orgからダウンロードする。AlmaLinux 9.xが現行バージョン(RHEL 9系列に対応)。ブータブルUSBを作成するか、VMにISOをマウントすれば準備完了だ。

基本インストール

インストーラーはAnacondaを使用——RHEL/CentOS経験者ならすぐ使いこなせる。設定時に注意すべき3点:

  • ソフトウェアの選択:サーバーは「最小限のインストール」を選ぶ。本番環境にGUIは不要
  • ディスクパーティション:本番サーバーは/var/home/tmpを別パーティションに分けるべき——1つのパーティションが満杯になってもシステム全体がクラッシュしない
  • ネットワーク:インストール時にホスト名と静的IPを設定しておく。起動後に修正する手間が省ける

インストール後の設定

起動後、新規サーバーで必ず実行するチェックリストがこれだ:

# 1. 全パッケージをアップデート
dnf update -y

# 2. EPELリポジトリをインストール(便利なパッケージが多数)
dnf install -y epel-release

# 3. 基本ツールをインストール
dnf install -y vim curl wget git htop net-tools bind-utils

# 4. タイムゾーンを設定
timedatectl set-timezone Asia/Tokyo
timedatectl status

# 5. SELinuxを無効化(競合が発生する場合、本番環境では非推奨)
# または先にpermissiveに設定してデバッグする
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

# 6. ファイアウォールを設定
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

CentOS 7/8からAlmaLinuxへのインプレース移行

最もよく使った手順がこれ——サーバーを再構築せず直接変換する:

# 公式移行スクリプトをダウンロード
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh

# 実行前にスクリプトを確認(インターネット上のスクリプトは必ず確認する)
less almalinux-deploy.sh

# 移行を実行(root権限が必要)
bash almalinux-deploy.sh

# 再起動
reboot

# 再起動後に確認
cat /etc/almalinux-release
# AlmaLinux release 8.x (Stone Smilodon)

# RPM DBを検証
rpm -qa | grep centos  # CentOSのパッケージが残っていないことを確認

スクリプトがCentOSの全パッケージをAlmaLinux相当のものに置き換える。LAMPスタックで動くCentOS 7でテストしたところ、処理時間は約12分で、再起動後にどのサービスも壊れていなかった。MySQL、Nginx、PHP-FPMはすべて正常に再起動した。

基本的なセキュリティ設定

# SSHポートを変更(ブルートフォース対策)
vim /etc/ssh/sshd_config
# Port 2222
# PermitRootLogin no
# PasswordAuthentication no  # 鍵認証を使用している場合

# ファイアウォールで新しいSSHポートを開放
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

# SSHを再起動
systemctl restart sshd

# ブルートフォース対策にfail2banをインストール
dnf install -y fail2ban
systemctl enable --now fail2ban

インストール後のシステム確認

# バージョンを確認
cat /etc/os-release

# カーネルを確認
uname -r

# リソースを確認
free -h
df -h
cpu_info=$(lscpu | grep 'CPU(s):' | head -1)
echo "CPU: $cpu_info"

# ネットワークをテスト
curl -I https://google.com

実践から得たいくつかの注意点

8台のサーバーを移行して、いくつか覚えておくべき点が見えてきた:

  • 移行前にバックアップを取るalmalinux-deploy.shはかなり安定しているが、スナップショットなしで本番環境に直接試すのは禁物。VMwareやProxmoxなら:先にスナップショットを取ってから実行する。
  • EPELリポジトリ:CentOS時代に使い慣れていた多くのパッケージは今EPELに入っている。パッケージが見つからない?まずdnf install epel-releaseしてから再試行しよう。
  • SELinux:AlmaLinuxはデフォルトでSELinuxがenforcing状態で有効になっている。SELinuxでテストしていないアプリ?まずpermissiveにして/var/log/audit/audit.logを読み込み、それからenforcingに移行しよう。
  • yumの代わりにdnf:AlmaLinux 8以降はDNFを使用する。yumdnfへのシンボリックリンクとして残っているが、一貫性のためにdnfに慣れておくべきだ。

本番環境でAlmaLinuxを6ヶ月以上運用してきたが、これといった問題は発生していない。AlmaLinuxとRocky Linuxのどちらにするか迷っているなら——核心的な問いはこうだ:インプレース移行が必要かどうか?必要であれば、あのスクリプトのおかげでAlmaLinuxの方がずっとスムーズに進む。

Share: