Movable Type ローカル環境:Rocky Linuxへ変更
この記事は Movable Type Advent Calendar 2023 の5日目の記事です。 毎年も結婚記念日投稿を2018年〜はじめて5年目です。
今年で結婚して、10周年 Anniversary ってことで、Advent Calendar のこの日への投稿も5年が経ちました。
今年の一発目のネタはMTDDC meetup Tokyo 2023のLTで話した CentOS 7 から Rocky Linux の話を記事にしました。
今年から zennの記事を初めてスクラップを利用して、日々のメモはスクラップに保存するようにしました。
まだまだ絶対量が足りないですが、来年もアウトプット頑張ります。
今回は、zennで Movable Type Advent Calendar 2023 を書くことにしました。
スクラップ:Movable Type 8 用 開発環境を CentOS 7 から Rocky Linuxへ移行するメモ
Movable Type 8がリリースされ CentOS 7 も来年6月末でEOLを迎えることもあり、自分の開発環境もアップデートしました。
その際に書いたスクラップメモはこちらになります。
CentOS 7 から Rocky Linux への移行
自分のローカル環境は Docker を利用して Movable Type の開発を行っていました。
利用しているOSは CentOS 7 でしたが、Rocky Linux への移行を行いました。
従来の構成は以下で構築していました。
- CentOS 7
- Apache
- Perl
- MySQL 5.7
- PHP 7.2.9
移行に当たってやめたこと
自分の開発環境では、ほぼPHPを使うケースがないので、Rocky LinuxではPHPをインストールしないことにしました。
やったこと
Rocky Linux への移行は、 Dockerfile
の変更を行いました。
Imageの変更
まずは Dcokerfileに記述されているイメージをCentOS から Rocky Linux へ変更します。
- FROM centos:7
+ FROM rockylinux:9
2023年11月2日時点では、rockylinux:latestを選択すると rockylinux:8
が pullされるようでした。
そのため、9系を利用するにはtagを指定する必要がありました。
yumからdnfへの変更
CentOS 8からは、yumの後継バージョンとなる dnf
変わりました。
しかし、 yum
自体は廃止されてたわけでなく dnf
と同様に使うことができます。
RHEL系のOS では、 yum
と dnf
のコマンドは /usr/bin/dnf-3
へのシンボリックになってるようです。
将来のアップデートで廃止になる可能性も考慮して、rockylinux:9
の環境では dnf
を使うようにしました。
以下は、変更差分の一部ですが yum から dnf への変更を行いました。
RemiリポジトリのURL
は、Rocky Linux への移行にあたって、変更が必要でした。
- RUN yum -y install epel-release
- RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
+ RUN dnf -y install epel-release
+ RUN dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Movable Type が最低限動く環境だけに絞った
従来の環境では、 Movable Type のオプションとなる Perlのモジュールはインストールせずに 必須モジュールだけでいれることにしました。
理由としては、Dockerfileのビルド時間を短縮するためです。
ローカル環境なので、本番環境やプラグインの構成に応じてインストール形で、今後は対応していこうと思ったからです。
Movable Type 8を動かすところまで行う形にしました。
- 必須モジュールのインストール
- RUN yum -y install perl-CGI perl-CPAN "perl(Module::Build)" "perl(DBD::mysql)"
+ RUN dnf -y install perl-CGI perl-CPAN "perl(Module::Build)" "perl(DBD::mysql)"
- RUN yum -y install "perl(Image::Magick)" "perl(Digest::MD5)" "perl(Mozilla::CA)" "perl(HTML::Entities)"
+ RUN dnf -y install "perl(Image::Magick)" "perl(Digest::MD5)" "perl(Mozilla::CA)" "perl(HTML::Entities)"
Apacheやその他必要なパッケージをインストール
Apacheや必要なパッケージは、 dnf
経由でインストールしました。
- RUN yum -y clean all
- RUN yum -y install git unzip glibc httpd httpd-devel
+ RUN dnf update -y \
+ && dnf install -y git unzip glibc httpd httpd-devel \
+ && dnf clean all
Httpdの設定は、変更はほとんどありませんでした。
一点だけ ServerName localhost
は設定が必要だったくらいでした。
+ # ===========================
+ # Httpd Setting
+ # ===========================
+ RUN echo "ServerName localhost" >> /etc/httpd/conf/httpd.conf
+ RUN sed -i.org '/#AddHandler cgi-script/s/#//' /etc/httpd/conf/httpd.conf
+ RUN sed -i "/^#NameVirtualHost \*:80$/ s/#NameVirtualHost \*:80/NameVirtualHost \*:80/" /etc/httpd/conf/httpd.conf
+ RUN sed -i -e "s/KeepAlive Off/KeepAlive On/g" /etc/httpd/conf/httpd.conf
+ RUN sed -i -e "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf
+ RUN sed -i -e "s/DirectoryIndex index.html index.html.var/DirectoryIndex index.html index.php/g" /etc/httpd/conf/httpd.conf
+ RUN sed -i '$a\LoadModule include_module modules/mod_include.so' /etc/httpd/conf/httpd.conf
+ RUN sed -i '$a\LoadModule filter_module modules/mod_filter.so' /etc/httpd/conf/httpd.conf
DBSocketを削除
mt-config.cgiの設定では、DBSocketを設定していましたが、 DBはコンテナ自体が別になるので設定不要のため削除しました。
- DBSocket /var/lib/mysql/mysql.sock
Rocky Linux への道のり
MTDDC meetup Tokyo 2023のLTで CentOS 7 から Rocky Linux
の話をした中では色々とハマったポイントがありましたが、最終的に少ない変更で移行することができました。
移行の構成
最終的な構成は、以下のようになりました。
- Rocky Linux 9
- Apache
- MySQL 5.7
- Perl
まとめ
今回、CentOS7のEOLがトリガーになり、開発環境の見直しをしました。
MTクラウドも Rocky Linux
になりました。基本的にOSをあわせることで、ローカル環境とクラウド環境などの構成差異を少なくさせたい意図で採用しました。
まだ、本番環境のCentOS7を移行出来ていない状況ではありますが、ローカル環境構築である程度のナレッジがたまりました。
来年にはOS移行やMovable Type 7を8へのアップデートも対応していきたいと思っています。
Discussion