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

laravel

Posted by dog-ears