日本Symfonyユーザー会¥ 2,940
|
先日発売されたsymfony本の執筆に携わらせて頂いたので、今回はPHPのPaaSホスティングサービスである cloudControl で、無料で symfony1.4 を稼働させます。きっと、cakePHPやCodeigniterも稼働させることができるのではないでしょうか。
cloudControlって?
1時間あたり1BoxというcloudControlで定義している独自の単位は無料で使えます。簡単に言うと、少ないアクセスのサイトだったら無料で使えます。それ以上のアクセスを提供するためにはunlockの手続き(有料)が別途必要です。
また、無料で提供しているアドオンが利用できます。その中にはMySQLがあるので、PHPとMySQLで稼働するフレームワークは大抵稼働するのではないでしょうか。
cloudControl で symfony1.4 を稼働させるところまで、解説することにします。
cloudControl のサインアップ
http://cloudcontrol.com/へアクセスして、“Sign-up now” ボタンをクリックしてください。
ユーザーネーム・パスワードとメールアドレスの入力
アクティベーションコードの入力
入力したメールアドレスに「cloudControl activation code」というタイトルでアクティベーションコードが送られてきます。そのアクティベーションコードを入力してください。
サインアップ終了
以上でサインアップは終了です。ログインできることを確かめておいてください。
管理ツールのインストール
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 : [email protected]
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: [email protected]
/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://[email protected]/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://[email protected]/repository.git
成功しました。
この cloudControl側のリポジトリからデプロイはおこなわれます。
早速、デプロイをしてみましょう。
$ cctrlapp symfony/default deploy
ブラウザで、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」と入力するだけです。
ありがとう、中の人!!