【Laravel-admin】Laravel-adminインストールしてみた

概要

【Laravel】MacにLaravelインストールしてみた(Virtalbox + Vagrant + homestead) 」で構築した仮想環境内にを新しいLaravelプロジェクトを作成し、Laravel-adminをインストールしていきます。
今回は、Composerを利用してインストールしていきたいと思います。

参考
https://laravel-admin.org/
https://getcomposer.org/

環境

MacBook Air (Retina, 13-inch, 2020)
メモリ: 16 GB
macOS: Big Sur バージョン 11.6.1

仮想環境
VirtualBox 6.1.28
Vagrant 2.2.19
Laravel/Homestead 11.5.0 ( Ubuntu 20.04.3 LTS, PHP 8.0.11 )
mysql  Ver 8.0.26-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

*前回確認が漏れていました。
MySQLもインストールされていますので、以下のコマンドでバージョンを確認しておいてください。

mysql --version

Laravelのインストール(Composer編)

まず、仮想サーバを起動し、sshで仮想サーバへログインしてください。

インストールディレクトリへ移動します。
ComposerでLarabelを最新バージョンをインストールします。

cd ~/code
composer create-project "laravel/laravel" laravel-admin

「Application key set successfully.」と表示されたらインストール完了です。
インストールされたバージョンを確認する。
プロジェクトへルートへ移動して、バージョン確認します。

cd laravel-admin/
php artisan -V

今回の環境では、「Laravel Framework 8.70.2」が表示されました。

バージョン指定してインストールしたい場合は、以下のようにします。

composer create-project "laravel/laravel=5.6.*" laravel-version

追記11/17
本番環境など公開サーバの場合は、–no-devのオプションをつけて、開発ツール系を削除することをおすすめします。

composer update --no-dev

続けて、Laravel-adminをインストールします。

Laravel-adminインストール

laravelプロジェクトに移動して、Laravel-adminインストールする。

cd ~/code/laravel-admin/
composer require encore/laravel-admin
「Publishing complete.」が表示されたらインストール完了です。

Database生成及び設定

Database生成

mysqlに接続してDatabaseを作成し、接続ユーザを作成していきます。
細かいことは、ググってね。w

DB Name: laraadmindb
文字セット: utf8mb4
照合順序: utf8mb4_bin

mysql
CREATE DATABASE laraadmindb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

作成できたか確認する。

show databases;
+--------------------+
| Database           |
+--------------------+
| homestead          |
| information_schema |
| laraadmindb        |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

アクセスするユーザを作成

ユーザ名: adminuser
パスワード: adminpw
*みなさんは、ちゃんとしたしたパスワードにしましょうねw

CREATE USER 'adminuser'@'localhost' IDENTIFIED BY 'adminpw';
Query OK, 0 rows affected (0.02 sec)

次は、権限をつけていきます。フルアクセスにします。w

GRANT ALL PRIVILEGES ON *.* TO 'adminuser'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

「quit;」を実行し、mysqlから抜けてください。

laravelのデータベース設定

データベース設定ファイルを開きます。
.envに書くとセキュリティ問題があるのでちゃんdatabase.phpに書きます。
.envでdebug=trueとかデバッグモードにするとコードがエラー吐くと.envの中身がモロ見えてしまうので注意.

vi config/database.php 

database, username, passwordを変更し保存します。


    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laraadmindb'),
            'username' => env('DB_USERNAME', 'adminuser'),
            'password' => env('DB_PASSWORD', 'adminpw'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

laravel-adminのファイルをプロジェクトに追加する。

php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
vendorディレクトリから各所に必要なファイルがコピーされる
「migrations」もコピーされていることを確認する。(これにLaravel-adminの標準テーブル情報が入っています。)

環境設定ファイル「.env」を修正

vi .env

デフォルトでは、色々記載がありますが、ごっそり消して以下の分だけ残します。
「APP_DEBUG=false」は、必要な時だけtrueにするようにしましょう。
APP_URL」は、「http://laravel-admin.test」でアクセスしたいので修正しておいてください。(後ほどhosts修正します。)
先ほどdatabase.phpは、mysqlを修正しましたので、「DB_CONNECTION=mysql」になっていることを確認します。配列に以下のように設定することで、環境毎に切り替えることもできます。
開発環境=develop
検証環境=staging
本番環境=production

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Qt1g2Pu1xEfsO4ceKcPE1SEmBU2/3d8GQ1ZKymQdaG0=
APP_DEBUG=false
APP_URL=http://laravel-admin.test

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql

laravel-Adminの標準テーブルを生成

php artisan admin:install
いくつかのテーブルと、必要なphpファイルが配備されます。

Laravel-Adminは、「app/Admin」ディレクトリ内に構築していきます。

デフォルトの機能
ダッシュボード: app/Admin/Controllers/HomeController.php
認証機能: app/Admin/Controllers/AuthController.php
画面コントローラサンプル: app/Admin/Controllers/ExampleController.php
共通設定: app/Admin/bootstrap.php
ルーティング: app/Admin/routes.php

テーブルは、こんな感じに作られました。

hostsを修正

仮想環境構築時同様に以下のファイルを修正します。
仮想環境とMac側も同じく修正します。

$ sudo vi /etc/hosts

以下の1行を追加します。

【仮想サーバIP】 laravel-sample.test

仮想環境設定を修正

仮想環境からexitで抜けてください。

「Homestead.yaml」ファイルを開き、今回追加したプロジェクトの設定を追加します。
*{Server_Dir}については、仮想環境構築時の内容を確認してください。
foldersにローカルと仮想サーバの関連を追加
sitesにnginxの設定を追加
databaseに追加したデータベースを追加

folders:
    - map: {Server_Dir}/laravel-sample
      to: /home/vagrant/code/laravel-sample
    - map: {Server_Dir}/laravel-admin 
to: /home/vagrant/code/laravel-admin

sites:
    - map: laravel-sample.test
      to: /home/vagrant/code/laravel-sample/public
    - map: laravel-admin.test
to: /home/vagrant/code/laravel-admin/public

databases:
    - homestead
    - laraadmindb

仮想サーバに反映させます。
Mac側のターミナルで、以下のコマンドを実行します。

vagrant reload --provision

サーバが起動したら以下のURLにアクセスしてLaravel-Adminを起動してみます。

http://laravel-admin.test/admin

この画面が出れば、構築成功ですっ!お疲れ様でした。
と一応ログイン見ないとね。

Laravel-Adminにログイン

初期の管理者ログイン情報は、以下の通りです。
入力してログインしてみてください。
username: admin
password: admin

Dashboardが表示されましたね。
ログインも成功です。

今回は、これで終わります。お疲れ様でした。