1. TOP
  2. web
  3. php
  4. laravel
  5. グローバルなHomesteadでLaravel環境構築

グローバルなHomesteadでLaravel環境構築

これは、最初のアプリ立ち上げの時に設定したアプリケーションキー(暗号キー)が、git clone した場合は引き継がれないため。

次にインストール後に行うべきなのは、アプリケーションキーにランダムな文字列を設定することです。ComposerかLaravelインストーラを使ってインストールしていれば、php artisan key:generateコマンドにより、既に設定されています。

Laravel 5.8 インストール > アプリケーションキー

git clone したLaravelプロジェクトの場合は、アプリケーションキーを新たに生成する必要がある。

$ php artisan key:generate
Application key set successfully.

キーの作成に成功。.env を見ると、APP_KEYに、新たにランダムな文字列が追記されている。

APP_KEY=base64:ryoNJuZHxxxxxxhmUamxxxxxxxxDb8HN1PHxxxxxEPc=

新しくキーを作り直したので、キャッシュを無効にする。

Laravelさんは、Apacheを再起動したとしても、内部のキャッシュが残っててしまって、更新したプログラムをうまく反映してくれない時がある。キャッシュクリア系の方法をまとめた。

Laravel キャッシュクリア系コマンドなど

これでOKやろ!と、再びwebサーバー起動させようとするが、

Illuminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 1 no such table: posts (SQL: select * from “posts” order by “created_at” desc)

「そんなテーブルない」と怒られた。マイグレーションしてデータベースを更新(というのか?)。

$ php artisan migrate

Migration table created successfully.
Migrating: 2020_01_21_222925_create_posts_table
Migrated: 2020_01_21_222925_create_posts_table (0.02 seconds)

マイグレーションした後は、ブラウザ表示に成功!!

補足 / –no-plugins オプション

git clone Laravelプロジェクトを展開した場合は、.env と Application key の作成、そして composer install が必要。

composer install した時に

[RuntimeException]
Could not delete /home/vagrant/code/techacademy_chatabout/vendor/kylekatarnls/upd
ate-helper/src/UpdateHelper:

というエラーが出た時は、オプションをつけて

$ composer install --no-plugins

とすれば成功した。

–no-plugins については、こちらの記事で納得。

rootユーザで実行すると中に入ってるexecとかinstallコマンドがrootで実行されてしまうからオススメしないよ!って話のようだ。

それらを防止するためにcomposer内の無関係なスクリプトを無効にする処理を入れておけばよいそうな。

composerのインストール

ディスク容量の問題は?

なお、起動中の仮想マシンは ~/VirtualBox VMs フォルダにある。

$ ls -la ~/VirtualBox\ VMs/
drwx------ 6 hideyo1 staff 192 3 2 14:19 MyCentOS_default_1582792352148_46988
drwx------ 7 hideyo1 staff 224 3 2 14:09 MyCentOS_dotLocalDevEnv_default_1566336063765_44428
drwx------ 6 hideyo1 staff 192 3 2 19:08 homestead

今回作成したHomestead仮想マシンの容量は4.6GB。

$ du -sh ~/VirtualBox\ VMs/homestead/
4.6G /Users/hideyo1/VirtualBox VMs/homestead/

Homesteadをプロジェクトごとにインストールするやり方では、「4.6 x プロジェクト数」GBという事で、あっと言う間にディスクいっぱいになってしまう。だから、Homesteadをグローバルにインストールして各プロジェクトで共有する今回のやり方がベターだろう。

ただし、不要な仮想マシンは vagrant destroy すれば ~/VirtualBox VMs フォルダから削除されてディスク容量は解放される。そして、再びその仮想マシンが必要になったら、vagrant up したら、2〜3分で構築される。

なので、各プロジェクトごとにインストールしたHomestead環境を残しておいてもディスクを圧迫することはない。

vagrantすごいな。

無駄なVagrant Box の整理については、こちらも参考にしました。