laravel 開発日記 第3回 ~ Gitの設定 ~
今回はgitの設定 複数人数で作業するためではなく、 更新の履歴をとりたいだけなので、シンプルに構成します。
(参考)
■Gitでサイトを更新したい!
http://qiita.com/dojineko/items/b11d279d1ff8cfacf3dc
なお、前提としてヘテムルでは、 サーバーにgitがインストール済みです。
【ディレクトリ設計】
最終的に以下の想定で進めます。
Project
┃ ┣laravel_staging/(ステージング)
┃ ┣laravel_live/(本番環境)
┃ ┗repos.git/(管理用リポジトリフォルダ)
更新作業手順は、以下の通り。
・laravel_stagingを更新
↓
・ステージングでテスト。問題無ければreposにpush
↓
・自動的にlaravel_liveに反映される
では、設定を開始します。
(1)project直下のlaravelフォルダをlaravel_stagingにリネームする (2)laravel_stagingフォルダのgitリポジトリ化
laravel_stagingフォルダに移動後、以下を実行
git init git add . git commit -m '1st commit'
(3)repos.git 空リポジトリフォルダの作成
project直下にrepos.gitを作り、そこに移動後、以下実行
git init --bare --shared
(4)laravel_stagingからrepos.gitにpush
laravel_stagingに移動後、以下を実行
git remote add origin (中略)/project/repos.git git push origin master:master
(5)laravel_liveの作成・gitリポジトリ化
project直下に移動後、以下実行
git clone repos.git laravel_live
これで、laravel_liveにもlaravelのファイルが来ました。
ただし、.envと/vendorは、.gitignoreに記載されているため、 アップされず、結果laravel_live/publicを公開してもエラーが表示されます。
(6).envと/vendorのアップ
.envは、普通にlaravel_stagingからコピーします。
/vendorについては、 laravel_liveフォルダに移動後
composer install
で、作成されます。
【雑感】
/vendorを.gitignoreに入れる意味がいまいちよくわからないです。 なんでも、composer側で管理するファイルだからってことらしいですが。 あと、composer installではなく、composer updateと書いてるところもあるみたいですが、それだと、最新版がインストールされてしまい、ステージングとずれる可能性があるため、installのほうが好ましいそうです。
(7)各種設定ファイルの設定
■LARAVEL 5 のインストール(ララ帳)
https://laravel10.wordpress.com/2015/02/13/laravel%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/#more-13
ララ帳さんのやり方にならいました。 ちなみに、liveとstagingでデータベースは分けています。 .envはliveとstagingをそれぞれ設定。 それ以外は、stagingだけ修正すればOKです。 (後程、Gitでpushするため)
ただし、config/app.php内の以下記述は、 stagingとliveで違うので、修正。
'url' => 'http://localhost/', ↓ 'url' => env('APP_URL'),
.envファイルに
APP_URL=http://~/
と、staging、liveそれぞれのアドレスを記述しました。
(8)Git自動デプロイ設定
repos.git/hooks/post-receiveをアップ。
アップ後、実行権限を付与。 内容は、以下の通り。
# 本番環境 cd ~/(中略)/project/laravel_live git --git-dir=.git fetch origin git --git-dir=.git merge origin/master
最初、git pullで引っ張ってましたが、 ヘテムルサーバーだと以下と同じエラーが出るようでした。
■hetemlに設置したGitがResource temporarily unavailableでプロセスが死ぬ。
http://qiita.com/GENYA/items/fbbef096f19f0a1819be
私の場合、sshを接続しなおしても動かず、 pullから、fetch & mergeにしたところ、エラーが出なくなりました。 最後に、デプロイコマンドのエイリアスを作ります。 /laravel_staging/.git/config に、以下を追加
[alias] allset = !git add . && git commit -m "allup" allup = !git push origin master:master
・commitコメントを毎回同じは本来NGだが、気にしない。
・add,commit,pushを全部まとめたら、エラーが出たので分けてます。
これで一通り設定終了です。 laravel_stagingフォルダに移動して、
git allset git allup
で、本番にデプロイされます。 思いのほか、長くなりましたが、これでgit設定完了です。 お疲れ様でした。
次回は、 マイグレーションおよびユーザーテーブルに「権限(level)」カラムを追加して、基本ユーザー3名をシーディング登録する予定です。
Discussion
New Comments
No comments yet. Be the first one!