PHPを使っているすべての人が知るべき無料のPaaSサービス

PHP
symfonyをはじめ、フレームワークを稼働させるためには、ロリポップをはじめとした激安の共有サーバでは無理があります。低価格な候補としては、1年間マイクロインスタンスは無料のAmazon EC2や月額980円のさくらインターネットのVPSが手頃しょうか。しかし、まっさらなOSからの環境構築は、ハードルも高く、他の環境と混同して使うのが難しいのが実情です。

日本Symfonyユーザー会¥ 2,940

先日発売されたsymfony本の執筆に携わらせて頂いたので、今回はPHPのPaaSホスティングサービスである cloudControl で、無料で symfony1.4 を稼働させます。きっと、cakePHPやCodeigniterも稼働させることができるのではないでしょうか。

スポンサーリンク

cloudControlって?

cloudControl » Cloud hosting platform

1時間あたり1BoxというcloudControlで定義している独自の単位は無料で使えます。簡単に言うと、少ないアクセスのサイトだったら無料で使えます。それ以上のアクセスを提供するためにはunlockの手続き(有料)が別途必要です。

また、無料で提供しているアドオンが利用できます。その中にはMySQLがあるので、PHPとMySQLで稼働するフレームワークは大抵稼働するのではないでしょうか。

cloudControl で symfony1.4 を稼働させるところまで、解説することにします。

cloudControl のサインアップ

http://cloudcontrol.com/へアクセスして、“Sign-up now” ボタンをクリックしてください。

cloudControl » Cloud hosting platform

ユーザーネーム・パスワードとメールアドレスの入力

cloudControl » Sign up

アクティベーションコードの入力

cloudControl » Sign up

入力したメールアドレスに「cloudControl activation code」というタイトルでアクティベーションコードが送られてきます。そのアクティベーションコードを入力してください。

サインアップ終了

cloudControl » Sign up

以上でサインアップは終了です。ログインできることを確かめておいてください。

管理ツールのインストール

cloudControlではコマンドラインの管理ツールで様々な操作をします。そのcctrlをインストールします。

pythonのeasy_installで導入できます。

$ sudo easy_install cctrl
Password:
Searching for cctrl
Reading http://pypi.python.org/simple/cctrl/
Reading https://launchpad.net/cctrl
Reading https://launchpad.net/cctrl/+download
Reading http://cloudcontrol.com
Best match: cctrl 1.0.0
Downloading http://launchpad.net/cctrl/trunk/1.0.0/+download/cctrl-1.0.0.zip
Processing cctrl-1.0.0.zip
.
.
.
(省略)
Installed /Library/Python/2.6/site-packages/httplib2-0.6.0-py2.6.egg
Finished processing dependencies for cctrl

これでcloudControlの管理ツール一式がインストールされました。

sshで利用する公開鍵を登録しましょう。

$ cctrluser key.add ~/.ssh/id_rsa.pub
Email   : foobar@example.com
Password: 

メールアドレスとパスワードが聞かれるので、サインアップしたものを登録する。

デプロイの際にいちいちキーフレーズを入力するのが面倒なので、ssh-addに登録しておきましょう。

$ ssh-add

※再起動するとssh-addで保有している情報はクリアされるので、クライアントマシンを再起動して、次回以降にもう一度デプロイなどをする場合にssh-addするのを忘れないでくださいね。(もしくは都度、キーフレーズを入力してください。)

以上で、一通り準備は終了しました。

cloudControl ではcloudControl側にリポジトリがつくられるので、pushして、そこからデプロイという形を取ります。

  • ローカルにGitリポジトリを作成
  • symfonyをセットアップ
  • cloudControl側のリポジトリにpush
  • デプロイ

以上のようなことをやっていきます。

Gitでの説明が下記かかれているので参考にしてください。

symfonyのインストール

まずは symfony1.4 をセットアップします。

このあたりは書籍やフレームワークのドキュメントを参考にしてください。

$ mkdir -p lib/vendor
$ svn checkout http://svn.symfony-project.com/branches/1.4 ./lib/vendor/symfony
A    lib/vendor/symfony/test
A    lib/vendor/symfony/test/unit
A    lib/vendor/symfony/test/unit/sfContextMock.class.php
.
.
.
(省略)
$ php ./lib/vendor/symfony/data/bin/symfony generate:project ./
$ git init
Initialized empty Git repository in /Users/hirocaster/tmp/cloudControl/symfony/.git/
$ git add .
$ git commit -m "initial commit"

 これで、symfonyのフレームワークをローカルのgitリポジトリに登録した状態になりました。

cloudControlのアプリケーションを作成しましょう。この名前はサブドメインになります。

さらに、無料のMySQLアドオンを導入しておきましょう。

今回は symfony という名前のアプリケーションを登録します。

$ cctrlapp symfony create php
$ cctrlapp symfony/default addon.add mysql.free

導入したMySQLアドオンの設定情報を確認します。

$ cctrlapp symfony/default addon mysql.free
Addon                    : mysql.free
  
 Settings
   mysql_password           : bLHmyYaienIU9c7
   mysql_dbsize             : 5
   mysql_database           : depeodkt583
   mysql_hostname           : 127.0.0.1
   mysql_username           : deaheirq583

MySQLの設定をsymfonyのDB設定に書き出しましょう。

$ ./symfony configure:database "mysql:host=127.0.0.1;dbname=depeodkt583" depeodkt583 bLHmyYaienIU9c7

config/databases.yml というファイルに書き出されているはずです。

git のリポジトリに登録しておきましょう。

$ git add config/databases.yml
$ git commit -m "Added MySQL settings"

symfonyのアプリケーションを作成

frontend というsymfony上でのアプリケーションを生成しましょう。

$ ./symfony generate:app frontend

/app 以下にコードが自動生成されるはずです。一通り git のリポジトリに登録しておきましょう。

$ git add .
$ git commit -m "created app frontend"

 cloudControlの設定ファイル

cloudControl 向けの設定ファイルをリポジトリに登録する必要があります。

./.ccconfig.yaml

BaseConfig:
   WebContent: /web
   AdminEmail: foobar@example.com

/web ディレクトリ以下をドキュメントルートにするように設定ファイルには記述しています。

この設定ファイルも git リポジトリに登録しましょう。

$ git add .ccconfig.yaml
$ git commit -m "Added cloudControl Config File"

cloudControlのリポジトリにpush

ローカル環境の git リポジトリを cloudControl 側のリポジトリに push しましょう。

$ cctrlapp symfony/default push
ssh: Could not resolve hostname cloudcontrolled.com: nodename nor servname provided, or not known
fatal: The remote end hung up unexpectedly
Command '['/opt/local/bin/git', 'push', u'ssh://symfony@cloudcontrolled.com/repository.git', 'master']' returned non-zero exit status 128

おやっ。失敗してしまいました。名前解決がうまくいっていないようです。

$ nslookup cloudcontrolled.com
Non-authoritative answer:
Name:     cloudcontrolled.com
Address: 79.125.117.6
Name:     cloudcontrolled.com
Address: 79.125.117.4

のように、名前解決はできるので、sshの設定ファイルに記述してしまいました。

~/.ssh/config に以下の内容を追加します。

Host cloudcontrolled.com
     Hostname 79.125.117.6

再度、pushします。

$ cctrlapp symfony/default push
Counting objects: 7893, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7631/7631), done.
Writing objects: 100% (7893/7893), 6.05 MiB | 147 KiB/s, done.
Total 7893 (delta 2157), reused 0 (delta 0)
To ssh://symfony@cloudcontrolled.com/repository.git

成功しました。

この cloudControl側のリポジトリからデプロイはおこなわれます。

早速、デプロイをしてみましょう。

$  cctrlapp symfony/default deploy

ブラウザで、http://symfony.cloudcontrolled.com/ にアクセスできました。

http://symfony.cloudcontrolled.com/

無料でsymfonyが稼働させられる環境が整いましたね!

思う存分に symfony をいじり倒してください。

日本Symfonyユーザー会¥ 2,940

を参考にすれば、大規模サイトを堅牢に構築していくことも可能です。gitの使い方やTDDやデプロイ。プラグインの作り方にも触れています。

玄人なPHPerはSymfony2で一緒に遊びましょう。次回のSymfony2勉強会で情報共有したいですね。

追記(2011/03/29 19:56)

なんと、中の人から紹介に関する感謝のコメントを頂きました。そして、10€分無料になるVoucherコードを頂きました。

https://cloudcontrol.com/console/user/のBilling Accountsを追加してから、Vouchersに「Japanrocks」と入力するだけです。

ありがとう、中の人!!

タイトルとURLをコピーしました