CakePHP2.1ãgit pushä¸çºã§ãããã¤
ãã¯ããããã¤ã¯èªååããªããã°ã¾ããã¨ãããã¨ã§ãå
¨ã¦æã§æ¸ãæã+ftpã§ã¢ãããã¼ãç¶æ
ããgit pushä¸çºã§å®äºãããããã«ãã¾ããããã£ã¬ã¯ããªã®é
ç½®ãç°å¢ã¯åè¨äºæºæ ã§ãã
CakePHP2.1をさくらのレンタルサーバー+マルチドメイン使用でデプロイ
ãã£ããã¨
- ã»ã³ã¼ãã§ç°å¢ã®å·®åãå¸å
- ã»DBã®ãã¤ã°ã¬ã¼ã·ã§ã³
- ã»git push ãããã¯ã«ã¹ã¯ãªããå®è¡
åæ
Gitã§ã½ã¼ã¹ã®ãã¼ã¸ã§ã³ç®¡çããã¦ãã
ã³ã¼ãã§ç°å¢ã®å·®åãå¸å
éçºç°å¢ã¨æ¬çªç°å¢ã§è¨å®ãç°ãªãé¨åããå
¨ã¦ã³ã¼ãã§å¸åãã¾ãã
åã®å ´åæ¸ãæããã®ã¯ä»¥ä¸ã®4ãã¡ã¤ã«ã§ãã
åºæ¬æ¹éã¯ãIPãè¦ã¦å ´ååãã§ãã
bootstrapã«å®ç¾©ããURLå®æ°ã¨ãcoreã®debugè¨å®ããããªæãã§æ¸ãæã
databaseã¯ã³ã³ã¹ãã©ã¯ã¿ãå®ç¾©ãè¨å®ã®é å$devã¨$prodãä½ã£ã¦$defaultã«å²ãå½ã¦
if (env('SERVER_ADDR') !== '127.0.0.1') {
$this->default = $this->prod;
}else {
$this->default = $this->dev;
}
}
index㯠env('SERVER_ADDR') ã使ããã $_SERVER["REMOTE_ADDR"] ã使ã£ã¦ã«ã¼ããã³ã¢ã®ãã¹ãè¨å®
åä¸ã³ã¼ãã§æ£å¸¸ã«åä½ãããã¨ã確ããã¾ããCSSãç»åãã¹ã®è¨å®ãå¿ è¦ãªå ´åãããã¾ããåã¯bootstrapå ã§å®æ°ROOT_URLãASSETS_URLãåãæ¿ãã¦éç¨ãã¦ãã¾ãã
DBã®ãã¤ã°ã¬ã¼ã·ã§ã³
CakeDC / migrations
ãã¼ã¿ãã¼ã¹ã®ã¹ãã¼ãå¤æ´ãèªåã§åæ ãããããã«ãã¾ããã¹ãã¼ããã¡ã¤ã«(schema.php)ã¨ç¾å¨ã®ãã¼ã¿ãã¼ã¹ãæ¯è¼ããå·®åãåããä½ææå»ä»ã®ãã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãä½æãschema_migrationsãã¼ãã«ã§ãã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®é©ç¨ç¶æ³ã管çããæªé©ç¨ã®ãã®ãå®è¡ã¨ããæµãã¿ããã§ãã
ã¤ã³ã¹ãã¼ã«
ãã©ã°ã¤ã³ãã©ã«ãã«å±é
ãããã¤æã«ä¸ç·ã«æ¬çªãµã¼ãã¼ã«ãå ¥ãäºå®ã§ããããä»ã®ãªãã¸ããªã§ç®¡çããã¦ããã¡ã¤ã«ã¯èªåçã«ignoreããããã§ããâ¦åã¯.gitãã©ã«ããåé¤ãã¾ãããããã§pushæã«æ¬çªã«ãPluginãè¨ç½®ããã¾ãã
éçºç°å¢ã§ãã¤ã°ã¬ã¼ã·ã§ã³ã®æºå
ã¾ãã¯éçºç°å¢ã®ãã¼ã¿ãã¼ã¹ã¹ãã¼ããæ¬çªç°å¢ã§åç¾ãæ¢ã«æ¬çªã«ä½ã£ã¦ãã£ã¦ã大ä¸å¤«ã§ãã
#schema_migrationsテーブルを作成
$ cake Migrations.migration -p Migrations
#最初のマイグレーションファイルを作成
$ cake Migrations.migration generate
æ¬çªç°å¢ã§ã®ãã¤ã°ã¬ã¼ã·ã§ã³ã®å®è¡
éçºç°å¢ã§ä½æãããã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãæ¬çªã«è¨ç½®ããä¸ã§ã以ä¸ã®æé ãè¸ãã°æ¬çªç°å¢ã«ãã¼ã¿ãã¼ã¹ãåç¾ã§ãã¾ãã
#schema_migrationsテーブルを作成
% cake Migrations.migration -p Migrations
#未適用のマイグレーションファイルを実行
% cake Migrations.migration all
Migration: 1339467948_first_migration
Error: Table "areas" already exists in database.
---------------------------------------------------------------
Do you want to mark the migration as successful?. [y]es or [a]bort. (y/a)
ã¹ãã¼ãå¤æ´ã®æé
éçºç°å¢ã§ç¾å¨ã®ã¹ãã¼ããæºåâãã¼ãã«ãå¤æ´âãã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãä½æâã¹ãã¼ãã¨ãã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãæ¬çªã«pushâæ¬çªã§å®è¡ã®æµãã§ã
git push ãããã¯ã«ã¹ã¯ãªããå®è¡
大ã¾ãã«ã¯ãå¤æ´ãcommitâãªã¢ã¼ããªãã¸ããªã«pushâpushãããã¯ã«ã¹ã¯ãªãããå®è¡ããæ¬çªç°å¢ã«pull+追å å¦çã§ãããã¤å®äºã¨ããæµãã§ãã
ãããã¬ã³ã¿ã«ãµã¼ãã¼ã«gitãå°å ¥
#一時ディレクトリを作り移動
% mkdir /home/user/tmp
% cd /home/user/tmp
#wgetã§ã¢ã¼ã«ã¤ããæ¾ã£ã¦ãã
#アーカイブを解凍
% tar xvf git-git-v1.7.11-rc2-0-ga1a031d.tar.gz
% cd git-git-42e15c9
#gmakeでビルド
% gmake
% gmake install
#$HOME/binにインストールされ、$HOME/binがパスに追加されている
#.cshrcを読み込むと、gitコマンドが使える
% source /home/user/.cshrc
ãªã¢ã¼ããªãã¸ããªã®è¿½å
ã¾ãã¯æ¬çªãµã¼ãã¼ã«ãã°ã¤ã³ããªã¢ã¼ããªãã¸ããªãä½æ
#リポジトリ用のディレクトリ作成
% mkdir /home/user/repos/myapp.git
#bareリポジトリ(作業ディレクトリをもたないリポジトリ)作成
% cd myapp.git
% git init --bare
ç¶ãã¦éçºç°å¢ã®ãªãã¸ããªã«ä»ä½æãããªã¢ã¼ããªãã¸ããªãç»é²
#既存のリポジトリにリモートリポジトリとして登録
$ git remote add origin [email protected]:/home/user/repos/myapp.git
#pushで変更を反映
$ git push origin master
ããã¯ã¹ã¯ãªããã®ä½æ
gitã¯ãªãã¸ããªã¸ã®è¡åãããã¯ã«ã¹ã¯ãªãããå®è¡ããæ©è½ãæã£ã¦ãã¾ãã
.git/hookså
ã®ãã¡ã¤ã«ã«è¨è¼ãããã¡ã¤ã«åãã.sampleãåãé¤ãã°å®è¡ããã¾ããèªåã§ä½æããå ´åã¯ã¹ã¯ãªããã«å®è¡æ¨©éãä¸ããå¿
è¦ãããã¾ãã
ä»åã¯pushãããã¯ã«ãããã®ã§post-updateã使ç¨
#リモートリポジトリから本番環境への展開
(cd /home/user/myapp(app); git --git-dir=.git pull)
#webroot内のファイルの転送
(cp -r /home/user/myapp(app)/myapp(webroot)/* /home/user/www/myapp(webroot)/)
#マイグレーションの実行
(cd /home/user/myapp; cake Migrations.migration all)
ãªã¢ã¼ããªãã¸ããªããæ¬çªç°å¢ã¸ã®å±é
myappãã£ã¬ã¯ããªãç½®ãããå ´æã«ãå ã»ã©ã®ãªã¢ã¼ããªãã¸ããªããclone
ãã¨ã¯git pullã§ãã¡ã¤ã«ãå±éããã¾ããã·ã§ã«ã¹ã¯ãªããå ã§ã¯ --git-dir=.git ã¨æå®ããå¿ è¦ãããã¿ããã§ããwebrootå ã®ãã¡ã¤ã«ã転é
ä»åã®ãµã¼ãã¼ç°å¢ã§ã¯ãappã¨webrootã®ä½ç½®é¢ä¿ãå¤ãã£ã¦ãã¾ããå ã®ãªãã¸ããªã¨æ§é ãéãã®ã§ãpullããå¾app/webrootå ã®ãã¡ã¤ã«ãå ¬éãã©ã«ãä¸ã«ã³ãã¼ãããã¨ã«ãã¾ããã
ãã¤ã°ã¬ã¼ã·ã§ã³ã®å®è¡
æªå®è¡ã®ãã¤ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãããã°å®è¡ãã¦ããã¾ãã
æ¯ãè¿ãã¨çµæ§è²ã ãã£ããªã¨ãä»ã¯ããªããããã¯ãã«éä¸ãããã®ã§ããããããã¤èªååã®æ©æµã¯ç¸å½å¤§ããã®ã§ããã£ã¦ããã£ãã¨æãã¾ããä»åã¯ãµã¼ãã¼1å°ã®éç¨ã§æ©æµãå°ããã¨å¤æãã¾ããããæéãè¦ã¤ãã¦capistranoãåå¼·ãããã¨ããã§ãã