デプロイツールソリューション検討
Mina Rocketeer Capistrano Fabric Cinnamon
Webistrano
今回はGUIを使うことが前提だったので他のモノの方がPHPには向いていそうだったがCapistranoを使ってみる
導入メモ
gitでレポジトリ管理
サブディレクトリでデプロイする方法もありそうなので、ひとまずルートでgit initしておく
capistranoインストール
capistranoは割とすぐ入った。
gem install capistrano
webistranoインストール
少しややこしくてちょっと手間取る
rubyのバージョン周りの注意点はyum任せだったので元から0.8.7とかだったので苦労せずスルー。
yum install make gcc-c++ curl-devel openssl-devel zlib-devel httpd httpd-devel ruby-devel rubygems mod_ssl
// MySQLログインしてdatabase追加
create database webistrano_development;
create database webistrano_test;
create database webistrano_production;
// maigrate
RAILS_ENV=development bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake db:migrate
基本は下記を参考
http://www.maepachi.com/blog/entry/120
apacheで動かすのでdeployerは作らなかった
passengerを使ってapacheユーザーでプロセスを起動しているので権限周りがまだ制限された状態
権限周りは今後検討、ひとまずはapacheユーザーで出来る範囲でいい
webistrano設定
デフォルトがsubversionの設定になっていてちょっと手間取る
迷ったのは、repositoryの指定をローカルのURIにすること
repository:file:///path/.git
sshの秘密鍵指定(ローカルに接続して検証)
ssh_keys:hoge
あとは実行ユーザーがapacheで出来ないことある。
サーバーの再起動とかいろいろ権限が足りない。
sudoの設定もしたくないし、、apacheで動かすのやめるかも。
passengerの設定でクリアできるのかも知れないけどひとまず保留。
(->権限あるユーザーでsshでログインすればできた、、use_sudoとrunnerでremoteのユーザーを帰れるけど、、ファイル権限はrecipes実行で変えればいいのかな。)
インストール後
currentの下にsimlinkで反映する仕組みだとインストールしてから気づいた。
(simlink少し不安。Rocketeerもsimlinkでリリースを切り替えるみたい。大本のディレクトリ構成もcurrentとかでそろえるかなあ。)
あとgitにpush,pullみたいな感じじゃ無くて別管理なのね。これはメリットとデメリットがありそう。
(releaseを指定してロールバックとかはrecipeを使えば出来るのかな。)
もうすこし使ってみて考える。
ec-cubeのテンプレだけデプロイとかしたいんだけどうまく出来るかとか。
公開鍵暗号にしたらエラーが出た
Net::SSH::AuthenticationFailed
・今回は「解決法1: net-sshのバージョンを2.7.0に固定する」で対応。
equire 'rubygems'
require 'net/ssh'
Net::SSH.start("example.ppp", "hohoho", :keys => ['/foo/hoge.key'], :verbose => :debug) {|x| p x }
>テストスクリプトは大丈夫だったけど、だめでした。
・ssh_configに追加
RSAAuthentication yes
PubkeyAuthentication yes
>だめでした。
・結局
鍵ファイルの権限がapacheでwebistrano側のユーザーを別の一般ユーザーに変更したのが原因っぽい。
上記のtest.rbをそれらのユーザーでsudoしてみて検証したら分かった。
ほか参考
Net::SSH::AuthenticationFailed 鍵 - Google 検索
http://goo.gl/nDMTpE
chef soloでAuthenticationFailedといわれたときの対応
http://goo.gl/QlMNqx
capistrano3 sshの設定で躓く. - Qiita
http://goo.gl/bP1WSx
メモ
ロールをwebにしているとdeploy:web:disableとかできる
recipesはひとまずは簡単に作れそうなので便利につかえそう
deploy:rollbackはdeployしたreleaseを戻すとは限らない、setupとかの分を戻すかも??ので注意。
参考
git
http://nob-log.info/2013/03/18/ec-cube-git-guide/
Capistranoインストール
$ sudo gem install capistrano
(http://d.hatena.ne.jp/yamada6789/20110108/1294450383)
Webistranoインストール
http://hiro1986.hateblo.jp/entry/2013/12/10/143700
http://www.maepachi.com/blog/entry/120
サブディレクトリのみ処理
http://tesiri.hateblo.jp/entry/2013/11/29/180241