急須で入れたようななにか

記事サムネイル

さくらVPSのKusanagiでLaravelアプリを公開する手順【備忘録】

2021年6月14日

2 分くらいで読めます!

前提条件

実行日:2021年6月
環境:kusanagi(最新),Nginx,さくらVPS
Laravel:8.x
他:composerが使える、sudo実行権限がある、GitHubでコードを管理している

いちおう、yum updateで最新にしておく

sudo yum update

※あくまで備忘録です。丁寧な解説は期待しないでください。

プロビジョニングする

kusanagiだとめっっっっっっちゃ簡単
SSHでつなげて、

kusanagi provision --lamp 名前

あとは言われるがままに情報を入力。重要情報ばかりなので、メモを忘れずに。

コードをサーバーに送り込んで設定する

git cloneとDocumentRoot削除

できたディレクトリに移動して、

git clone リポジトリのリンク

リポジトリのリンクはGitHubより
privateのリポジトリだとパスワードなどを要求されます。(publicなリポジトリなら上のコマンドで終わり)

これでコードがサーバーに送られる
次にもともとあるDocumentRootのディレクトリを消す

rmdir DocumentRoot

Laravelの.envファイルを作る

cd クローンしたディレクトリ名

.env作成

クローンしたディレクトリに移動したあと、.env.exampleから.envを作成(コピー)

cp .env.example .env

次に

vim .env

で必要な情報を入力していく。
app_nameとかurlとか、DBの情報(プロビジョニングで設定したやつ)、他デバッグの無効化などを設定して保存

権限周り

ケースバーイケースだけど、おそらく最低限は下記コマンドでカバーできる

sudo chmod -R 777 ./storage/
sudo chmod -R 777 ./bootstrap/cache/
sudo chown -R httpd.www storage/
sudo chown -R httpd.www bootstrap/cache/

composer installする

おそらく多くの方はcomposerで生成されるファイルをgit管理していないと思われるので、composer installする

composer install

artisanとかも使えるようになるので

keyの生成

php artisan key:generate

これをした際に、「Aplication key set successfully」と出たら成功!

マイグレーションする

わりと緊張の瞬間です。

php artisan migrate

/envの設定、正しいコード、kusanagiが古くなければ、エラー無く終わるはずです。

Nginxの設定を書き換える

nginxの設定に下記コマンド移動しまして、

cd /etc/nginx/conf.d

プロビジョニングのときの名前.ssl.confみたいなやつ
プロビジョニングのときの名前.http.conf
をそれぞれvimで開いてrootを変える

root なんとかかんとか/DocumentRoot

root なんとかかんとか/cloneしたリポジトリの名前/public/

みたいな感じ。
Laravelのpublicがrootになるようにする。

Let's encrypt のrootも変える

これしないとSSL証明書が自動更新されず、悲しいことになります……

cd /etc/nginx/conf.d

プロビジョニングのときの名前.confみたいなやつ
をvimで開いてrootを変える

webroot_path= なんとかかんとか/DocumentRoot

 [[webroot_map]]

サイトドメイン=なんとかかんとか/DocumentRoot

webroot_path= なんとかかんとか/cloneしたリポジトリの名前/public/
 [[webroot_map]]

サイトドメイン=なんとかかんとか/cloneしたリポジトリの名前/public/

にして保存します。

再起動

すべて終わったら再起動

sudo kusanagi restart

これでアクセスしてみてください!!

コードを更新した時(GitHub)

コードを更新し、GitHubでmainブランチに上げたら、
サーバー上のgit cloneしたリポジトリで

git pull origin main

これでサーバー上にも反映できます。簡単。