Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Blogブログ

【さくらのクラウド】Movable Type ソフトウェア版のセットアップ手順

本記事では、さくらのクラウド上のサーバーに Movable Type ソフトウェア版をインストールする手順を解説します。

Web サーバーに Nginx、PSGI サーバーに Starman、データベースに MariaDB を採用した構成で、依存パッケージのインストールから各種設定ファイルの作成、Movable Type のインストール、インストール後の推奨作業まで、一連の手順をまとめています。

さくらのクラウド「マーケットプレイスExpress」でソリューションをご確認いただいた後の、具体的なセットアップ手順としてご活用ください。

目次

前提条件

本手順を進めるにあたり、次の条件を満たしていることを前提とします。

  • さくらのクラウドでサーバーが作成されていること
  • システム管理者権限を持つユーザーでサーバーに 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 ファイル)をサーバーの /tmpscp で転送します。

# ローカルマシンで実行
$ 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 を手軽に利用できます。アップデートやセキュリティ対策までシックス・アパートが対応するため、構築・運用の負担を大幅に軽減できます。

Movable Type クラウド版 さくらのクラウドプランの詳細はこちら