Laravelの環境構築
Laravelとは?
大規模システムで古くから実績のあるSymphonyというフレームワークをベースに作られたもの。
学習時間が短く済み、かつ大規模システムにも対応できるフレームワークとなっている。
構築手順
1. Composerをインストールする
Laravelをインストールするにはまず『Composer』というPHPのパッケージ管理ソフトが必要になるため、Composerをインストールする。
curl -sS https://getcomposer.org/installer | php
続いて、ダウンロードしたファイルを『usr/local/bin』に移動させます。
sudo mv composer.phar /usr/local/bin/composer
これで、usr/local/bin/
内にComposerというファイル名で移動しました。ここまでくればいつでもComposerを呼び出す事ができます。
配置したComposerのパーミッション(アクセス権)を変更します。
ターミナルで$の後ろに以下のコマンドを実行して下さい。
chmod a+x /usr/local/bin/composer
これでcomposerが実行できるようになりました。Composerの準備はこれで完了です。
そのままターミナルから「composer -V」を実行して見て下さい。Composerのバージョンが表示されれば、正常にインストールされています。
2. Laravelをインストールする
Composerがインストールできたら、次はいよいよ皆様お待ちかねのLaravelのインストールに入っていきます。
これもターミナルから行います。
まずは以下のコマンドを実行してください。
composer global require laravel/installer
環境変数PATHというものを設定する必要があります。これを設定しないとLaravelのコマンドが使えません。
ターミナル上で以下のコマンドを実行してください。
export PATH="$PATH:~/.composer/vendor/bin"
あとは、そのパスを下記のsourceコマンドで有効にします。
source ~/.bash_profile
これでLaravelがコマンドとして認識されるようになったはずです。
3. Laravelを使ってアプリの雛形を作る
実際にLaravelを使ってみましょう。
Laravelコマンドを入力します。
Laravelコマンドの使い方は
larvel new プロジェクト名
です。laravel_sampleというプロジェクトを作ってみましょう。
laravel new laravel_sample
ディレクトリが作成されるので、次にlaravelのバージョンを確認しましょう。
php artisan --version
LaravelにはMAMPやXAMPPのようなWebサーバー機能も備わっているため、
下記でサーバーを起動してみる。
cd laravel_sample
移動したら続いて以下のコマンドを実行する。
php artisan serve
ブラウザから以下のURLにアクセスする。
http://localhost:8000/
これでLaravelアプリケーションのトップページが表示される。
4. ディレクトリ構成
https://readouble.com/laravel/9.x/ja/structure.html
上記の中で特に重要なものを下記に記載しました。
/app
|- /Http
|- /Controllers ・・・ MVCでいうC(コントローラー)ファイルの置き場
/config ・・・ アプリケーションの各種設定ファイル置き場
/database ・・・ マイグレーションと初期値設定(シーディング)のファイル置き場
|- /factories
|- /migrations
|- /seeders
/public ・・・ アセット(画像、JavaScript、CSSなど)ファイルの置き場
/resources ・・・ ビューやアセットの元ファイル(LESS、SASS、JavaScript)を置く場所
|- /js
|- /sass
|- /css
|- /views ・・・ MVCでいうV(ビュー)のファイルを置く場所
/routes
|- web.php ・・・ ルーティング用の設定ファイル
/storage ・・・ コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュなど、フレームワークにより生成されるファイルが保存される
|- /logs ・・・ ログファイルの置き場所
5. MySQLを使うように設定する
今回は、MAMPで入れたMySQLを使う。
5.1 スキーマ(DB)を作成する
MySQLのDB(mysqlではスキーマ=DB)をまず作成する。
MAMPでMySQLを入れていればphpMyAdminの管理画面でGUIで操作できるが、今回はコマンドラインからやってみる。
まずは、mampのコマンドは下記に入っているので、そこに移動する。
cd /Applications/MAMP/Library/bin/
mysqlコマンドを実行する
./mysql -u root -p
パスワードを求められるのでデフォルトのままにしているのであればroot
と入れてEnter。
mysql>
が表示されれば接続完了。
DB(MySQLではスキーマ=DB)を一覧表示するには
SHOW DATABASES;
DBを作成するには
CREATE DATABASE データベース名;
今回は、laravel_sample
というDBを作っておく。
CREATE DATABASE laravel_sample;
5.2 パスを通しておく
毎回、作業ディレクトリを移動したり、./mysql
と実行するのはめんどうなのでパスを通しておくといい。
~/.bash_profile
をvimなどで開く。
vim ~/.bash_profile
どこでもいいので、以下のコードを追加しておく。
export PATH=$PATH:/Applications/MAMP/Library/bin
sourceコマンドで変更を反映させる。
source ~/.bash_profile
5.3 .envの修正
.env
内に使用するMySQLの情報を修正していく。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
今回だと下記になる。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_sample
DB_USERNAME=root
DB_PASSWORD=root
5.4 config/database.phpの修正
<?php
//ここはデフォルトでmysqlが指定されているのでそのまま
'default' => env('DB_CONNECTION', 'mysql'),
~~~~~~~
//connections配列の中にある、mysqlを修正していく
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '.envに記載したデータベース名'),
'username' => env('DB_USERNAME', '.envに記載したユーザー名'),
'password' => env('DB_PASSWORD', '.envに記載したパスワード'),
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
DB_SOCKET
はmysql内の下記コマンドで場所が分かる(socket
という項目が表示され、その右にパスが表示されている)ので、そのパスを入れる。
SHOW VARIABLES LIKE '%sock%';
今回の場合だと下記になる
<?php
//ここはデフォルトでmysqlが指定されているのでそのまま
'default' => env('DB_CONNECTION', 'mysql'),
~~~~~~~
//connections配列の中にある、mysqlを修正していく
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel_sample'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
これでDBへの接続準備が完了。
5.5 デバッグ設定
Laravelではエラーや例外処理は既に設定済みのため、
DB接続する際にわざわざ書いていたtry,catchも必要ない。
アプリケーションエラー発生時にユーザーにどの程度の情報を表示させるかは、
config/app.php
設定ファイルのdebug設定オプションで決定する。
デフォルト状態でこの設定オプションは、.envファイルで指定されるAPP_DEBUG
環境変数の値を反映する。
本番UP時には必ずAPP_DEBUGはfalseにすること!!
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:5D21FqMZNe+Ja+8h9VHwOgnKuQAkvjrUwngA/e5FurY=
APP_DEBUG=true
APP_URL=http://localhost
...
falseにした場合
trueにした場合
※Laravel5系の場合の画面です
6. ユーザー登録、ログイン、ログアウトなど認証機能を実装する
laravel5系までは下記コマンド一発でしたが
php artisan make:auth
、6系〜9まではまずLaravel uiをインストールします
composer require laravel/ui
その後、下記コマンドを実行
php artisan ui vue --auth
フロントフレームワークにより下記を実行します。
認証機能は下記のコマンドに--auth
を追加する事でmake:auth
と同じ様に使えます。
// Bootstrap
$ php artisan ui bootstrap
// Vue.js
$ php artisan ui vue
// React
$ php artisan ui react
なので、vueであれば下記コマンドを実行します。
$ php artisan ui vue --auth
その後、
$ npm install
$ npm run dev
をして、最低限の環境構築完了です。
下記エラーが出る場合には、他のライブラリバージョンが古いので
$ npm run dev
> @ dev /folder/foo
> npm run development
> @ development /folder/foo
> mix
sh: mix: command not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! @ development: `mix`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
下記を実行すればOK
$ npm i --save-dev laravel-mix@latest
$ npm i --save-dev sass-loader@latest
$ npm i --save-dev postcss@latest
$ npm i --save-dev webpack@latest