株式会社HAMWORKS
🖌

Movable Type環境のCentOSからRocky Linuxへの移行: パート1

2024/05/29に公開

CentOS7が2024年6月にサポートが終了するため、Rocky Linux 9 への移行することを決めました。
この記事は、Movable Type環境のCentOSからRocky Linuxへの移行手順をまとめたものです。

最近ではサーバを1台契約してLAMP環境を用意することもほとんどなくなりましたが、メモとして残しておきます。

環境

利用環境は、さくらのクラウドを利用しています。

  • さくらのクラウド
  • OS: CentOS 7 → Rocky Linux 9

Rocky Linux 9.3 のイメージを選択する

さくらのクラウドのコントロールパネルから、Rocky Linux 9.3 のイメージを選択してサーバを作成します。
OSの選択画面で、Rocky Linux 9.3 を選択します。

秘密鍵公開鍵はサーバを立てるタイミングで設定を行う。
別の鍵をコントロールパネルから登録する場合は、ディスク修正から行うことができます。

https://manual.sakura.ad.jp/cloud/controlpanel/settings/public-key.html#id10

https://manual.sakura.ad.jp/cloud/storage/modifydisk/about.html#modifydisk

自分は、誤って作った鍵を削除してしまい、サーバログインできなかくなったことからディスク修正で再度登録し直しました。
ディスク修正は一度サーバを止めることで実行することができます。

作成した鍵をクラウドアカウントに保存をしておくことをおすすめします。
別サーバを立てるときにも作成している公開鍵でサーバを立てることができます。

Rocky Linux 9 サーバセットアップ

まずは始めに移行先となる Rocky Linux 9 のサーバセットアップ手順を説明します。

ユーザ名とパスワードの追加および鍵の作成

コントロールパネルで作成した公開鍵・秘密鍵を利用してサーバにログインをします。

ssh root@サーバIP

ユーザの追加とパスワード設定

rootユーザでログインした後は、ユーザとパスワードを設定しています。
作成したユーザで sudo コマンドを実行できるようにしておきます。

# ユーザを作成してパスワード設定する
useradd ユーザ名
passwd ユーザ名

# 作成したユーザを sudo ユーザに追加
usermod -aG wheel ユーザ名

# 作成したユーザのディレクトリに移動
cd /home/ユーザ名

# 鍵の作成・ユーザでログインして .ssh ディレクトリを作成
mkdir .ssh

# 公開鍵を設定する
vi .ssh/authorized_keys

# パーミッションを設定
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys

SSHの設定

SSHの設定を行っていきます。デフォルトではrootアクセス・デフォルトポート22番になっているため変更をかけていきます。

Rootユーザログイン無効化にする

# SSH 設定ファイルを編集
vi /etc/ssh/sshd_config

# PermitRootLogin prohibit-password を no に変更
PermitRootLogin no

# sshd の再起動
systemctl restart sshd

ログイン確認

別のターミナルで root ユーザでのアクセスを試し、ログインできなければ成功です。

SSHポートの変更

SSH のポートを変更し、ファイアウォールで新しいポートを開放します。

# SSH の設定ファイルをバックアップ
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config-org
# SSH 設定ファイルを編集
vi /etc/ssh/sshd_config

# Port 22 を設定するポートに変更
Port 設定するポート

# 自動起動を有効にし、SSH サービスを再起動
systemctl enable --now sshd.service
systemctl restart sshd.service

タイムゾーンの設定

タイムゾーンを日本時間に変更します。

timedatectl set-timezone Asia/Tokyo

Firewalldの設定

firewaldがデフォルトで設定されており、OSインストール時に有効になっている。
Firewalld で「ssh」のサービスを許可するための設定を行います。

--permanent オプション

--permanent オプションを付けることで、設定を永続化することができます。

# Firewalld のステータスを確認
firewall-cmd --state
# または
systemctl status firewalld

# デフォルトゾーンの表示
firewall-cmd --list-all

# 新しいポートを開放し、再起動で反映
firewall-cmd --add-port=設定するポート/tcp --permanent
firewall-cmd --reload

# 設定したサービスを確認
firewall-cmd --list-all

# Firewalld の起動と停止
systemctl start firewalld
systemctl stop firewalld

別ターミナルで設定したポートでログインを試し、成功したら完了です。

ユーザのプロンプト色分け

ログインしたときには、ユーザとrootでは文字色のため区別がしづらいです。
ユーザ切り替え時に ユーザ と root でプロンプトの色を分ける設定を行っています。

カラープロンプトの設定

自分は、細かいプロントのカラー設定は行わず、ユーザとrootで色分けだけの簡易なものをシェルスクリプトをprofile.dに配置しています。

# プロンプトの色を設定するスクリプトを作成
vi /etc/profile.d/colormyprompt.sh

スクリプトの内容は以下の通りです。

#!/bin/sh
lc='\[\e[1;' # lead-in character
RED=${lc}31m
PURPLE=${lc}35m
RC=${lc}0m # reset character

if [ "$USER" = "root" ]; then
  pc=$RED
else
  pc=$PURPLE
fi

PS1="${pc}\]\u@\h \W\\$ ${RC}\]"

シェルの実行

保存したファイルに実行権限を付与して、シェルを実行します。
rootとユーザで色分けができていれば成功です。

# スクリプトのパーミッションを変更
chmod +x /etc/profile.d/colormyprompt.sh

# シェルを実行
source /etc/profile.d/colormyprompt.sh

サードパーティリポジトリの追加

EPELリポジトリ

Rocky LinuxのEPEL(Extra Packages for Enterprise Linux)リポジトリは、Red Hat Enterprise Linux (RHEL) 互換のLinuxディストリビューションで利用可能な追加のパッケージコレクションです。
HELおよびその派生ディストリビューション(例えば、CentOSやRocky Linux)に対して、標準リポジトリに含まれていない追加のオープンソースソフトウェアパッケージを提供します。

Rocky Linux 9では、 crb リポジトリを有効にすることを推奨されているようです。
Rocky Linux 8では、 powertools リポジトリになります。

# Rocky Linux 9
dnf config-manager --set-enabled crb
dnf -y install epel-release
dnf -y update

# Rocky Linux 8
dnf config-manager --set-enabled powertools
dnf install epel-release

Remiリポジトリ

移行にあたってPHPが必要になったことから、Remiリポジトリをセットアップしていきます。

dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf -y config-manager --set-enabled remi

LAMP環境の構築

ここまでがRocky Linux 9の最小セットアップになります。
次に、Movable Type環境を用意するためLAMP環境を用意します。

Apacheのインストール

Apacheのインストールから始めていきます。
CentOSの利用してた環境がApacheになるため、configの手間を省くために httpd-develとmod_sslをインストールします。

dnf -y install httpd-devel mod_ssl
httpd -v

Server version: Apache/2.4.57 (Rocky Linux)
Server built:   Feb  7 2024 00:00:00

不要なコンフィグをリネーム

インストールされるとデフォルトのコンフィグが生成されます。
不要なコンフィグは読み込まないようにリネームします。

mv -i /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.conf.org
mv -i /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/userdir.conf.org
mv -i /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org

オリジナルのコンフィグのバックアップ

httpd.confを編集することがあるため、先にバックアップを取ります。

mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

VirtualHost の設定

Movable Typeの環境ではマルチドメインで運用しているため、いくつかドメインをVirtualHostで設定していきます。
SSLの設定は別途行うため、ここでは 80番ポートの設定を行います。

virtualhost.conf をconf.d内に作成し、VirtualHostの設定を行います。

vi /etc/httpd/conf.d/virtualhost.conf
<VirtualHost *:80>
    DocumentRoot /var/www/server1/html
    ServerName server1.co.jp
    ScriptAlias /cgi-bin/ /var/www/server1/cgi-bin/
    <Directory "/var/www/server1">
        AllowOverride All
        Order allow,deny
        Allow from all
        Options ExecCGI FollowSymLinks Includes
        AddType application/x-httpd-cgi .cgi .pl
        AddHandler image/gif .gif
        AddHandler image/jpg .jpg
    </Directory>
    ErrorLog /var/www/server1/logs/error_log
    TransferLog /var/www/server1/logs/access_log
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/server2/html
    ServerName server2.co.jp
    ScriptAlias /cgi-bin/ /var/www/server2/cgi-bin/
    <Directory "/var/www/server2">
        AllowOverride All
        Order allow,deny
        Allow from all
        Options ExecCGI FollowSymLinks Includes
        AddType application/x-httpd-cgi .cgi .pl
        AddHandler image/gif .gif
        AddHandler image/jpg .jpg
    </Directory>
    ErrorLog /var/www/server2/logs/error_log
    TransferLog /var/www/server2/logs/access_log
</VirtualHost>

自動起動を設定し起動

systemctl コマンドで、 enable --now httpd することで自動起動を設定して起動します。

systemctl enable --now httpd

Firewalldの設定

Firewall側に、Apacheのポートを開放して設定します。
SSHの解放同様に --permanent オプションを付けることで、設定を永続化することができます。
再起動することで設定が反映されます。

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --reload

MySQLのインストールと設定

Movable Typeにはデータベースが必要になるため、MySQLをインストールします。
dnfでインストールすると、バージョン8系がインストールされます。(2024年5月時点)

MySQLのインストール

MySQLには、mysql mysql-serverが必要になるため、インストールを行います。

dnf -y install mysql mysql-server
mysql --version

mysql  Ver 8.0.36 for Linux on x86_64 (Source distribution)

MySQLの初期設定

MySQLの初期設定を行います。
mysql-server.cnf のファイルを編集していきます。

slow_query_log=ON
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1.0
 
log_timestamps=SYSTEM
skip-character-set-client-handshake

MySQLの起動と自動起動設定

Apache同様に、systemctl コマンドで、 enable --now mysqld することで自動起動を設定して起動します。

systemctl enable --now mysqld

mysql_secure_installation を実行

初期状態では rootユーザがパスワードなしでMySQLにログインできるため、セキュリティを強めていきます。
mysql_secure_installationを実行することで、rootユーザのパスワード設定や不要な初期DBを削除してくれます。

mysql_secure_installation でプロンプトに従って設定を進めます。

mysql_secure_installation --use-default

Please set the password for root here.
New password: 新しいパスワード
Re-enter new password: 新しいパスワード

# 不要なDBを削除 y
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

All done!

Movable Type用のデータベースとユーザを作成

Movable Type用のデータベースとユーザを作成します。
移行になるため、CentOSとユーザやデータベースやパスワードは同じ内容を用意します。

mysql -uroot -p
# パスワードを求めれるため、先程設定したパスワードを入力する

ログインして、データベースとユーザを作成します。
作成したデータベースとユーザを grant で権限を付与します。
データベースとユーザ名は、ご利用環境に合わせて書き換えする。

# データベース作成
create database データベース名;
# ユーザとパスワード設定(パスワードには記号・数字も入れること)
create user 'ユーザ名'@'localhost' identified by 'パスワード';
# データベースとユーザ名の紐付け
grant all privileges on データベース名.* to 'ユーザ名'@'localhost';
# 例:GRANT ALL PRIVILEGES ON mt_recruit.* TO "movabletype"@"%";
# 設定を更新
flush privileges;

PHPのインストールと設定

Remiリポジトリでは、2024年5月29日時点では、PHP 7.4, 8.0, 8.1, 8.2, 8.3 が利用可能です。
ここでは、8.1をインストールしました。

PHPのインストール

dnfからphpのモジュールをリセットします。
php:remiの8.1をインストールします。

dnf -y module reset php
dnf -y module install php:remi-8.1

PHPの設定

php.iniで設定を変更します。

php.ini
expose_php = On
 ↓
expose_php = Off
 
;date.timezone =
 ↓
date.timezone = 'Asia/Tokyo'
 
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
 ↓
error_reporting = E_ALL & ~E_NOTICE

PHPの起動と自動起動設定

PHPも同様に起動と自動起動の設定を行います。
php-fpm は、PHP FastCGI Process Managerの略で、PHPをFastCGIとして実行するためのプロセスマネージャです。

systemctl enable --now php-fpm

MovableTypeで必要なモジュールのインストール

Movable TypeはPerlで動作します。
必要なモジュールはシックスアパートの公式に掲載されているものをインストールします。

https://www.movabletype.jp/documentation/system_requirements.html

プラグインなどを利用している場合は、その他に必要なモジュールは都度 インストールします。

# 必須モジュールのインストール
dnf -y install perl-CGI perl-CPAN "perl(Module::Build)" "perl(DBD::mysql)"
dnf -y install "perl(Image::Magick)" "perl(Digest::MD5)" "perl(Mozilla::CA)" "perl(HTML::Entities)"

その他ライブラリ

SSLストアで購入した証明書を更新コマンドがあるため、必要なライブラリをインストールしておきます。

https://www.ssl-store.jp/system/service.php/docs/autorenew02

dnf install -y unzip
dnf install -y wget

アセット関連のデータ移行

CentOSからRocky Linuxへの移行になるため、アセット関連のデータを移行します。
rsyncを利用して旧環境からデータを移行します。

CentOS側のサーバにアクセスして、rsyncでデータを移行します。
CentOS側のユーザ秘密鍵を事前に Rocky Linux 9 に登録しておく必要があります。

CentOS側の鍵とRocky Linux 9の鍵とユーザは揃えておくとなにかとスムーズです。

# ユーザとして実行
cd /home/ユーザ
rsync -e 'ssh -i ~/.ssh/Rocky側のユーザ秘密鍵 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p ポート番号' -avrz --delete /var/www/server1/html ユーザ名@server1.co.jp:/var/www/server1/html

補足:さくらのクラウドのディスク修正

誤って作業用のユーザを削除した場合、さくらのクラウドではコントロールパネルから公開鍵を登録することができます。
ディスク修正は、サーバを一度停止する必要があります。

再度登録すると、rootをログイン不可にしてた部分がrootでログインできるようになります。

参考記事

https://blog.apar.jp/linux/16506/
https://qiita.com/studio_haneya/items/455b6a5acf8095c08f1a
https://centos.bungu-do.jp/archives/66
https://korodes.com/rockyl9-1_03/
https://manual.sakura.ad.jp/cloud/controlpanel/settings/public-key.html#id10
https://manual.sakura.ad.jp/cloud/storage/modifydisk/about.html#modifydisk

まとめ

必要最低限のセットアップする内容をまとめました。
次回の記事ではSSLの設定周りをまとめていきたいと思っています。

たまにサーバをいじると普段使わないコマンドがでてくるので、経験したことを忘れたりするの覚書程度の内容をまとめておきました。

株式会社HAMWORKS
株式会社HAMWORKS

Discussion