この記事は古くなっています。最新の情報はこちらの記事をご覧ください。
WerckerでSSHキーを使ってrsyncでVPSにデプロイする
前回記事
JekyllをBitbucketからwercker通してさくらVPSにビルドする(前編)
構成
JekyllのソースをPushするとBitbucket経由でwerckerでbuildが走り、問題なければVPSにデプロイ、という形です。
##前提
- Bitbucketを利用していて、既にjekyllのレポジトリがある
- さくらインターネットのVPSを既に契約してあり、運用している
- Bitbucketにpushするとwerckerでbuildが動くようになっている
3ができていない人は前回の記事「JekyllをBitbucketからwercker通してさくらVPSにビルドする(前編)」をご参照ください。 今回はweckerからさくらVPSにdeployするところを紹介します。
全体の流れ
wercker側の設定
- VPSへログインするための認証鍵の作成
- 認証鍵をdeployで利用するための設定
- deployする対象となるブランチを設定
さくらVPS側の設定
- deploy用ユーザーの作成
- werckerで生成した公開鍵の登録
wercker.ymlの設定
- wercker.ymlにdeployの設定を記述
wercker側の設定
MyAppsからアプリケーションを選択。
settingsを選択。
Deploy targetsをCustom deployに変更
Deploy target nameはご随意に(私はSAKURA
にしました)。
あとオートでデプロイするブランチを指定してください(master
でいいと思います)。
引き続きさくらのVPSにログインするための鍵を生成します。
少し下にスクロールしてSSH keys
のところで
Generate new key pair
を押してください。
出来上がった鍵(公開鍵)をテキストに保存しておきます(あとで使います)
最後に生成した鍵を後ほど修正するwercker.yml内で使用する設定をします。
ENVIRONMENT VARIABLE
のところは随意に設定できますが、
SAKURA_KEY
とでもしてOK
を押してくださいです。
で、更にその下のsave
まで押して完了です。
これでwerckerの設定は完了。
さくらVPS側の設定
続いてVPSの設定です。
# rootに
$ su -
# deploy用ユーザー`wercker`の作成(名前はwercker出なくても可能)。
$ adduser wercker
$ su - wercker
# 先ほどwercker内で生成した公開鍵の登録
$ cd ~/
$ mkdir .ssh
$ vim .ssh/authorized_keys
# ↑werckerで生成した認証鍵の公開鍵をペースト
$ chmod -R 700 .ssh
$ chmod 644 .ssh/authorized_keys
パーミッションの設定は必須です。 VPS側の設定は以上です。
wercker.ymlの編集
私の作ったwercker.ymlをベースにコメントで解説します。
box: wercker/ruby
# Build definition
build:
steps:
- bundle-install
- script:
name: generate site
code: bundle exec jekyll build --trace
# ここまでは前回のポストで説明
# 今回は以下のデプロイの定義をします
deploy:
steps:
- add-to-known_hosts:
# 下のhostnameはご自身が契約されているVPSのドメインかIPを入力
# ex.) hostname: www9999ue.sakura.ne.jp
hostname: xxxxxxxxxxxxxxx
- mktemp:
envvar: PRIVATEKEY_PATH
- create-file:
name: write key
filename: $PRIVATEKEY_PATH
# 下のcontentでは、先ほどENVIRONMENT VARIABLEで設定して変数を使用
# (_PRIVATEを付けるのは鍵として利用する場合のみです)
content: $SAKURA_KEY_PRIVATE
overwrite: true
hide-from-log: true
- script:
name: transfer application
code: |
pwd
ls -la
# rsyncの設定
# scpでも構いません。
rsync -avzr -e "ssh -i $PRIVATEKEY_PATH -o StrictHostKeyChecking=no -o UserKnownHostsFile=no" $WERCKER_ROOT/_site/* wercker@xxxxxxxxxxxxxxx:/var/www/wwld.jp/
VPSのポート番号を変えている場合は、sshコマンドの記述で-p ポート番号
を追記してください。
masterでpush
以上の設定を終えたらmasterブランチでpushしてみてください。werckerの管理画面でdeployまで走るのが確認できると思います。
もちろんですが、deployされるのはwercker内でbuildされて生成された_site以下のファイルです。
参考
http://blog.wercker.com/2013/08/22/Simplifying-ssh-based-deployment.html http://devcenter.wercker.com/articles/introduction/pipeline.html#deploys http://devcenter.wercker.com/articles/steps/