2021/12/11
多くの人はLaravelのプロジェクトをGitで管理していると思います。
僕もSourceTree(Gitを視覚的に操作ができるGUI)を使ってLaravelのソースコードを管理しています。
Gitを使ってソースコードを管理するのは大変便利なのですが、本番サーバへのデプロイ(反映)が面倒に感じます。
現在、僕がやっているデプロイのやり方は
1) ローカルで確認して問題なければSourceTreeでBitBucketサーバにプッシュ
2) FTPソフトを使って本番サーバにUP
今回はBitBucketサーバにプッシュしたら自動で本番サーバにデプロイする仕組みを構築します。
目標
BitBucketサーバにプッシュしたら自動的に個人サーバ(さくらレンタルサーバ)にデプロイされる。
前提条件
- BitBucketのアカウントは既に取得済み
- BitBucketのリポジトリがすでに作成されている
- 一回以上プッシュ済み
手順
【1】bitbucket-sync をダウンロード
【2】設定ファイル(config.php)の作成
【3】さくらサーバにアップロード
【4】動作確認
【5】bitbucketの管理画面でWebhooksの設定
【1】bitbucket-sync をダウンロード
Bitbucketを使ってFTPに自動でデプロイする方法としてはbitbucket-syncというのが有名です。
まずは下記から bitbucket-sync をダウンロードします。
https://github.com/alixandru/bitbucket-sync/
ダウンロードしたフォルダ名が長いので『bitbucket-sync』にリネームします。
※あとでフォルダごと本番サーバにUPして、動作確認でURLをたたくので短い名前にしたほうが便利なのです。
【2】config.phpの設定
config-sample.phpをconfig.phpにリネームして編集します。
// Bitbucketのアカウントを設定 'apiUser' => 'Bitubucketアカウント名', 'apiPassword' => 'Bitubucketログインパスワード' , // 認証の設定 'requireAuthentication' => true, //falseをtrueに変更 'deployAuthKey' => '', 'gatewayAuthKey' => 'hogehoge', //自由に入力(あとで使います) // リモートリポジトリの設定 $DEPLOY = array( 'リポジトリ名' => '{アカウント名}/home/{Laravelプロジェクト名}', );
Bitbucketのアカウント名はメールアドレスではありません。
登録時やURLに表示されているアカウント名です。
【3】さくらサーバにアップロード
設定が終わったらデプロイしたいサーバにフォルダごとアップロードします。
アップロード場所はドキュメントルートにアップします。
さくらレンタルサーバの場合は /home/{さくらのアカウント}/www になります。
【4】動作確認
bitbucket-syncをアップロードしたら下記のURLをたたきます。
http://{アカウント}.sakura.ne.jp/bitbucket-sync/deploy.php?setup={リポジトリ名}
成功すると以下のようなメッセージが流れます。
BitBucket Sync – Full Deploy ============================ Finished deploying リポジトリ名
【5】bitbucketの管理画面でWebhooksの設定
bitbucketにログインしてWebhooksにbitbucket-syncのURLを登録します。
これを行うことでプッシュ時に指定したURLにPOSTリクエストされるようになります。
Webhookとは?
リポジトリにプッシュしたときに指定したURLにPOSTリクエストする仕組みのことです。
以下のように順にクリックをしていきます。
1) 設定
2) webhooks
3) add webhook
webhookの設定では
- titleは何でもOK
- urlは動作確認で入力したURL( http://{アカウント}.sakura.ne.jp/bitbucket-sync/deploy.php?setup={リポジトリ名} ) を入力
これでsaveします。
次回からSourcetreeでbitbucketへプッシュすると、自動でさくらサーバに反映されるようになります。
多くの解説サイトではwebhooksのURLの項目には
http://{アカウント}sakura.ne.jp/bitbucket-sync/gateway.php?key=(config.phpで設定したパスワード)
を入力するように解説されています。しかし僕の場合これでは上手くいきませんでした。正当なやり方ではないと思いますのであしからず。
以上です。
Udemyを使ったLaravel学習方法
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。