ロリポップのサーバでbitbucket-syncを使用して自動デプロイの環境を構築する
wordpressのプログラムを修正する場合に、ローカルで修正して、scpでサーバにファイルをコピーして、公開ディレクトリにコピーして・・・とだいぶ手間がかかってしまっていたので、自動デプロイできる環境をbitbucket-syncを使って構築することにしました。
ゴールは、リポジトリにpushしたら本番まで反映されるという環境を作ることです。
では、いきます。
環境
- サーバ:ロリポップ
- 使用PC:Mac
- プログラム管理:Bitbucket
事前準備
Bitbucketのアカウントとデプロイするリポジトリの作成
設定方法
1.bitbucket-syncをダウンロードする
「bitbucket-sync」をダウンロードします。 リポジトリをcloneしてもいいし、zipでダウンロードしてもいいし、どっちでも大丈夫です。
2.サーバにbitbucket-syncをアップロードする
macのターミナルからscpでレンタルサーバにコピーします。
$ scp -r -P ポート番号 bitbucket-sync/ アカウント名@ホスト名:~/
コピー先は公開ディレクトリ配下にしてください。 公開ディレクトリはhttpでアクセスできる領域です。
bitbucket-syncはリネームして、bitbucketという名前に変えまし
$ mv bitbucket-sync bitbucket
3.config.phpを作成する
config.sample.phpというサンプルプログラムがあるので、コピーしてconfig.phpというファイルを作成します。
$ cp config.sample.php config.php
サンプルを参考に、自分の環境の設定に変更していきます。
■ Bitbucket周りの設定
/** * The default branch to use for getting the changed files, if no specific * per-project branch was configured below. */ 'deployBranch' => 'master', // デプロイするブランチ名 /** The ID of an user with read access to project files */ 'apiUser' => '', // Bitbucketのアカウント名 /** The password of {apiUser} account */ 'apiPassword' => '', // Bitbucketのパスワード
■デプロイの認証設定
* 'gatewayAuthKey' is typically used by the Post Service Hook. * Example: http://example.com/bitbucket-sync/gateway.php?key=value * */ 'requireAuthentication' => false, // trueに変更 'deployAuthKey' => '', 'gatewayAuthKey' => '', // 適当な文字列に変更。後のデプロイで必要になります。 );
■デプロイ先の設定
$DEPLOY = array( 'my-project-name' => '/home/www/site/', // 'リポジトリ名' => 'デプロイ先のパス' );
config.phpの変更が終わったら、問題無く設定ができているかを確認します。
確認方法は、「http://自分のサイトのドメイン/bitbucket/gateway.php?test」をブラウザからアクセスします。
サーバ上の/公開ディレクトリ/bitbucket/commits配下に何も吐かれなかったらokです。
4.Bitbucketにbitbucket-syncを設定する
ここ、だいぶつまりました。
ネットにある多くの情報では、Webhooksに設定しましょう、って書いてあるんですが、うまくいかなくって。
エラーも出ず、ステータスも正常に終わっているんですが、サーバにデプロイされず。
いろいろ試してみたのですが、Servicesに設定したらデプロイできました。
左下部の「設定」から、統合の「Services」を選択します。
プルダウンからPOSTを選んで、「Add Service」をクリックするとURLの記入欄が表示されます。
「http://自分のサイトのドメイン/bitbucket/gateway.php?key=config.phpで指定した適当な文字列」をいれて追加すれば完了です。
画面上部に、webhook使ってね!とメッセージが出ていますがスルーします。
試しに適当にリポジトリにファイルをcommitして、pushしてみると、config.phpで設定したディレクトリ配下にファイルがデプロイされているはずです。
さいごに
プログラムのデプロイにかかっていた手間が、90%ぐらい削減されました。 ここ直したいなーと思ったときに、さくっとプログラムを修正してデプロイまでできる環境は、やっぱり重要です。
最初にデプロイを試す時は、テスト用のディレクトリを作成して、そこでテストすることをオススメします。 最終的にデプロイする前にも、バックアップをとっておくと安心だと思います。