LoginSignup
0
3

Laravelで本番環境にデプロイしつつ開発を進めていく方法

Posted at

Laravelのプロジェクトを作成

composer create-project laravel/laravel プロジェクト名

作ったディレクトリに移って、Laravel Breezeのインストール。

composer require laravel/breeze --dev
php artisan breeze:install

以下を尋ねられるので、bladeを選ぶ(お好み)。

  Which stack would you like to install?
  blade .......................................................................................................................................... 0  
  react .......................................................................................................................................... 1  
  vue ............................................................................................................................................ 2  
  api ............................................................................................................................................ 3  

ダークモードのサポートもお好みで。

  Would you like to install dark mode support? (yes/no) [no]

テスト環境もお好みで。

  Would you prefer Pest tests instead of PHPUnit? (yes/no) [no]

.envファイルを設定。

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=root
DB_PASSWORD=パスワード

migrateする。

php artisan migrate

DaisyUIのインストール(お好みで)

npm i daisyui

tailwind.config.jsのpluginsの行を以下のように書き換える。

tailwind.config.js
    plugins: [require('@tailwindcss/forms'), require("daisyui")],

これでDaisyUIのインストールは完了。welcome.blade.phpでDaisyUIを使えるようにするには

welcome.blade.php
        <!-- Scripts -->
        @vite(['resources/css/app.css', 'resources/js/app.js'])

をheadタグ内に追加。

ローカルで実行

ターミナルの一つで

php artisan serve

とする。また別のターミナルを開き、プロジェクトのディレクトリで

npm run dev

とする。http://127.0.0.1:8000/ にアクセスすると、以下のページが標示される。
image.png
右上にLoginとRegisterが出ていることを確認。RegisterしてLoginできるかも確認。

Githubで管理

Githubで新しいリポジトリを作成する。公開鍵・秘密鍵の設定は割愛。

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

Githubにpushされていることを確認。

virtualhostの設定

さくらのVPSでCentOSを使う想定で、さくらのドメインコントロールパネルに行き、このLaravelが動くサブドメインを設定する。
image.png
2行目はメールサーバを立てるときに、Gmailに届かないことがあるので付けたレコード(Gmailへのメール送信がエラーになって返ってくる現象でお困りのお客様へ)。メールサーバを立てる予定がないのなら書かなくていい。

このドメインをvirtualhostに記載する。

cd /etc/httpd/conf.d/

このディレクトリの中の、virtualhost.confに

virtualhost.conf
<VirtualHost *:80>
        DocumentRoot /var/www/プロジェクト名/public
        ServerName サブドメイン名.ドメイン名
        <Directory "/var/www/プロジェクト名">
                Options All
                AllowOverride All
                Require all granted
        </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =サブドメイン名.ドメイン名
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

を追加。

SSL対応するため、Let's encryptを設定する。詳しい設定方法ははじめてのVPS 初期セットアップ⑥ ~SSLの設定~
などを参照のこと。
コマンドラインから

certbot --apache -d サブドメイン名.ドメイン名

とすると、/etc/httpd/conf.d/virtualhost-le-ssl.confが作成される。
Apacheの再起動。

systemctl restart httpd

証明書の期限が切れる場合ははじめてのVPS 追記 ~ SSL(Let's Encrypt)の更新エラー ~
を参照。

本番環境にデプロイ

本番サーバにログインして、/var/wwwなどに移動してからリポジトリをクローンする。

cd /var/www/html
git clone git@github.com:アカウント名/リポジトリ名.git

composerやNode.jsのパッケージをインストール。

composer install
npm install

.envファイルを作成。

cp .env.example .env

APP_KEYを更新。

php artisan key:generate

.envファイルを変更。

.env(変更箇所のみ)
APP_NAME=APPの名前に変更
APP_ENV=production
APP_DEBUG=false
APP_URL=本番サーバのURL

DB_DATABASE=データベース名
DB_USERNAME=DBのユーザ名
DB_PASSWORD=パスワード

migrateする。

php artisan migrate

本番環境やけどええんか?と聞いてくるが、迷うことなくyesとする。

これで晴れてURLにアクセスすると
image.png
となる。なんでか調べるために、/var/log/httpd/error_logを見ると
PHP Fatal error: Uncaught ErrorException: file_put_contents(/var/www//storage/framework/views/6a3544652d045b8452130d69fdcbd731f05d6d37.php)
: Failed to open stream: Permission denied in /var/www/***/vendor/larav
el/framework/src/Illuminate/Filesystem/Filesystem.php:190
というエラーが出る。storageのパーミッションに問題があるようなので、

chmod -R 777 storage/

とした。しかし今度はServer Error。
image.png
storage/logs/laravel.logを見ると
Vite manifest not found at: /
var/www/radiology-db/public/build/manifest.json at /var/www//vendor/
laravel/framework/src/Illuminate/Foundation/Vite.php:684)

ぐぐったら、vite manifestがbuildされていないので、

npm run build

とすればよい。git pullしたときとかも、常にnpm run buildを1回走らせた方が良さそう。

0
3
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
0
3