システム環境変数の値を利用してMovable Typeの設定を行う
Movable Typeでは、サーバーに設定されているシステム環境変数の値を参照して、mt-config.cgi 内の環境変数を設定することができます。
MT 8.3.0 | MT 8.0.5 | MT 7 r.5505 以降で利用可能です。
この機能により、データベースのパスワードなどの情報を mt-config.cgi に直接記述せず、サーバーの環境変数から動的に読み込ませることが可能になり、セキュリティを向上させることができます。
設定には以下の方法があります。
MT_CONFIG_接頭辞を利用する方法:
サーバー側でMT_CONFIG_から始まるシステム環境変数を設定します。この方法ではmt-config.cgiに記述がなくても、Movable Typeが値を認識します。
利用例
サーバーのシステム環境変数 DB_PASSWORD にパスワードが設定されている場合、mt-config.cgi には以下のように記述します。
MT_CONFIG_ 接頭辞を利用する方法
サーバー側で MT_CONFIG_ という接頭辞に続けて、Movable Typeの環境変数名を設定します。
書式
# Apache httpd.conf や .htaccess の場合
SetEnv MT_CONFIG_DBPASSWORD "your_password"
# PSGI/Starman の起動スクリプトなどの場合
export MT_CONFIG_DBPASSWORD="your_password"
この方法で設定されたシステム環境変数は、Movable Typeの起動時に自動的に読み込まれます。
MT_CONFIG_ に続くMovable Typeの環境変数名の大文字と小文字は区別されません。例えば、DBPassword を設定する場合、システム環境数名は MT_CONFIG_DBPASSWORD でも MT_CONFIG_dbpassword でも同様に機能します。
優先順位
mt-config.cgi 内の記述と MT_CONFIG_ 接頭辞付きのシステム環境変数の両方が存在する場合、MT_CONFIG_ 接頭辞付きのシステム環境変数の値が優先されます。
例えば、mt-config.cgi に DBPassword my_password_in_file と記述されていても、サーバー側でシステム環境変数 MT_CONFIG_DBPASSWORD が my_password_in_env に設定されていれば、後者の my_password_in_env がデータベースのパスワードとして利用されます。
サーバー環境ごとの設定例
システム環境変数を設定する方法は、サーバーの構成によって異なります。
Apache
httpd.conf や .htaccess ファイルに SetEnv ディレクティブを記述します。
SetEnv MT_CONFIG_DBPASSWORD "your_database_password"
Nginx
nginx.conf 内の location ブロックや、FastCGI の設定ファイル (fastcgi_params など) に fastcgi_param を記述します。
fastcgi_param MT_CONFIG_DBPASSWORD "your_database_password";
PSGI / Starman
起動用のシェルスクリプト内で export コマンドを使用します。
#!/bin/sh
export MT_CONFIG_DBPASSWORD="your_database_password"
# AWS Systems Manager パラメータストアから値を取得する例
# export MT_CONFIG_DBPASSWORD=$(aws ssm get-parameter --name "/my-mt/dbpassword" --query "Parameter.Value" --output text)
exec starman --pid /var/run/mt.pid ./mt.psgi
Docker
docker-compose.yml や Dockerfile で environment を設定します。
# docker-compose.yml の例
services:
movabletype:
image: movabletype/movabletype:latest
environment:
- MT_CONFIG_DBPASSWORD=your_database_password
