Movable Typeをサブドメインに対応させたい
Movable Typeの管理画面にログインし、最初に作成したウェブサイトを開くと以下の様な画面になっていると思います。
次に、左のメニューから"ブログ"をクリックして"新規"をクリックします。すると、以下の様な画面になると思います。
そして、ブログURL部分の下に"サブドメインの利用"というチェックボックスがあるのでチェックを入れます。今回は以下のような設定をしたいと思います。
- ブログ名:weblog
- ブログURL:weblog.(ドメイン名)
- ディレクトリ:/data/file/static/(ドメイン名)/weblog
- タイムゾーン:UTC+9(日本標準時)
- 使用言語:日本語
※ 開発環境用のため、ドメイン名は消しました。また、本文内ではディレクトリに関しては各環境によって変わってくるためMovable Type for Amazon Web Servicesの共通パスしか書いていません。ファイルパスを確認の上、設定ファイルの編集などを行なって下さい。
上記の情報を入力すると以下の様になると思います。
ブログの作成をクリックすると以下の様な画面がでます。
アラートで、"設定を保存しました。設定を有効にするには再構築を行なって下さい。"と出るので、再構築しましょう。
サーバーの設定を変更する
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の落とし方や電源操作などに関してはまた後日記載したいと思います。サーバーサイドになるのでこれくらいにしておきたいのですが...。