KoudouBlogs

元警察官 / 現ITエンジニア 宅トレ発信

『Laravel』開発環境構築_homestead編

f:id:koudou-plus:20200723234108p:plain

仮想環境の構築

Vagrant Boxを追加します。
$ vagrant box add laravel/homestead

GitHub - laravel/homestead

【グーグル翻訳】Laravel Homesteadは、PHP、Webサーバー、その他のサーバーソフトウェアをローカルマシンにインストールしなくても素晴らしい開発環境を提供する、パッケージ済みの公式のVagrantボックスです。 オペレーティングシステムの混乱を心配する必要はもうありません。 Vagrantボックスは完全に使い捨てです。 問題が発生した場合、数分でボックスを破壊して再作成できます!
 Homesteadは、WindowsMac、またはLinuxシステムで動作し、Nginx Webサーバー、PHP 7.4、MySQL、Postgres、Redis、Memcached、Node、およびその他のすばらしいLaravelアプリケーションの開発に必要なその他すべての機能が含まれています。

好きなディレクトリに作業用フォルダを作ります。(homeディレクトリで直接作業してもいいです。)
$ pwd
/Users/【ユーザ名】/app
$ mkdir app
Homestead(Vagrant Box)を管理するためのツール(Homestead)をインストールします。
$ git clone https://github.com/laravel/homestead.git Homestead
仮想環境の起動の準備をします。
$ cd Homestead/
$ bash init.sh
Homestead initialized! 
共有フォルダを作ります。

この共有フォルダがあることで仮想環境(ゲスト)とローカル環境(ホスト)で同じファイルを編集することが可能です。
フォルダ名は何でもいいです。※デフォルトはcode

$ mkdir ~/app/Homestead/code/
$ cd ~/app/Homestead/code/

ipと任意のホスト名を紐づけます。

$ vim /etc/hosts
192.168.10.10 sample_app

Homestead.yamlを変更します。
mapはホスト(仮想環境)。toはゲスト(ローカル)です。

$ vim Homestead.yaml
	---
	ip: "192.168.10.10"
	memory: 2048
	cpus: 2
	provider: virtualbox
	authorize: ~/.ssh/id_rsa.pub
	keys:
	    - ~/.ssh/id_rsa
	folders:
	    - map: ~/app/Homestead/code #変更箇所
	      to: /home/vagrant/code
	sites:
	    - map: sample_app #変更箇所
	      to: /home/vagrant/code/sample_app/public #変更箇所
	databases:
	    - sample_app_db #変更箇所
	features:
	    - mariadb: false
	    - ohmyzsh: false
	    - webdriver: false
	# ports:
	#     - send: 50000
	#       to: 5000
	#     - send: 7777
	#       to: 777
	#       protocol: udp
仮想マシンを起動します。
$ vagrant up #起動コマンド
$ vagrant ssh #接続コマンド
ゲスト側にcodeディレクトリができているのを確認します。
vagrant@homestead:~$ ls
code

仮想環境構築後の作業

composerをインストールします。
vagrant@homestead:~/code$ composer install
Laravelプロジェクトを作成します。

(バージョンを指定: 6.*とすると6の最新が入る)

vagrant@homestead:~/code$ composer create-project laravel/laravel sample_app --prefer-dist "6.*" 
この時点でホストのマウントフォルダにプロジェクトが共有されているかを確認してください。
ブラウザからhost: "192.168.10.10"にリクエストしてアプリケーションが正常に起動しているか確認します。

f:id:koudou-plus:20200723222545p:plain

エラーが出れば以下を確認します。

※Homestead.yamlのsites:の設定は正しいか

修正後は以下で設定を反映します。
$ vagrant up --provision
バージョン確認:/home/vagrant/code/sample_app以下で
$ php artisan -V
Laravel Framework 6.10.1
config/app.php の設定変更をします。(日本向け)

timezone :「UTC」から「Asia/Tokyo」に変更
locale(言語):「en」を「ja」に変更
faker_locale:「en_US」を「ja_JP」に変更

DB接続設定をします。

.env

DB_DATABASE=sample_app_db
DB_USERNAME=root
DB_PASSWORD=secret
設定変更後に実行し変更を反映します。
php artisan cache:clear
php artisan config:clear
php artisan config:cache
マイグレーションを実行します。

マイグレーションファイルが実行されてテーブルが作成されます。

php artisan migrate

Gitを導入しGitHub(リモートリポジトリ)でソースコードをバージョン管理します。

koudou-plus.net

Git管理していないものの管理(プロジェクトをGit cloneした後に必要な作業)

php 関連のパッケージinstall
composer install	
composer dump-autoload

フロント周りのパッケージ install
npm install --no-bin-links && npm run dev	

DB周りのテーブル作成、データ投入
php artisan migrate:fresh --seed

Laravel uiをインストール
composer require laravel/ui:1.2.0

Laravel5.8までは、Bootstrapが内蔵されていた。
Laravel6.xからフロント側が分離し、
Laravel-uiというパッケージとなった。

bootstrapの有効化
php artisan ui bootstrap
認証(ログイン機能)の有効化
php artisan ui bootstrap --auth 
追加されたnpm パッケージをインストールしてビルド
npm install --no-bin-links && npm run dev

※エラーの場合

vim package.json
#修正
node node_modules/cross-env/src/bin/cross-env.js
MySQLはデフォルトではログを吐かないので設定を変更する。
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
 general_log_file = /var/log/mysql/mysql.log
 general_log  = 1
$ sudo systemctl restart mysql
 /var/log/mysql
$ sudo tail -f mysql.log #logをリアルタイムで表示するコマンド
Laravel デバッガー導入
$ composer require barryvdh/laravel-debugbar

$ vim /home/vagrant/laravelapp1/config/app.php
 provider 
	Barryvdh\Debugbar\ServiceProvider::class,
 alias
  'Debugbar' => Barryvdh\Debugbar\Facade::class,

$ cp .env.example .env

$ vim .env
	APP_DEBUG=true

.envを編集したら
$ php artisan config:cache


■『git clone』でプロジェクトを作成した場合に必要な作業

composer install
cp .env.example .env
php artisan key:generate
php artisan migrate

recipes.laravel.jp