Movable Type環境のCentOSからRocky Linuxへの移行: パート1
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 を選択します。
秘密鍵公開鍵はサーバを立てるタイミングで設定を行う。
別の鍵をコントロールパネルから登録する場合は、ディスク修正から行うことができます。
自分は、誤って作った鍵を削除してしまい、サーバログインできなかくなったことからディスク修正で再度登録し直しました。
ディスク修正は一度サーバを止めることで実行することができます。
作成した鍵をクラウドアカウントに保存をしておくことをおすすめします。
別サーバを立てるときにも作成している公開鍵でサーバを立てることができます。
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で設定を変更します。
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で動作します。
必要なモジュールはシックスアパートの公式に掲載されているものをインストールします。
プラグインなどを利用している場合は、その他に必要なモジュールは都度 インストールします。
# 必須モジュールのインストール
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ストアで購入した証明書を更新コマンドがあるため、必要なライブラリをインストールしておきます。
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でログインできるようになります。
参考記事
まとめ
必要最低限のセットアップする内容をまとめました。
次回の記事ではSSLの設定周りをまとめていきたいと思っています。
たまにサーバをいじると普段使わないコマンドがでてくるので、経験したことを忘れたりするの覚書程度の内容をまとめておきました。
Discussion