Movable Typeをサブドメインに対応させたい

Movable Typeの管理画面にログインし、最初に作成したウェブサイトを開くと以下の様な画面になっていると思います。

2013-12-12.01.png

次に、左のメニューから"ブログ"をクリックして"新規"をクリックします。すると、以下の様な画面になると思います。

2013-12-12.02.png

そして、ブログURL部分の下に"サブドメインの利用"というチェックボックスがあるのでチェックを入れます。今回は以下のような設定をしたいと思います。

  • ブログ名:weblog
  • ブログURL:weblog.(ドメイン名)
  • ディレクトリ:/data/file/static/(ドメイン名)/weblog
  • タイムゾーン:UTC+9(日本標準時)
  • 使用言語:日本語

※ 開発環境用のため、ドメイン名は消しました。また、本文内ではディレクトリに関しては各環境によって変わってくるためMovable Type for Amazon Web Servicesの共通パスしか書いていません。ファイルパスを確認の上、設定ファイルの編集などを行なって下さい。

上記の情報を入力すると以下の様になると思います。

2013-12-12.03.png

ブログの作成をクリックすると以下の様な画面がでます。

2013-12-12.04.png

アラートで、"設定を保存しました。設定を有効にするには再構築を行なって下さい。"と出るので、再構築しましょう。

サーバーの設定を変更する

Movable Type上で設定を変更しただけでは複数ドメインに対応し終えていません。なので、SSHでサーバーにログインしてアクセスして変更しましょう。

まず、以下のコマンドを実行します。

cd /app/conf
cp nginx-common.conf (任意の名前).conf

※ (任意の名前)には半角英数字でわかり易い名前をつけておきます。
例:blog-domain-jp.conf

次に、viコマンドを実行してファイルを開きます。

sudo vi (任意の名前).conf

ファイルの反転部分を変更します。

server_name  (任意のホスト名);
charset      utf-8;

gzip on; gzip_http_version 1.1; gzip_disable “MSIE [1-6].”; gzip_vary on; gzip_comp_level 1; gzip_proxied any; gzip_min_length 1000; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

location ^~ /mt/ { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://unix:/app/run/movabletype.sock; limit_req zone=one burst=100; proxy_read_timeout 300; }

location ~ .php { ssi on; root /data/file/static/(先ほど作成したディレクトリ); fastcgi_pass unix:/app/run/php-fpm.sock; fastcgi_param HTTP_USER_AGENT $http_user_agent; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; limit_req zone=one burst=100; }

location / { ssi on; perl MTDynamicHandler::handler; root /data/file/static/(先ほど作成したディレクトリ); index index.html index.htm index.php; limit_req zone=one burst=100; }

location /mt-static { alias /app/movabletype/mt-static; }

location ~ /.ht { deny all; }

すべてコピーしているので、行数等はキーボード右上のescキーをおした後に[:行数]と入力すればその行に行くので、あとは十字キーで編集箇所まで行った後、iキーを押してください。最後にescキーを押して[:wq]と入力すればviエディタは終了します。

そして、nginxのファイルを編集します。

sudo vi nginx.conf

以下の反転部分を追加して下さい。

    server {
        listen              80;
        include             /app/conf/nginx_common.conf;
    }
    server {
        listen              80;
        include             /app/conf/(任意の名前).conf;
    }

そのあとに以下コマンドを用いてnginxを再起動させます。

sudo service nginx restart

wwwあり・なしの統一、リダイレクト

ウェブサイト等で昔運営していたサイト等にアクセスがあったときに新しいサイトにリダイレクトさせたい、という場合ありますよね。当サイトでもwwwがついていたらwwwなしにしたりしています。

ということで、バックアップは大事なのでバックアップは必ずとっておきましょう。

cd /app/conf
sudo cp nginx_common.conf nginx_common.conf.original

バックアップを取った後に以下のようにしてファイルを開きましょう。

sudo vi nginx_common.conf

すると、viエディタが起動するので以下の部分を編集しましょう。編集開始は[i]キーを押しましょう。

server_name  (任意のホスト名);
charset      utf-8;

gzip on; gzip_http_version 1.1; gzip_disable “MSIE [1-6].”; gzip_vary on; gzip_comp_level 1; gzip_proxied any; gzip_min_length 1000; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

location ^~ /mt/ { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://unix:/app/run/movabletype.sock; limit_req zone=one burst=100; proxy_read_timeout 300; }

location ~ .php { ssi on; root /data/file/static/; fastcgi_pass unix:/app/run/php-fpm.sock; fastcgi_param HTTP_USER_AGENT $http_user_agent; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; limit_req zone=one burst=100; }

location / { ssi on; perl MTDynamicHandler::handler; root /data/file/static/; index index.html index.htm index.php; limit_req zone=one burst=100; }

location /mt-static { alias /app/movabletype/mt-static; }

location ~ /.ht { deny all; }

そして、escキーを押した後に[:wq]と入力しましょう。

次に、nginxのファイルを編集します。

sudo vi nginx.conf

nginx_common.confの設定の下に記載します。

server {
    listen              80;
    include             /app/conf/nginx_common.conf;
}
server {
   listen 80;
   server_name *.(任意のホスト名);
   rewrite ^ http://(任意のホスト名)$request_uri? permanent;
}

このサイトだと、以下のようになります。

sudo vi nginx.conf

nginx_common.confの設定の下に記載します。

server {
   listen 80;
   server_name *.focusmark.jp;
   rewrite ^ http://focusmark.jp$request_uri? permanent;
}

また、blog.focusmark.jpとwww.focusmark.jpだけリダイレクトさせたい場合は以下のように指定します。

server {
   listen 80;
   server_name blog.focusmark.jp www.focusmark.jp;
   rewrite ^ http://focusmark.jp$request_uri? permanent;
}

更に、「昔使っていたブログやサイトの閲覧者に対して配慮したい、サイトはこれ(例:focusmark.jp)しか運用してないからリダイレクトかけたい」という場合は以下のようにします。

server {
   listen 80 default;
   server_name _;
   rewrite ^ http://focusmark.jp$request_uri? permanent;
}

こんな感じです。

nginxの設定が違う場合は該当部分を削除してください。(追記した部分)また、ホスト名などの設定が違う場合は削除するなりして下さい。

今回、nginxのバックアップを取得していたnginx_common.confに関しては以下のようにrm(remove、削除)コマンドとmv(move、移動・名称変更)コマンドを使って復元させることが可能です。

sudo rm nginx_common.conf
sudo mv nginx_common.conf.original nginx_common.conf

まとめ

今回の記事で改めてMovable Type for Amazon Web Servicesは設定の自由度・スピードが断然違うなと思いました。Movable Type クラウド版であればSix Apartの人が個別に設定をしないと行けないのに対し、AWS版では(当たり前ですが)SSHで接続して管理などもできるためこのように「すぐにしたい」ということができます。

また、後半部分のドメインの一元化等はMovable Typeクラウド版ではどのようになっているのか私もそこら辺はわかりませんが、その辺りも自由度が高いのでVPSの管理を一度でもしたことがある、バックアップは定期的に取る、AWSがある程度分かっている、という人であれば使用したら良いと思います。

他にも色々とSSL対応とかやる気があればします。AWSの落とし方や電源操作などに関してはまた後日記載したいと思います。サーバーサイドになるのでこれくらいにしておきたいのですが...。