システム環境変数の値を利用してMovable Typeの設定を行う
          
            
          
        
        Movable Typeでは、サーバーに設定されているシステム環境変数の値を参照して、mt-config.cgi 内の環境変数を設定することができます。
MT 8.3.0 | MT 8.0.5 | MT 7 r.5505 以降で利用可能です。
この機能により、データベースのパスワードなどの情報を mt-config.cgi に直接記述せず、サーバーの環境変数から動的に読み込ませることが可能になり、セキュリティを向上させることができます。
設定には以下の方法があります。
- env()関数を利用する方法:
 - mt-config.cgi内で、特定の環境変数の値としてシステム環境変数を指定します。
- MT_CONFIG_接頭辞を利用する方法:
 サーバー側で- MT_CONFIG_から始まるシステム環境変数を設定します。この方法では- mt-config.cgiに記述がなくても、Movable Typeが値を認識します。
env() 関数を利用する方法
        mt-config.cgi ファイル内で、Movable Typeの環境変数の値として env(システム環境変数名) または env(システム環境変数名, 標準値) という形式で記述します。
書式
MovableTypeの環境変数名 env(システム環境変数名)
MovableTypeの環境変数名 env(システム環境変数名, 標準値)- システム環境変数名:
 参照したいサーバーのシステム環境変数名を指定します。
- 標準値(任意):
 指定したシステム環境変数が存在しない場合に使用される値を指定します。省略した場合、値は空の文字列として扱われます。
利用例
サーバーのシステム環境変数 DB_PASSWORD にパスワードが設定されている場合、mt-config.cgi には以下のように記述します。
DBPassword env(DB_PASSWORD)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.psgiDocker
docker-compose.yml や Dockerfile で environment を設定します。
# docker-compose.yml の例
services:
  movabletype:
    image: movabletype/movabletype:latest
    environment:
      - MT_CONFIG_DBPASSWORD=your_database_password
