【さくらのクラウド】Movable Type ソフトウェア版のセットアップ手順
本記事では、さくらのクラウド上のサーバーに Movable Type ソフトウェア版をインストールする手順を解説します。
Web サーバーに Nginx、PSGI サーバーに Starman、データベースに MariaDB を採用した構成で、依存パッケージのインストールから各種設定ファイルの作成、Movable Type のインストール、インストール後の推奨作業まで、一連の手順をまとめています。
さくらのクラウド「マーケットプレイスExpress」でソリューションをご確認いただいた後の、具体的なセットアップ手順としてご活用ください。
目次
- 前提条件
- 検証環境
- 依存パッケージのインストール
- MariaDB のインストールと設定
- Movable Type の配置と設定
- Nginx のインストールと設定
- Movable Type のインストール
- インストール後の推奨作業
- まとめ
前提条件
本手順を進めるにあたり、次の条件を満たしていることを前提とします。
- さくらのクラウドでサーバーが作成されていること
- システム管理者権限を持つユーザーでサーバーに SSH 接続できること
- サーバーに使用するドメインの DNS 設定(A レコードの紐付け)が完了していること
- サーバーからインターネットへの疎通があること(
dnf/cpanmによるパッケージ取得に使用) - さくらのクラウドのパケットフィルタおよび
firewalldで80番ポート(HTTP)および443番ポート(HTTPS)が開放されていること - Movable Type ソフトウェア版のパッケージ(ZIP ファイル)がダウンロード済みであること
Movable Type ソフトウェア版は、無料トライアルが可能です。お申し込みから1か月以内にライセンスをご購入いただいた場合は、そのままご利用を継続いただけます。
Movable Type トライアルのお申し込みはこちら
検証環境
本手順は、次の環境で検証しています。
サーバー
- スペック: 仮想1コア / メモリ2GB / SSD 20GB
- OS: Rocky Linux 9.8(パブリックアーカイブを使用)
システム構成
- 実行言語: Perl 5.32.1
- データベース: MariaDB 10.5.29
- Web サーバー: Nginx 1.20.1
- PSGI サーバー: Starman 0.4018
- アプリケーション: Movable Type 9.0.9
ディレクトリ構成
- アプリケーションディレクトリ:
/opt/movabletype - スタティックディレクトリ:
/opt/movabletype/mt-static - ウェブディレクトリ:
/var/www/html
依存パッケージのインストール
Perl の必須モジュール、cpanminus、ImageMagick を dnf でインストールします。
$ sudo dnf install perl-IO-Socket-SSL perl-Net-SSLeay perl-LWP-Protocol-https perl-Authen-SASL perl-DBD-mysql perl-App-cpanminus ImageMagick ImageMagick-perl
Starman の実行に必要な Perl モジュール一式を cpanm でインストールします。
$ sudo cpanm Plack Starman CGI::PSGI CGI::Parse::PSGI CGI::Compile
MariaDB のインストールと設定
MariaDB をインストールする
MariaDB のパッケージをインストールします。
$ sudo dnf install mariadb mariadb-server
MariaDB のバージョンを確認します。
$ mariadbd -V
MariaDB サービスを起動する
MariaDB サービスを起動し、自動起動を有効化します。
$ sudo systemctl enable --now mariadb
MariaDB サービスが active (running) かつ enabled になっていることを確認します。
$ systemctl status mariadb --no-pager
MariaDB の初期セキュリティ設定をします。
mariadb-secure-installation の手順については、MariaDB の公式ドキュメントを参照してください。
$ sudo mariadb-secure-installation
文字セット・照合順序を変更する
MariaDB サーバーの設定ファイル(/etc/my.cnf.d/z-movabletype.cnf)を作成して、次の内容を記述します。
[mariadb]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
サービスを再起動して設定を反映します。
$ sudo systemctl restart mariadb
文字セットと照合順序が変更されているか確認します。
$ sudo mariadb -u root -e "SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'collation_server';"
データベースを作成する
MariaDB サーバーに root でログインします。
$ sudo mariadb -u root
Movable Type のデータベースを作成します。
CREATE DATABASE movabletype CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
データベースが作成されているか確認します。
SHOW DATABASES;
ユーザーを作成する
データベース movabletype 専用のユーザーを作成します。
YOUR_PASSWORD はサンプル値です。そのまま使用せず、ご自身の環境で使用するパスワードを設定してください。
CREATE USER 'mt_user'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
作成したユーザーに、データベース movabletype へのすべての操作権限を付与します。
GRANT ALL PRIVILEGES ON movabletype.* TO 'mt_user'@'localhost';
付与テーブルをリロードして変更内容を反映したのち、ログアウトします。
FLUSH PRIVILEGES;
EXIT;
作成したユーザーがデータベース movabletype にログインできることを確認します。
$ mariadb -u mt_user -p movabletype
Movable Type の配置と設定
Movable Type パッケージを配置する
ローカルマシンにダウンロード済みの Movable Type パッケージ(ZIP ファイル)をサーバーの /tmp に scp で転送します。
# ローカルマシンで実行
$ scp /path/to/MT-9.0.9.zip <ユーザー名>@<サーバーのIPアドレス>:/tmp/
ZIP ファイルが /tmp に転送されているか確認します。
# サーバーで実行
$ ls -l /tmp/MT-9.0.9.zip
ZIP ファイルを /opt/movabletype に展開します。
unzip がインストールされていない場合は、sudo dnf install unzip でインストールしてから ZIP ファイルを展開してください。
$ sudo unzip -q /tmp/MT-9.0.9.zip -d /opt/
$ sudo mv /opt/MT-9.0.9 /opt/movabletype
展開したファイルが正しく配置されているか確認します。
$ ls -l /opt/movabletype
一時ファイルを削除します。
$ sudo rm /tmp/MT-9.0.9.zip
Movable Type の設定ファイルを作成する
設定ファイルのサンプルをコピーし、/opt/movabletype/mt-config.cgi を作成します。
$ sudo cp /opt/movabletype/mt-config.cgi-original /opt/movabletype/mt-config.cgi
/opt/movabletype/mt-config.cgi をテキストエディタで開き、既存の記述をすべて消去して、次の内容に差し替えます。
YOUR_PASSWORD を実際の値に書き換えてください。
##### URL / PATH #####
CGIPath /mt/
StaticWebPath /mt-static/
BaseSitePath /var/www/html
##### DATABASE #####
ObjectDriver DBI::mysql
Database movabletype
DBUser mt_user
DBPassword YOUR_PASSWORD
DBHost localhost
##### LANGUAGE #####
DefaultLanguage ja
##### FILE PERMISSIONS #####
DirUmask 0022
HTMLUmask 0022
UploadUmask 0022
##### IMAGE DRIVER #####
ImageDriver ImageMagick
##### PSGI #####
PIDFilePath /run/movabletype/mt.pid
Movable Type の実行ユーザーを作成する
Movable Type 実行専用のシステムユーザーを作成します。ログインシェルには /sbin/nologin を設定して直接ログインを禁止します。
$ sudo useradd -r -d /var/lib/mt -s /sbin/nologin mt
ユーザーが作成されているか確認します。
$ id mt
# 出力例
# uid=990(mt) gid=990(mt) groups=990(mt)
ホームディレクトリを作成し、所有権とパーミッションを設定します。
$ sudo mkdir -p /var/lib/mt
$ sudo chown mt:mt /var/lib/mt
$ sudo chmod 700 /var/lib/mt
アプリケーションディレクトリの所有権とパーミッションを変更する
/opt/movabletype 配下のディレクトリとファイルの所有権を Movable Type の実行ユーザーに変更します。
$ sudo chown -R mt:mt /opt/movabletype
/opt/movabletype の CGI のパーミッションを 755 に変更します。
$ sudo chmod 755 /opt/movabletype/*.cgi
Movable Type サービスを起動する
Starman のパスを確認します。
$ which starman
# 出力例
# /usr/local/bin/starman
Movable Type の systemd ユニットファイル(/etc/systemd/system/movabletype.service)を作成します。
which starman で表示されたパスと ExecStart= 内の記述が異なる場合は、実際のパスに書き換えてください。
[Unit]
Description=Movable Type Starman Server
After=network.target syslog.target mariadb.service
Wants=mariadb.service
Before=nginx.service
[Service]
Type=simple
User=mt
Group=mt
Environment=MT_HOME=/opt/movabletype
RuntimeDirectory=movabletype
LogsDirectory=movabletype
ExecStart=/usr/local/bin/starman --listen 127.0.0.1:5000 --pid /run/movabletype/mt.pid --workers=2 --error-log=/var/log/movabletype/movabletype.log -I${MT_HOME}/extlib ${MT_HOME}/mt.psgi
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartPreventExitStatus=1
SyslogIdentifier=movabletype
[Install]
WantedBy=multi-user.target
systemd の設定を再読み込みし、新規作成したユニットファイルを反映します。
$ sudo systemctl daemon-reload
Movable Type サービスを起動し、自動起動を有効化します。
$ sudo systemctl enable --now movabletype
Movable Type サービスが active (running) かつ enabled になっていることを確認します。
$ systemctl status movabletype --no-pager
Nginx のインストールと設定
Nginx をインストールする
Nginx のパッケージをインストールします。
$ sudo dnf install nginx
Nginx のバージョンを確認します。
$ nginx -v
ウェブディレクトリを作成する
サイト公開用のディレクトリを作成し、所有権とパーミッションを設定します。
$ sudo mkdir -p /var/www/html
$ sudo chown mt:mt /var/www/html
$ sudo chmod 755 /var/www/html
Nginx の設定ファイルを作成する
メインの設定ファイル(/etc/nginx/nginx.conf)をテキストエディタで開き、server ブロックをコメントアウトします。
# server {
# listen 80;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
#
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2;
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
Movable Type 用の設定ファイル(/etc/nginx/conf.d/movabletype.conf)を作成します。ドメイン名や証明書のファイルパスは、実際の環境に合わせて変更してください。
本サンプルは HTTPS 運用を前提としています。事前に DNS レコードの設定、SSL/TLS 証明書の発行、および443番ポート(HTTPS)の開放が完了していることを確認してください。
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/html;
index index.html;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
try_files $uri $uri/ =404;
}
location /mt/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:5000;
proxy_read_timeout 300;
client_max_body_size 30m;
}
location /mt-static/ {
alias /opt/movabletype/mt-static/;
}
}
Nginx の設定ファイルに構文エラーがないか確認します。
$ sudo nginx -t
# 成功時の出力例
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx サービスを起動する
Nginx サービスを起動し、自動起動を有効化します。
$ sudo systemctl enable --now nginx
Nginx サービスが active (running) かつ enabled になっていることを確認します。
$ systemctl status nginx --no-pager
Movable Type のインストール
ウェブブラウザで次の URL にアクセスし、インストールウィザードの指示に従って Movable Type の初期セットアップを行います。
- アクセス先 URL:
https://<ドメイン>/mt/mt.cgi
画面操作の手順については、「Movable Type をインストールする」を参照してください。
インストール後の推奨作業
Movable Type のインストール完了後、安全に運用を開始するために実施しておくべき推奨作業を解説します。
セキュリティ対策を実施する
本手順では、さくらのクラウド上で Movable Type を動作させるための最小構成を解説しています。セキュリティ設定は必要最小限となっていますので、本番運用にあたっては、組織のセキュリティポリシーに応じて、OS・Web サーバー・データベース等のシステム環境全般、および Movable Type 固有のセキュリティ対策を追加で実施してください。
詳細については、「Movable Type セキュリティ対策ガイド」を参照してください。
システムメールを設定する
パスワード再設定やコメント投稿、アカウントロックアウトなどのイベント発生時に通知メールを送信するには、Movable Type のメール送信設定が必要です。
外部の SMTP サーバーを利用する場合は、Movable Type の設定ファイル(/opt/movabletype/mt-config.cgi)に SMTP 接続用の環境変数を追加します。
設定方法の詳細は、「SMTP によるメール送信設定」を参照してください。
スケジュールタスクを設定する
指定日投稿や公開キューによる再構築などのスケジュール処理を行うには、run-periodic-tasks スクリプトを定期的に実行する cron ジョブの設定が必要です。
cron はタスク実行時にユーザーのホームディレクトリを参照します。事前に「Movable Type の実行ユーザーを作成する」の手順でホームディレクトリが作成されていることを確認してください。
cron の設定ファイル(/etc/cron.d/movabletype)を作成し、次の内容を記述します。この設定では、5分間隔でスクリプトが実行されます。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
*/5 * * * * mt cd /opt/movabletype && ./tools/run-periodic-tasks >> /var/log/movabletype/run-periodic-tasks.log 2>&1
管理画面でテスト記事を「日時指定」で作成し、次回のタスク実行(5分間隔)以降に公開されるか確認します。実行結果はログファイルまたは管理画面の [システム] > [ツール] > [ログ] から確認できます。
$ tail -n 10 /var/log/movabletype/run-periodic-tasks.log
ログローテーションを設定する
ログファイルの肥大化を防ぐため、Movable Type 本体とスケジュールタスクのログを定期的にローテーションする設定を行います。
ログローテーションの設定ファイル(/etc/logrotate.d/movabletype)を作成し、次の内容を記述します。この設定では、週に1回ローテーションが行われ、過去4週間分のログが保存されます。
/var/log/movabletype/movabletype.log {
weekly
rotate 4
compress
missingok
notifempty
create 0644 mt mt
sharedscripts
postrotate
/bin/systemctl restart movabletype 2> /dev/null || true
endscript
}
/var/log/movabletype/run-periodic-tasks.log {
weekly
rotate 4
compress
missingok
notifempty
create 0644 mt mt
}
logrotate コマンドをデバッグモードで実行し、設定ファイルに構文エラーがないか確認します。
$ sudo logrotate -d /etc/logrotate.d/movabletype
まとめ
本記事では、さくらのクラウド上のサーバーに Movable Type ソフトウェア版をインストールする手順を解説しました。
ソフトウェア版は、自社で用意したサーバーで自由にカスタマイズできる点が魅力ですが、環境構築や運用保守にかかるリソースを抑えたい場合は、マネージドサービスの Movable Type クラウド版(さくらのクラウドプラン)もおすすめです。
クラウド版では、セットアップ済みの最新版の Movable Type を手軽に利用できます。アップデートやセキュリティ対策までシックス・アパートが対応するため、構築・運用の負担を大幅に軽減できます。