dotcloud に concrete5 をインストールする

phper.jp に続いて dotcloud にも PHP アプリをインストールしてみます。

http://docs.dotcloud.com/static/tutorials/firststeps/ を参考にします。

dotcloud コマンドのインストール

dotcloud コマンドをインストールします。

$ sudo easy_install dotcloud

サービスの作成

アプリケーションのネームスペースを作成します。「kenji」としました。

$ dotcloud create kenji
Warning: /home/kenji/.dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/account/settings): 
*************************************************************
Created "kenji"

api key を求められますので、表示された URI にアクセスしコピペします。


PHP サービスをディプロイします。サービス名は「concrete5」とします。

$ dotcloud deploy -t php kenji.concrete5
Created "kenji.concrete5".

これで URIhttp://concrete5.kenji.dotcloud.com/ となります。


データベースサービスを作成します。

$ dotcloud deploy -t mysql kenji.mysql
error: Timeout. Please try again.

タイムアウトしてしまいました。もう一度やってみます。

$ dotcloud deploy -t mysql kenji.mysql
error: Service 'kenji.mysql' already exists

作成されているようです。

$ dotcloud info kenji.mysql
cluster: wolverine
config:
    mysql_password: ********
name: kenji.mysql
namespace: kenji
ports:
-   name: ssh
    url: ssh://dotcloud@mysql.kenji.dotcloud.com:****
-   name: mysql
    url: mysql://root:********@mysql.kenji.dotcloud.com:****
state: running
type: mysql

データベースにログインして concrete5 用のデータベースを作成します。

$ dotcloud run kenji.mysql -- mysql -u root -p
mysql> CREATE DATABASE concrete5 DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON concrete5.* TO concrete5@'%' IDENTIFIED BY '********';
mysql> FLUSH PRIVILEGES;

concrete5 ソースコードの転送

$ unzip concrete5.4.1.1.1.ja.zip
$ cd concrete5.4.1.1.1.ja


まず、concrete5 がうまく動作するように Nginx の設定を変更します。

fastcgi.conf」を作成し、以下を記載します。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;

「nginx.conf」を作成し、以下を記載します。

fastcgi_index index.php;

if ($uri ~ "^(.+?\.php?)(/.*)$") {
    set $path_info $2;
}

if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php last;
}


ソースコードをサーバに送信します。最後のドットを忘れないでください。カレントディレクトリの中身をサーバへ転送するという意味です。

$ dotcloud push kenji.concrete5 .

ブラウザで http://concrete5.kenji.dotcloud.com/ にアクセスします。

お馴染みのインストールページが表示されました。

MySQL のサーバーアドレスは先ほど表示されたポート番号を付けて指定します。例えば、「mysql.kenji.dotcloud.com:3306」のようになります。

これで、concrete5 はインストールできましたが、このままで次回 dotcloud push すると、サーバ上で作成されたファイルがすべて削除されてしまいます。site.php も削除されてしまいますので、インストールページが表示されてしまい、アップロードされたファイルもすべてなくなります。

そこで、サーバ上のファイルをローカルに同期しておきます。

$ rsync -e "ssh -p ****"  -avzu dotcloud@concrete5.kenji.dotcloud.com:current/ .

次回、push する直前にこの処理をする必要があります。


あるいは、最初の転送の前に、WordPress の解説(英語) にあるように postinstall ファイルを作成し、作成されるファイルを保存するようにする必要があります。

その他のコマンド

以下のコマンドで、Nginx のログを監視できます。

$ dotcloud logs kenji.concrete5


作成したサービスの一覧は、以下で表示できます。

$ dotcloud list


サーバに ssh でログインするには、以下のようにします。

$ dotcloud ssh kenji.mysql


データベースサービスを削除したい場合は、以下のようにします。

$ dotcloud destroy kenji.mysql
Please confirm destruction [yn]: y