プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【Laravel】アプリケーション構成が意味不明なときのTips

  • 2018年9月1日
  • 2018年9月8日
  • PHP
  • 39view
  • 0件
PHP

Laravelでの開発案件に参加して環境構築をしていく際にどんなコマンドを打ってどこの設定を書き換えて~というTipsです。

Laravel自体の環境構築については以下記事で解説しています。
Ubuntu16.4にPHP7.2を入れ、Laravelをインストールするまでの手順

環境変数の設定

Laravelのアプリケーションのディレクトリ構成は、どんなプロジェクトでも当然だいたい同じようになっています。
ディレクトリ構成については以下の記事が参考になります。
https://qiita.com/shosho/items/93cbff79376c41c3a30b

しかし、Gitで管理しているソースをクローンしてきた場合には、Laravel new ~で新規にアプリケーションを作ったときと違い、足りないディレクトリやファイルがあるはずです。Git管理に含んでいないディレクトリやファイルというのは個々で設定する必要があるファイルということなので、まずは環境変数等のファイルを作るところから始めます。それが具体的にいうところのvenderディレクトリと.envファイルです。

venderディレクトリの作成

プロジェクトがあるディレクトリ配下で以下コマンドを実行することでvenderディレクトリが出来上がります。

composer install

.envファイルの作成

.env.exampleがあるかと思いますので、.envにリネームし、ファイルの中身を適した内容に変更します。
DBを外部サーバーに繋げる必要があるときはDB_HOSTに外部サーバーを指定し、ユーザー名パスワード等を指定します。

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525

MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

.envファイルで正しくDB設定しているのに接続できないというときは、設定元のconfig > database.phpをみてみるといいかもしれません。database.phpでenvファイルから設定を読まずに直接定義している場合には当然この.envの設定が読み込まれないので。

envファイルのappkeyの初期化を行うために、以下コマンドを実行

php artisan key:generate

DBの設定

migrate

DBは外部サーバーを参照するといった場合には不要ですが、DB構成もローカルに作るという場合には、使用するDBのインストールから始めます。
次にdatabase > migrarionsディレクトリを見に行き、migrationファイルがずらっと並んでいるようであれば、以下のコマンドでテーブルを一発で作ります。

php artisan migrate

seed

次にdatabase > seedsを見に行き、ここにもずらっとファイルがあるとすれば、テストデータも取得することができるので、以下コマンドを実行します

php artisan db:seed

パッケージの設定

前項まで書いた内容はだいたいほとんどのプロジェクトでやる必要がありそうです。
この先はそれでも動かない、なんかライブラリ足りてないんじゃないの?といったときに参考になるかもしれません。

特にVue.jsを使っている場合は以下からの作業も必要です。

package.json

必要なパッケージなどが管理されているpackage.jsonを見てみましょう。これを動かすためにはまずnode.jsとnpmが必要になってくるので、以下コマンドで確認。

node -v
npm -v

インストールされていない場合にはまずインストールしておきます。
説明が参考になったURLを以下に記載しておきます。
https://ferret-plus.com/6104
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea

node.jsとnpm本体のインストールが終わったら、packege.jspnで管理されたパッケージをインストールするために以下コマンドを実行します。

npm install

エラーがなく通ればオッケーですが、WARNが気になったので解消します

ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed

ajv@^6.0.0のピアが必要だから自分でインストールしろとのこと

npm install ajv@^6.0.0

package.jsonに記載されているlaravel-mixを使用することで、scssファイルをコンパイルしてpublic/cssに配置するということをしてくれます。さらに、Vueで書かれたjsもコンパイルしてpublic配下に配置してくれます。
buildは以下のコマンド

npm run dev

開発時は以下のようにすることで変更があると自動でbuildしてくれる

npm run watch

npm run hotでも良いと書いてあった。(試していない)

npm run watchでファイル更新時にうまくbuildが走らないときは以下を試してみる

npm run watch-poll

laravel-mixの処理の内容が書いてあるのはwebpack.mix.jsの以下の箇所です。

mix.js('resources/assets/js/app.js', 'public/js')
    .extract(['vue']);
mix.sass('resources/assets/sass/app.scss', 'public/css');

この辺りは公式にもきちんと書いてあります。
https://readouble.com/laravel/5.5/ja/frontend.html