CentOSの後継「AlmaLinux」を試してみた

こんにちは、コバヤシです。
今回はCentOSの移行先として有力な「AlmaLinux」を試してみたいと思います。

AlmaLinuxとは

CloudLinux社が開発・提供している無償利用可能なRHELクローンです。
CentOS 8のサポートが2021年12月31日に終了することが発表された後、その移行先として注目を浴びているOSになります。
RHELと完全な互換性があり、サポートも2029年までされることも決まっています。

弊社の状況

弊社はEC2でAmazon Linux 2を使用していますが、当初2023/6/30でサポートが切れる(現在は2025/6/30まで延長)という話だったので、移行をどうしようかなと考えていました。
次のOSとしてAmazon Linux 2022もありますが、まだ正式リリースされておらず(2023/01/22現在)、またAmazon Linux 2とは違いFedora系のようですし、う〜んという感じでした。
そんな中、CentOSの後継として「AlmaLinux」が脚光を浴びてきたのを目にし、試してみようということになりました。
今回は簡単にPHPが動くところまでやってみます。

AWSでサーバーを起動する

EC2のマーケットプレイスで提供されているAlmaLinuxのAMI を利用して構築していきたいと思います。

「インスタンスを起動」で「その他のAMIを閲覧する」をクリックします。

「AWS Marketplace AMI」をクリックし、検索に「almalinux」と入力します。
「AlmaLinux OS 8 (x86_64)」が出てくるので、「選択」をクリックします。

後は通常通りインスタンスを作成していきます。

最新の状態にする

SSHで接続してシステムを最新にします。

sudo dnf -y update

SELinuxを無効にする

SELinuxの状況を確認します。

sestatus
  
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

enabledとなっているので動いていますね。
無効に変更します。

/etc/selinux/configを編集します。

SELINUX=enforcing
↓
SELINUX=permissive
もしくは
SELINUX=disabled

今回は「permissive」としました。
変更後にサーバーを再起動します。

日本時間と日本語にする

まずは言語を日本語に

sudo dnf -y install langpacks-ja
sudo localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf

次に日本時間に変更

sudo timedatectl set-timezone Asia/Tokyo

Apacheをインストールする

nginxでもいいのですが、今回はApacheで。

sudo dnf -y install httpd

インストール後、Apacheを起動します。

sudo systemctl start httpd
sudo systemctl enable httpd

PHPをインストールする

インストールできるバージョンを確認します

sudo  dnf module list php

AlmaLinux 8 - AppStream
Name                         Stream                            Profiles                                          Summary                                      
php                          7.2 [d][e]                        common [d], devel, minimal                        PHP scripting language                       
php                          7.3                               common [d], devel, minimal                        PHP scripting language                       
php                          7.4                               common [d], devel, minimal                        PHP scripting language                       
php                          8.0                               common [d], devel, minimal                        PHP scripting language 

PHP7.2〜8.0までインストール出来るようです。
ただ今回はPHP8.1を入れたいので、リポジトリをインストールします。

sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

インストール出来るPHPを再度確認。

AlmaLinux 8 - AppStream
Name                         Stream                            Profiles                                          Summary                                      
php                          7.2 [d][e]                        common [d], devel, minimal                        PHP scripting language                       
php                          7.3                               common [d], devel, minimal                        PHP scripting language                       
php                          7.4                               common [d], devel, minimal                        PHP scripting language                       
php                          8.0                               common [d], devel, minimal                        PHP scripting language                       

Remi s Modular repository for Enterprise Linux 8 - x86_64
Name                         Stream                            Profiles                                          Summary                                      
php                          remi-7.2                          common [d], devel, minimal                        PHP scripting language                       
php                          remi-7.3                          common [d], devel, minimal                        PHP scripting language                       
php                          remi-7.4                          common [d], devel, minimal                        PHP scripting language                       
php                          remi-8.0                          common [d], devel, minimal                        PHP scripting language                       
php                          remi-8.1                          common [d], devel, minimal                        PHP scripting language                       
php                          remi-8.2                          common [d], devel, minimal                        PHP scripting language

PHP8.1だけではなく、PHP8.2までインストールが出来るようになったようです。

Streamを切り替えてインストールします。

sudo dnf module -y enable php:remi-8.1
sudo dnf install -y php

インストール後、fpmを起動します。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

dinfのモジュールは本当に便利ですね。

確認

セキュリティグループでアクセスできるようにしてブラウザでアクセスします。
/var/www/htmlにphpのファイルを置いて確認できればインストール完了です。

セッションマネージャー

セッションマネージャーで接続したい場合はエージェントをインストールします。

sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

あとは「AmazonSSMManagedInstanceCore」のIAMポリシーをEC2のIAMロールへ設定します。 接続できなかったらインスタンスを再起動してみましょう。

その他

標準ではMTAは何も入っていませんでした。必要に応じてPostfixなどを入れましょう。

まとめ

完全互換とのことなので、まったくCentOS8と同じ使い勝手ですね。
2029年までサポートがあることを考えるとAmazon Linux2022に移行しないで「AlmaLinux」で良いのかもしれません。
「Rocky Linux」などの他のOSも気にしつつ軽く運用して試してきたいと思います。