Laravel9の本番サーバーとローカルサーバーをgitで管理

なんかgitでpushとかpullとかで管理。
今までgitがややこしくて逃げてましたが、今のうちに。
参考サイト:https://qiita.com/mindwood/items/d3e73d6a7368e31abc1a

とりあえず、githubに適当なリポジトリ作ります。
なお、リポジトリ作成時に「Add .gitignore」はnoneのまま触らない方がいいです。多分。
僕は選択肢に「Laravel」があったので選んでしまいました。

githubと本番・ローカルを連携させる。

いきなり、本番のgitが古いみたい (v1.8.3) 。
バージョン2系にアップグレード。

参考サイト:https://qiita.com/d-dai/items/3cc0c8c81911d5b6cce5

$ yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#古いgitを削除
$ yum erase perl-Git
#listでチェックして新しいgitをインスコ
$ yum list git* //ココで新しいバージョンのgitを探す感じ
$ yum install git236 //上で見つけたgit236を指定
#バージョン確認
$ git version
git version 2.36.1

はれてgit2系になりました!
gitのユーザー登録します。

$ git config --global user.name "★★★"
$ git config --global user.email "★★★"
# 秘密鍵作って
$ ssh-keygen -t rsa -b 4096
# 作った公開鍵をgithubのアカウントに登録。
# その後接続テスト。
$ ssh -T git@github.com
Hi ★★★! You've successfully authenticated, but GitHub does not provide shell access.

Laravelプロジェクトをgit管理に

まずLaravelプロジェクトの生成。
本番サーバーのPHPを8にしたからLaravel9でも問題ない。
まずはローカルでLaravelプロジェクトを用意。
あ、ローカルでも必要ならgitのバージョンアップやユーザー登録はやってね!

$ composer create-project laravel/laravel appname

参考サイトに書いてるままコマンドを実行。
gitignoreとか調べてみたけど、そのままで良さそうね。

$ cd appname
$ git init
$ git add .
$ git commit -m "first commit"
$ git branch -M main
$ git remote add origin git@github.com:アカウント名/リポジトリ名.git
$ git push -u origin main
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'git@github.com:アカウント名/リポジトリ名.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

エラー。
あれ?
これなんですが、最初の方にも書いたけど、githubでのリポジトリ作成時に 「Add .gitignore」とあったので素直に「Laravel」と選択しちゃったミスが原因っぽいです。
github上でリポジトリを見ると、Initial commitとか言いながら.gitignoreがある。
多分だけど、githubのリポジトリに作られた「.gitignore」とLaravelさんが最初から用意してくれてる「.gitignore」が衝突してるっぽいです。

$ git push -f -u origin main

.gitignoreくらいええやろ。
そんなノリで強制的に上書きしてやります。
これでローカルからgithubへソースコードが行きました。

本番サーバーでpullしてgithubからソースを取り込んで公開

知ってる。
テスト用にステージング環境とかいうの用意する方がいいんでしょ?
でも、いきなり全部を一気にやれないので簡易的だけど許して。

$ cd 作業ディレクトリ
$ git clone git@github.com:アカウント名/リポジトリ名.git
$ cd リポジトリ名
$ composer install
.envのAPP_DEBUGとAPP_ENVだけ修正。
$ vi .env
APP_ENV=production
APP_DEBUG=false

/vendore/はgit管理の対象外になっている(デフォルトの.gitignoreで)ので、composer installでvendore内を生成。
これ、/vendoreに変更があったら毎回installするのかな?updateするのかな?よく分からん。
あと、ENVとDEBUGの変更は必要よね?
DBとか使うようになったらその都度、.envに修正していく感じかな。

あとはドメイン割り当ててサーバーとかを調整してブラウザでアクセス!
500エラー\(^o^)/
適当にphpinfo()するだけのファイルをおいてみたら正常に表示されたので、サーバーの設定とかじゃなくLaravelさんっすね。
nginxさんのエラーログもあった。
storageさんのパーミッションかよ。

$ chmod -R 0766 ./storage

再度ブラウザからアクセス。
エラー。
2022/08/29 16:04:44 [error] 28384#28384: *26 FastCGI sent in stderr: “PHP message: PHP Fatal error: Uncaught InvalidArgumentException: Please provide a valid cache path. in /home/ ~path~/vendor/laravel/framework/src/Illuminate/View/Compilers/Compiler.php:36
あれ?まだパーミッションに問題ありそう?

$ chmod -R 0777 ./storage

これでwelcomeが正常に表示されました。
しかし…storageって0766じゃ駄目なの?ログ置き場とかって0666ってイメージだったんだけどなぁ。

雑感

これで、開発環境からpushして、本番でpullして反映って流れが出来ました。
本番では、release毎にディレクトリ用意して切り替えとか、アップロードされたファイルやログ等のgit管理範囲の調整とか色々あるんでしょうけどね。
うん、散見した例を羅列してみました。
まぁ、やりたい事が一通り出来たって事が一番大事!

/home/hoge/
    └release/
      ├ver1.0
      └ver1.1
※こんな感じでstorageとかpublicをシンボリックリンクで入れ替える感じが、コスパ的にもベターっぽいすね

あとはローカルでチョコチョコと変更を加えて本番に反映させたり試していきたいと思います!

コメント

タイトルとURLをコピーしました