こんにちは、コバヤシです。
今回は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も気にしつつ軽く運用して試してきたいと思います。