tracとhg&bzrを dotcloud で動かす!
tags: | web, trac, cloud |
---|---|
created: | 2011-05-17T22:00:00 |
あらかじめ必要なもの
dotcloudのinviteをもらうこと
コードチェックアウト
> mkdir -p working/folder
> cd working/folder
> hg clone http://python.matrix.dotcloud.com/hg/trac-on-dotcloud
> cd trac-on-dotcloud
必要なパッケージのインストール ローカルテストしないならdotcloudモジュールインストールだけでもいいです。
> apt-get install python-pip # for ubunutu
> cd code
> pip install dotcloud
> pip install -r requirements.txt
注釈
環境によってはsudoなどを用いて管理者権限に昇格する必要があります。
ローカルテスト
> cd trac-on-dotcloud/code
> python install.py # onece only!
Add AdminUser :
username:admin
password:********
admin add successfuly!
> python wsgi.py
デプロイ手順
> dotcloud create NAME_SPACE # onece only!
> dotcloud deploy NAME_SPACE.APP_NAME -t python # onece only!
> dotcloud push NAME_SPACE.APP_NAME .
> dotcloud ssh NAME_SPACE.APP_NAME
# $SHELL
dotcloud@NAME_SPACE-APP_NAME:~$ cd code
dotcloud@NAME_SPACE-APP_NAME:~/code$ ./install.py # onece only!
Add AdminUser :
username:admin
password:********
admin add successfuly!
dotcloud@NAME_SPACE-APP_NAME:~/code$ exit
Connection to APP_NAME.NAME_SPACE.dotcloud.com closed.
> dotcloud restart APP_NAME.NAME_SPACE
dotcloudについて
「requirements.txt」にPyPIにあるモジュール名を列挙すれば、 リモート上でインストールされる仕組み。
リモートでのファイルフォルダ構成は以下の通り。 dataフォルダはinstall.pyによって作られるフォルダです。 それ以外は自動的に管理されているフォルダで変更はできません。 また、codeフォルダの中身は「dotcloud push ...」するたびに 一切合切ローカルと同期してしまいますので、push操作でも消えない データはcodeではないフォルダに残す必要があります。
- /home
- dotcloud
- code(pushによるファイル群)
- data(install.pyによって作成)
- default(tracプロジェクト)
- repos(bzrリポジトリフォルダ)
- default(デフォルトリポジトリ)
- env(Pythonのvirtualenvフォルダ)
- bin(Pythonランタイム)
- lib
- site-packages(追加モジュール群)
- dotcloud
いろいろやってて気づいたこと:
- POSTのサイズ限界がある(1〜3MB程度)
- 「/home/dotcloud/タイムスタンプ」フォルダがpushフォルダの実体
- sshのpub-keyで認証というのは止めたらしい。(pub-key登録が不要に)
- 6インスタンスまで動いているのを確認。(上限あるのかな?)
loggerheadについて
bzrのリポジトリサーバにはloggerheadを利用しています。 loggerheadはWebでリポジトリチェンジログを閲覧できる上にhttp経由での プッシュまたはプル操作を可能にするサーバとして動作します。
ユーザー毎にプッシュまたはプルの権限管理をする方法が見当たらず、 やむなく「ホスト/bzr/」はプルのみ許可、 「ホスト/bzr-rw/」でプルまたはプッシュを許可しておき、 後者はHTTPダイジェスト認証をかけてあります。
loggerheadはPasteサーバとSimpleTALで作られています。
Trac0.12について
0.12からはひとつのTracプロジェクトに対し 複数のリポジトリ を管理できるようになりました。
複数プロジェクトにしちゃうと管理が大変! 今回はシングルプロジェクトになるように設定しています。
Tracと他のリポジトリ
mercurialとの連携も可能なので「ホスト/hg/」のwsgiアプリを追加も可能かと。 dotcloudはデフォでmercurialがインストールされているっぽいので、 TracMercurialプラグインを追加すればいいですね!
bzrについて
- Emptyフォルダも管理しちゃいますよ!
- 内部ユニコード保存なので多国籍なファイル名やテキストを扱えるよ!
- Pure python環境でも動く(C-コンパイラなしで動く)
- loggerheadとはhttpで対話するよ!