PSGI対応中のMovable TypeをdotCloudで動かしてみた

  • Movable Type技術情報
  • 2012-06-06

ついに来ました! 秋出荷の次期バージョンで、Movable TypeがPSGI対応致します。

GitHubで開発バージョンを見つけて以来動作確認を進めておりまして、とりあえずですがPaaS dotCloudで動作させることができましたので、手順をまとめました。

Oneライセンスと合わせて完全無料! a-blog cmsをdotCloudで動かしてみた - MTエンジニアブログ - スカイアークシステムと内容が重複する部分は省略しております。

目次


使い方

dotCloudの設定

dotCloudにサインアップする

こちらをご覧下さい。


dotcloudコマンドをインストールする

こちらをご覧下さい。


dotCloudにアプリケーションを作成する

下記コマンドで、Movable Typeを動作させるアプリケーションの作成をします。
アプリケーション名は4文字以上という制約があるため、mtosという名前にしました。

$ dotcloud create mtos
Created application "mtos"


Movable Typeの設定

PSGI対応中のMovable Typeをダウンロードする

6/3時点でmasterブランチにマージされてないようなので、developブランチを使いました。(マージ後はmasterブランチを使用してください)
下記ページからzipファイルをダウンロードしてください。

zipファイルダウンロード後、下記手順でディレクトリを作成してファイルをコピーしてください。

  1. 適当な場所にmtosというディレクトリを作成する。
  2. mtos/mtosというディレクトリを作成する。
  3. ダウンロードしたzipファイルを適当な場所に展開する。
  4. 上記ファイルを展開してできたディレクトリの中身を、mtos/mtos/にコピーする。
  5. mtos/mtos/mt.psgiを、mtos/mtos/app.psgiに変更する。
  6. mtos/mtos/static/ディレクトリを作成して、mtos/mtos/mt-static/をそこに移動する。(mtos/mtos/static/mt-static/という状態になります)


設定ファイルを作成する

mtos/dotcloud.yml:
dotCloudで使うアプリケーションやサービスの設定です。
requirements:の後には必要そうなモジュールを記述してあります。(精査してないです)

※Image::Magick, GDはインストールできなかったので、イメージドライバにはImagerを設定してます。

www:
  type: perl
  approot: mtos
  requirements:
    - Plack
    - CGI::PSGI
    - CGI::Parse::PSGI
    - CGI::Compile
    - XMLRPC::Transport::HTTP::Plack
    - DBI
    - DBD::mysql
    - CGI
    - Image::Size
    - File::Spec
    - CGI::Cookie
    - HTML::Entities
    - LWP::UserAgent
    - SOAP::Lite
    - File::Temp
    - Imager
    - Storable
    - Crypt::DSA
    - MIME::Base64
    - XML::Atom
    - Archive::Tar
    - Archive::Zip
    - IO::Compress::Gzip
    - IO::Uncompress::Gunzip
    - Text::Balanced
db:
  type: mysql


ファイルアップロード、アプリケーションの起動を行う

下記コマンドでMovable Typeのファイルアップロードと、アプリケーションの起動を行います。
コマンド実行前に、mtosフォルダのある場所に移動しておいてください。
完了まで数分かかりますので、気長にお待ちください。

$ dotcloud push mtos mtos/
...
XX:XX:XX ---> Application fully deployed
Deployment finished. Your application is available at the following URLs
www: http://mtos-{dotCloudアカウント名}.dotcloud.com/


データベースの設定を行う

Movable Typeで使用するデータベースの設定を行います。

データベース設定は下記コマンドで確認できますので、「データベースのrootパスワード」と「データベースサーバーのポート番号」を控えておいてください。

$ dotcloud info mtos.db
config:
mysql_masterslave: true
mysql_password: {データベースのrootパスワード}
created_at: ????????.????
datacenter: Amazon-us-east-1d
image_version: ?????????? (latest)
instances:
ablogcms.db.0:
role: master
state: up
memory:??M/512M (?%)
ports:
- name: ssh
url: ssh://mysql@mtos-{dotCloudアカウント名}.dotcloud.com:{データベースサーバーのポート番号}
- name: mysql
url: mysql://root:{データベースのrootパスワード}@mtos-{dotCloudアカウント名}.dotcloud.com:{データベースサーバーのポート番号}
state: running
type: mysql


下記コマンドでMySQLにログインして「Movable Type用のデータベース作成」「ユーザー作成」を行います。
パスワード入力を求められますので、「データベースのrootパスワード」を入力してください。

$ dotcloud run mtos.db -- mysql -u root -p
# mysql -u root -p
Enter password:

Movable Type用のデータベースを作成します。

mysql> CREATE DATABASE mtos DEFAULT CHARSET=utf8;
Query OK, 1 row affected (0.00 sec)

データベースに接続するためのユーザーを作成します。
「XXXXXXXX」にはパスワードを設定してください。

mysql> GRANT ALL ON mtos.* TO 'mtos_user'@'%' IDENTIFIED BY 'XXXXXXXX';
Query OK, 0 rows affected (0.00 sec)

※参考ページ:dotcloud で nopaste なアプリケーションを動かしてみたよ - blog.nomadscafe.jp


dotCloud外のMovable Typeからインストールを行う

dotCloud上のMovable Typeからは何故かインストールができませんでした。

一度、ローカル環境や外部サーバー上のMovable Typeからインストールを行うことで、dotCloud上のMovable Typeを使用することができました。正しい手順ではありませんが、外部のMovable TypeからdotCloud上のデータベースにインストールを行ってください。

※最初に作成されるウェブサイトURL、ウェブサイトパスは適当に設定してください。存在しないパスを設定するとインストールができませんので、存在するパスを設定してください。


mt-config.cgiの設定をして、再アップロードと再起動を行う

dotCloud上のMovable Typeではインストールを行わないので、mtos/mtos/mt-config.cgiを作成します。

※Image::Magick, GDはインストールできなかったので、イメージドライバにはImagerを設定してます。

CGIPath /
StaticWebPath /static/mt-static/
StaticFilePath /home/dotcloud/current/static/mt-static/
ObjectDriver DBI::mysql
Database mtos
DBUser mtos_user
# GRANT ALL ~ で設定したパスワード
DBPass XXXXXXXX
DBHost mtos-{dotCloudアカウント名}.dotcloud.com
DBPort {データベースサーバーのポート番号}
DefaultLanguage ja
ImageDriver Imager


mt-config.cgiの作成後に下記コマンドを実行して、ファイルの再アップロードとアプリケーションの再起動を行います。コマンド実行前に、mtosフォルダのある場所に移動しておいてください。

$ dotcloud push mtos mtos/
...
XX:XX:XX ---> Application fully deployed
Deployment finished. Your application is available at the following URLs
www: http://mtos-{dotCloudアカウント名}.dotcloud.com/


ウェブサイトの設定を変更する

ウェブブラウザから下記URLにアクセスすると、Movable Typeのログイン画面が表示されます。

http://mtos-{dotCloudアカウント名}.dotcloud.com/

Movable Typeにログインをして、最初に作成したウェブサイトのウェブサイトURL、ウェブサイトパスを下記のように変更してください。

  • ウェブサイトURL:http://mtos-{dotCloudアカウント名}.dotcloud.com/
  • ウェブサイトパス:/home/dotcloud/current/static/{ウェブサイト名}

これでMovable Typeの設定が完了しました。
再構築後、下記URLにアクセスすると最初に作成したウェブサイトが表示されます。

http://http://mtos-{dotCloudアカウント名}.dotcloud.com/static/{ウェブサイト名}


注意すること

  • 実運用を考えると、データベースの設定はもう少しきっちりやるべきだと思います。
  • mtos/mtos/nginx.confを作成して適切に設定すれば、「http://mtos-{dotCloudアカウント名}.dotcloud.com/」でウェブサイトを表示させることも可能だと思います。興味がある方は是非ともチャレンジしてみてください。