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名をシーディング登録する予定です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする