1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelプロジェクトをgit管理下に置くには

Last updated at Posted at 2020-12-20

筆者の環境では、Laravelアプリケーションの本番リリースフローは次の通りであった。

1. ローカル環境で、開発およびテスト
2. 本番環境にアップロード

自分ひとりで開発から運用まで担当しているので、これでもさして不都合が無かったわけだが、規模が大きくなったのを機に、次の通り改めることにした。

1. ローカル環境(新開発環境)で、開発
2. リモートリポジトリに push
3. ステージング環境で pull し、テスト
4. 本番環境で pull

Laravelプロジェクトファイル一式を git 管理下に移したので、手順を共有する。

移行手順

本番環境がもっとも信頼できそうだったので、まず本番環境内にローカルリポジトリを作成し、リモートリポジトリに最初のコミットをすることにした。

リモートリポジトリの作成

リモートリポジトリはどこに作っても良いが、本稿では GitHub に用意するものとして説明する。
リモートリポジトリ作成
この辺は特に解説不要かと思う。

本番環境のオペレーション

git のアップグレード

今の本番環境は CentOS 7.6 なので git のバージョンが古かった。

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ git version
git version 1.8.3.1

CentOS7 で git を 2系 にアップグレードする方法はいくつかあるようだ。
https://qiita.com/mao172/items/f8bb0a7c740f9cc931fb
https://qiita.com/d-dai/items/3cc0c8c81911d5b6cce5

自分は以下のように対応した。

IUSリポジトリを追加

$ yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

標準パッケージをより新しいバージョンで置き換え

$ yum shell
> erase git
> install git224
> run
$ git version
git version 2.24.3

git の初期設定

ユーザ名とメールアドレスを設定

git config --global user.name "[user name]"
git config --global user.email [email address]
git config --list

ssh鍵ペアの作成

GitHub は様々な認証方式に対応するが、パスワード認証は使うべきではない。
なお、2021年8月に GitHub はパスワード認証を廃止することが決まっている。*Gigazine

ssh-keygen -t rsa -b 4096 -C "[comment]"

秘密鍵(id_rsa)と公開鍵(id_rsa.pub)は~/.sshに作成される。

本稿では、リスクを承知で、秘密鍵をパスフレーズ保護しないことにする。
本来なら、パスフレーズ保護して ssh-agent に登録するのがセオリーである。
鍵生成時にデフォルト以外の鍵を指定した場合は ~/.ssh/config の作成も必要になる。

公開鍵(id_rsa.pub)を https://github.com/settings/keys に貼り付ける。
Title には、どのデバイスの鍵か分かる情報を入れると良いと思う。
sshkey

接続テスト

ssh -T git@github.com

失敗するときは-vvvオプション(verbose mode)を付けてトレースしてみる。

リモートリポジトリに push

Laravelプロジェクトのルートディレクトリで行う。

cd /var/www/html/[project name]
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:[account name]/[repository name].git
git push -u origin main

10月から既定のブランチ名が master から main に変わっているので留意。
この変更は、master/slave が奴隷制度を連想させることへの配慮だ。

git init からやり直したくなったり、取り消すときは、rm -fr .git としてしまって良い。

新開発環境のオペレーション

本番環境と同様に、ユーザ名とメールアドレスを設定する。
sshの鍵は、新規に作成するか、先ほどの鍵を使い回す。Windows10(OpenSSH)の場合、鍵は%USERPROFILE%\.sshに置く。

リモートリポジトリから git clone

Laravelのインストール先(通常はApacheのドキュメントルート)で行う。

cd /var/www/html
git clone git@github.com:[account name]/[repository name].git
cd [project name]

.gitignore に含まれている /vendor.env は展開されないので、自分で作成する。

/vendor (Laravel本体) の作成

composer install

でOK。composer.lockの内容をもとにパッケージのインストールを行うので、パッケージのバージョンはリモートと一致するはずだ。
composer.lockが無ければcomposer updateでも良いが、Updating dependencies (including require-dev)の表示後にフリーズする場合がある。原因は様々だが、筆者の環境ではcomposer self-updateでcomposer自身をアップデートするだけで上手くいった。

.env の作成

新開発環境用の .env を作成するか、以前の開発時に使っていた .env をコピーする。

動作確認

新開発環境でLaravelアプリが動作することを確認。

README.md の更新

必須では無いが、新開発環境からのコミットテストも兼ねて README を更新(新規作成)してみる。

Name, Overview, Author などを追記。
社内向けのドキュメントがあれば、そのリンクを Document に追記。なければ、Description, Requirement, Usage, Note, Deploy などを追記。

リモートリポジトリに push

これを「作業A」とする。

git add README.md
git commit -m "add README file"
git push

Visual Studio Code からなら下図のような操作になる。
vscode

本番環境のオペレーション

これを「作業B」とする。

cd /var/www/html/[project name]
git pull

本番リリース手順

新開発環境で「作業A」、ステージング環境と本番環境で「作業B」、これを繰り返すことになる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?