【Movable Type for AWS】Movable Type for Amazon Web Servicesを使ってみた

Movable TypeAmazon Web Servicesでも使えるようになった、ということで使ってみることにしました。以前にも使って見る前に比較をしてみましたが、やはり使ってみないとわからない点が多いと思ったので一番下で導入がしやすいt1.microを使ってみました。

この記事は、「Movable Type Advent Calendar 2013」と「AWS Advent Calendar 2013」の7日目になります。

Movable Type for Amazon Web Servicesの仕様

Movable Type for Amazon Web Servicesの仕様は以下のようになっています。あとで記載しますが、VPSなどを普通にセットアップしただけのサーバーとかとは違っていて、知り合いのごまなのはに助けてもらいました。感謝です。プラグイン作成者の人とかは以下の情報を参考にプラグインを作成してもらえればと思います。

  • Movable Type 6.0
  • nginx 1.4.2(安定版の作成時の最新版が導入済み)
  • アプリケーションデータはすべて/app以下
    設定ファイルは/app/conf
  • Perl(モジュールは基本的にデータベース系以外はMovable Typeのmt-check.cgiで必要なものはすべて導入済み)
  • PHP 5.3.27(php-fpmで動作、mysqlとgd,mbstringが使える。関数"phpinfo"は使えない)
  • MySQL 14.14
  • Amazon Linux 2013.09

Movable Typeを動かすサーバーのスペックはそれこそAmazon Web ServicesのEC2のグレードによって変わってくることもあるのでここでは記載しません。また、サーバーのソフトウェアなども簡単にはアップデート出来ないような感じがしました。

使ってみる

ここまで記載していましたが、実際に使ってみないとわからない点が多いと思います。まずはAmazon Web Servicesの"Management Console"にログインします。

ログイン後、EC2の画面を開きます。

開いたあと、EC2のインスタンスを作成します。"Instance"をクリックして下さい。

Instanceの上にある"Lunch Instance"をクリックすると以下の様な画面が表示されると思います。今回は一番下のt1.microというプランを使います。スペックがもっと必要な場合は別途選択して下さい。なお、t1.micro以外は月に約5000円サーバー代金以外に別途必要となります。また、転送量に応じて加算されます。(普通のブログだったらそこまで加算されないはず)

作成するときに気をつけないといけないのが、Movable TypeのAMI(イメージ)はMARKET PLACEで公開されているので、EC2のインスタンスを作成するときには"MARKET PLACE"をクリックして下さい。

このままだと見つけるまで時間がかかってしまうので『Movable Type 6』を検索部分に入力します。

入力後に"Enter"を押します。

Movable Type 6が出てくるため、"Select"をクリックしましょう。すると、次の画面が出てきます。

特に設定しなくても問題ない場合は"Review and Launch"をクリックしましょう。ストレージの設定を変えたい場合は上のナビゲーションの"4. Add Stodage"をクリックして変更しましょう。すると、以下の様な画面になっていると思います。

"Launch"をクリックすると、認証鍵について聞いてきます。

Amazon Web Services EC2を使ったことのある人は以下の様な画面が表示されると思います。

もし、使ったことがなければここで認証鍵を発行することができます。ここで発行した認証鍵は決して削除しないで下さい。削除した場合、Movable TypeをインストールしたAMIにアクセスできなくなります。

ダウンロードしたファイルは以下のようにダウンロードフォルダ内に保存しておきましょう。

IPアドレスの固定

インスタンス作成後、Movable TypeのシステムにアクセスするためのIPアドレスを固定していきます。

EC2の管理画面に移動します。左メニューの"Elastic IPs"をクリックしましょう。すると、以下の画面が出てきます。

出てきたら、"Allocate New Address"をクリックしましょう。

すると、ポップアップでEC2でつかうのかということを聞いてくるので変更せずにそのまま"Yes, Allocate"をクリックします。

IPアドレスが1つ追加されています。追加されたIPアドレスをクリックしてその上にある"Associate Address"をクリックして下さい。

発行されたIPアドレスの横の四角形をクリックします。反転されました。

サーバーを指定します。"Select an instance"をクリックすると作成したサーバーが出てくると思います。作成したサーバーを選びクリックします。

"Associate"をクリックして完了です。

サーバーとIPアドレスが固定されたので、ドメインを設定して下さい。今回は"mt6awsad7.focusmark.jp"というドメインを使ってMovable Typeの設定を説明します。

Movable Typeにログインする

Movable Typeにログインしてみましょう。先ほど設定したドメイン(設定していない場合はIPアドレス)をブラウザに入力してアクセスすると、以下の画面が出てくると思います。

"Start Movable Type"をクリックします。

Movable Typeのセットアップ画面が出てきます。(英語ですが

Movable Typeのセットアップ画面が出てくるのでセットアップウィザードに従っておもむろに設定します。"Language"から日本語に変更しておきます。

ウェブサイトを制作する画面が出てきました。ウェブサイト名はあとで変更できますし、今変更しても良いと思います。

時間を変えないといけないので、"Time Zone"から"UTC +9"を選択します。

そして、"Finish Install"をクリックすると以下の様な画面になります。

しばらくすると、以下の画面になります。

セットアップが完了するとMovable Typeが使える画面になります。

このままだと、ウェブサイトにアクセスしても何も表示されない!という状況になりかねないので"再構築"という作業をします。

管理画面右上の"新規作成"の隣の再構築ボタンをクリックしてください。

新規ウインドウが開きます。

再構築をクリックします。再構築後、サイトを開くと以下のようになっていると思います。

「Movable Typeで個人ブログを書きたい!」という人であればここまでで終了です。サーバーのソフトウェアはMovable Typeを動かすだけの最低限しか入っていないので特に問題無いとは思います。

Movable Typeの管理画面の注意点

Movable Typeの管理画面の注意点、それは普通のものとは少しURLが改造されているというところではないでしょうか。普通のシステムであれば以下の様な形式になっていると思います。

http://(ドメイン)/(MTディレクトリ名)/mt.cgi

MTディレクトリ名は大体cgi-binとかが入ると思います。しかし、AWS版を含むクラウド版では以下の様な形式になっています。

http://(ドメイン)/mt/admin

私も最初戸惑いまして、まず.cgiが最後にないという点やMovable Typeを使っている人からすると「あれ...」というのではないでしょうか。AWS版だけでなく、MT6のクラウド版を使っている人も注意する必要がありそうです。

プラグイン・テーマを使う

ここまでがセットアップ編です。Movable Typeはプラグインを追加したり、テーマを追加して自分だけの使いやすく管理のしやすいサイトやブログをつくる、ということではないでしょうか。

アップロードする(下準備編)

Movable Type本体のディレクトリとデータフォルダ(Movable Typeの生成したHTMLファイルの生成場所)、mt-staticのディレクトリに関しては以下のフォルダ内にあります。

  • Movable Type本体:/app/movabletype
  • データフォルダ:/data/file/static

mt-staticはMovable Type本体のフォルダ直下にありますが、ブラウザからアクセスするときには"http://(ドメイン)/mt-static/"となっているので、テーマ作成者やプラグイン作成者は注意する必要がありそうです。ただ、Movable Typeの関数を使って制作している場合は特に影響を受けることはなさそうです。

Movable Typeのプラグイン等をアップロードするためにはSFTPと呼ばれる方式を使ってアップロードする必要があります。SFTPに対応したクライアントで有名なのはFileZillaです。今回はFileZillaを使ってアップロードなどをしたいと思います。もし、あなたがTransmitを持っている場合はTransmitを使ってもらっても構いません。

Transmitで接続する方法は当サイトで先日記載しましたので、そちらをご覧になって下さい。

FileZillaを開きます。

Macを使っている人は上のバーから「FileZilla」→「Preferences」、その他のOSを使っているユーザーは「編集」→「全般設定」をクリックします。以下の様な画面が出てきます。

SFTPの項目をクリックし、鍵ファイルを追加をクリックします。先ほど発行した(既存の場合は選択した)認証鍵ファイルを選択します。"Open"をクリックします。

FileZillaは変換をしないと認識しないので「FileZillaは〜」という画面が出てきたら「はい」をクリックします。

鍵ファイルを任意の場所に保存します。私は"ドキュメント"フォルダ以下の"FileZilla"というフォルダに保存しています。

追加されたあと、そのウインドウの左下のOKをクリックします。OKをクリックするとウインドウが閉じ、FileZillaの最初の画面に戻ってきます。

開いたあと、上のメニューから「ファイル」→「サイトマネージャ」を開きます。もしくは、左上のアイコンをクリックします。

すると、新規ウインドウが開きます。「新しいサイト」をクリックしましょう。クリックするとサイト名を入力することができるフォームが出てくると思うので、名前を入力します。今回は、「MT6AWSAD7」としておきます。

ここにホスト名(IPアドレス or ドメイン)を入力し、プロトコルをSFTPに変更します。設定後、ログオンの種類を通常に設定し、ユーザー名に"ec2-user"、パスワードの項目を削除します。削除したあと、そのまま接続をクリックします。

エラーが出た場合、認証鍵を選び間違えているので再度追加しなおすなり別の方法を使って下さい。

上のバー(リモート サイト)に"/app/movabletype"と入力してEnterを押します。あとはいつもの様にMovable Typeのプラグインやテーマをアップロードすれば...あれ、できない。

メッセージを確認すると、パーミッションの問題で設定できないという表示が出てきています。SSHにログインしてパーミッションを変更しないとプラグインなどをアップロードできないみたいです。(クラウド版はFTP接続ですし、特に問題なく使えると思います。)

SSHにログインするためにはMacやLinuxでは端末から、WindowsではTeraTermやPuTTYなどがあります。Macを使っているのでターミナルで説明します。

WindowsでTera Termを利用して接続する方法に関して、分からなければ当サイトに該当記事がありますのでそちらをご覧になって下さい。

Spotlightから「ターミナル」と入力して調べると一番上にアプリで出てきます。選択してクリックします。

次に、先ほどの認証鍵があるフォルダに移動します。(AWSを普段使われている方は.sshで置き換えて下さい。)

 cd "ダウンロード" 

移動後、以下の形式で入力します。

 ssh -i (認証鍵ファイル名) ec2-user@(IPアドレス or ホスト名) 

すると接続...できません。以下の様な画面が出ると思います。

認証鍵のパーミッションエラーとなっているので、変えましょう。パーミッションというのは、誰が読めて書きこめ、実行することができるのかということを指示することができるものです。

 chmod 600 (認証鍵名)

そして、もう一度以下のコマンドを入力します。

 ssh -i (認証鍵ファイル名) ec2-user@(IPアドレス or ホスト名) 

※ 認証鍵ファイル名は先ほどダウンロードしたファイルを利用して下さい。
すると、ログインが出来ると思います。

次に、以下のコマンドを使ってec2-userというユーザーをwwwというグループに所属させます。なぜ所属させるのかというと、今後ファイルをアップロードをするときのし忘れなどを防ぐためです。また、sudoコマンドで一時的にroot権限になっています。

sudo usermod -G www ec2-user

そして、以下のコマンドを実行します。(ユーザーに所属しているグループで書き込みができるようにする)

sudo chmod rwxrwxr-x /app/movabletype/plugins -R 
sudo chmod rwxrwxr-x /app/movabletype/themes -R
sudo chmod rwxrwxr-x /app/movabletype/mt-static -R

chmodというのは、Change Modeという意味です。rwxはRead(読込),Write(書込),Exec(実行)の3つから成り立っています。

実行後、テーマやプラグインをFileZillaを使ってアップロードします。アップロードを完了させたあとに以下のコマンドを入力して下さい。(ec2-user権限になっている場合は sudo を使って下さい。)

sudo service movabletype restart

プラグインが使えるかどうかを確認してみてください。もし、Movable Typeの画面が表示されない場合は該当プラグインを削除して上記のコマンドを実行してみてください。Movable TypeのAMI版では使えないものであるということです。

実行できたことを確認すると、以下のコマンドを実行します。

sudo chmod rwxr-xr-x /app/movabletype -R 
sudo chown www:www /app/movabletype -R

chwonというのは、Change Ownerという意味です。

先ほど変更したフォルダの権限とアップロードしたファイルの権限を元の状態に戻します。もし、開発中等という場合はファイルの編集などが終わったあとに実行して下さい。

以上、長くなりましたがMovable Type for AMI版とプラグイン・テーマの追加方法でした。

メリット・デメリット

Movable Type AWS版を使ってみて思った点を幾つか上げてみたいと思います。

メリット

  • Plack等のPSGI環境のMovable Type最適化済み環境がクリックだけで手に入る
  • Movable Type 6を安価に利用することができる(スポットインスタンスだと月500円〜でも使える)
    →体験用のサーバー等
  • 使う時だけ立ち上げたりすることもできる
  • 再構築などが早い、アクセス数がある程度までならt1.microで大丈夫
  • Movable Type最適化済みサーバー構築作業が必要じゃない(大事なので表現を変えて二度いいました。)

デメリット

  • プラグインとかアップロードしにくい
    やはりサーバー管理とかしたことがある人向け
  • クラウド版は再起動がMovable Typeの管理画面上からできるから良い
  • システムのアップデートができない(nginxとか)
  • データ転送量によって従量課金制
    ただ、計算などある程度事前に見込みが可能。

クラウド版との違い

今回紹介したAMI版とクラウド版の動作環境の違いは見受けられません。どちらもPlack(PSGI)環境なので変わりは無いと思います。

クラウド版との違い、それはAWSならではの料金体系とサーバースペックの柔軟さ、自由度ではないでしょうか。Movable Typeクラウド版はSSHのアクセスが出来ない代わりにFTPアップロードですべてが完結するように構築されています。また、Movable Type本体のアップロードなどもSix Apartの人がしてくださるので管理面でもお金を払っていると考えればクラウド版の値段は割に合っているのではないかと思います。また、ベーシック認証やサーバーの再起動などもすべてMovable Typeの管理画面からできるので、クラウド版は初心者の人からでも使いやすいと思います。AWS版は逆にサーバー管理を一度でもしたことがある人やLinuxを使っている人でコマンドラインで操作したことのある人であれば有効に使えると思います。

今回説明した内容はほんの一部です。VPSなど一度触ってみたことが合ってサイト運営したことがあるよ!とかLinux常用しているという方にとってはMovable Type本体の中にあるプラグインディレクトリなどを触るコマンドなどは親しみがあったのではないでしょうか。コマンドが使えないのであればレンタルサーバーを使うか、少しお値段が張りますがクラウド版を利用されることをおすすめします。

Advent Calenderの記事でした。

冒頭にも記載したとおり、Movable Type Advent Calender 2013とAWS Advent Calender 2013の7日目の記事でした。(MTネタで1つ書く予定でしたが、AWS版を調べてたら結構ややこしかったのもあったりしたし、MARKET PLACE初利用なので合わせて書かせていただきました。というか、Advent Calendarって地味にこった内容が多かったのではじめての方からでも...という記事にしてみました。

どちらかというとMovable Typeのほうが割合的には多かったり、最後の最後にはSSHという通称『黒い画面』を使った操作まで入れてしまいました。使いたくなかったですが...。

Movable Type Advent Calendar

昨年から始まり、Movable Typeのことについて25日間記載していくものです。

昨日は奥脇さんが書かれていました。(Data API PHP Cache - Data API のレスポンス結果をPHPキャッシュするプラグイン)明日はTaiju Higashiさんが書かれる予定です。

詳細:Movable Type Advent Calendar - Adventar

AWS Advent Calendar

こちらも昨年から始まり、AWSのことについて25日間書いていくものです。

昨日はKenTamagawaさんが書かれました。(Amazon WorkSpaces触ってみた)明日は@gotyooooさんが書かれる予定です。

詳細:AWS Advent Calendar 2013

冒頭のバージョン確認などの裏側

冒頭にnginxやプラグインの開発でPHPを使う方向けに記載しましたが、私では何も力が及ばず知り合いに助けてもらいました。

ごまなのはさんのブログ『House of Hobbies』で明後日(12月9日)公開されるみたいです。他の環境でどのように調べたのか知りたいという人はそちらを確認されて下さい。

当サイトでもマルチサイト対応等に関してやる気があれば少し記載する予定です。

2013-12-10更新
公開されたみたいです。

Movable Type for AWS のサーバーコマンドについて。