内容有点多,就不说别的了。。
需要一个简单的后台管理系统,对接数据库中的用户信息表,完成基本的增删改查操作。
最好支持权限管理;有便捷的接口可供调用(不需要深度定制);前端界面和交互美观简洁,足够“现代化”;架构明晰,配置简单,可快速成型等等。
几经查找,感觉 laravel-admin 这个框架还不错。虽说文档算不上完善,小踩几坑,没怎么太费事就构建好了。值得记录一下。
一、安装 Laravel 环境
laravel-admin 需要PHP 7+和Lavavel 5.5+,我当前使用的是 VirtualBox 虚拟机里的Ubuntu 19.04系统,配置起来还是比较方便的。
Laravel 官方的定义是 The PHP Framework For Web Artisans ,优雅和快速成型。依赖于PHP >= 7.1.3和一些 PHP 扩展组件。可以使用 Linux 系统自带的包管理器进行安装,命令如下:
$ sudo apt-get install php7.2 php7.2-bcmath php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip php7.2-common
安装 composer 并配置国内镜像
Composer 是 PHP 语言的依赖管理工具,类似于 Node.js 下的 npm 。后面需要用到的 Laravel 、laravel-admin 及其相关的依赖项都可以通过composer命令安装。
$ sudo apt-get install composer
为了提高访问速度,可以把 composer 的镜像源改为国内版本,命令如下(全局配置):
$ composer config -g repo.packagist composer https://packagist.laravel-china.org
安装 Laravel 并初始化项目
使用composer命令安装 Laravel :
composer global require laravel/installer
将 Laravel 安装路径添加到 PATH 环境变量:
$ echo export PATH=”$PATH:~/.config/composer/vendor/bin” >> ~/.zshrc && source ~/.zshrc
初始化 Laravel 项目:
$ laravel new admin
以上步骤完成后,进入admin项目目录,运行$ php artisan serve命令即可开启一个最基本的 Laravel 站点。
配置数据库
安装 mysql 数据库:
$ sudo apt-get install mysql-server
创建数据库admin并授权给测试账户(用户名test_user,密码test_password):
mysql> CREATE DATABASE admin; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL ON admin.* to test_user IDENTIFIED BY 'test_password'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
修改数据库配置文件
编辑config/database.php文件(已经默认使用 mysql 数据库),修改 mysql 配置部分,将url改为如下形式:
‘url’ => env(‘DATABASE_URL’, ‘mysql://test_user:test_password@127.0.0.1/admin’),
(数据库 URL 的格式为mysql://用户名:密码@IP地址/数据库名)
二、安装 laravel-admin
数据库配置完成后,即可按照以下步骤安装配置 laravel-admin 。
在admin目录下,使用composer命令安装 laravel-admin :
$ composer require encore/laravel-admin
发布资源:
$ php artisan vendor:publish –provider=”Encore\Admin\AdminServiceProvider”
使用以下命令完成安装:
$ php artisan admin:install
运行服务查看效果:
$ php artisan serve
访问http://127.0.0.1:8000/admin,使用用户名admin和密码admin登录,效果如下:
安装完成后,laravel-admin 所有的配置都在config/admin.php文件中(如站点名称、logo、登录界面的背景等),而项目文件的安装目录为app/Admin,目录结构如下:
app/Admin ├── Controllers │ ├── ExampleController.php │ └── HomeController.php ├── bootstrap.php └── routes.php
其中app/Admin/routes.php文件用来配置后台路由;
app/Admin/bootstrap.php是 laravel-admin 的启动文件;
app/Admin/Controllers目录用来存放后台控制器文件,该目录下的HomeController.php文件是后台首页的显示控制器。
三、一些必要的配置
项目进行到这里,已经具备了一个后台管理系统的所有基本要素,只是在添加或者修改用户时,会报出下图所示的Config error,需要添加一个Disk配置:
编辑config/filesystems.php文件,在’disks’配置下添加如下内容:
'admin' => [ 'driver' => 'local', 'root' => public_path('upload'), 'visibility' => 'public', 'url' => env('APP_URL').'/public/puload/', ],
中文配置
配置界面语言为中文可以修改config/app.php文件,将其中的locale => en改为locale => zh-CN即可。
其他常用的配置如站点名称、页面布局等可以编辑config/admin.php文件,文件中的注释信息非常详细,根据需求直接修改即可。
四、绑定自己的数据库
前面生成的算是演示用的示例页面,如果需要绑定和管理自己的数据库表格,操作也是比较简单的。
创建数据库表格
在之前创建的admin数据库中添加名为employee的表格:
mysql> CREATE TABLE employee ( -> id int(6) unsigned AUTO_INCREMENT PRIMARY KEY, -> number int(6) unsigned NOT NULL UNIQUE, -> name varchar(10) NOT NULL, -> mail varchar(60) UNIQUE, -> password varchar(30), -> department varchar(40) NOT NULL DEFAULT '' -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
创建模型文件
$ php artisan make:model Employee
上述命令会创建app/Employee.php模型文件,将该文件改为如下内容:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Employee extends Model { protected $table = 'employee'; public $timestamps = false; }
PS:关于模型的使用可以参考 Laravel 官方文档
添加控制器
通过以下命令创建一个对接app/employee模型的控制器:
$ php artisan admin:make EmployeeController --model=App\\Employee App\Admin\Controllers\EmployeeController created successfully.
添加路由
编辑路由配置文件app/Admin/routers.php,在根 URL 的路由下添加如下一行内容:
$router->resource(’employee’, EmployeeController::class);
添加网页菜单
访问http://127.0.0.1:8000/admin/auth/menu,添加页面左侧的菜单项,用于指向前面创建的后台数据。
上述步骤完成后,访问http://127.0.0.1:8000/admin/employee,最终效果如下:
五、优化筛选和密码显示
上面完成的项目中,筛选按钮只支持通过 ID 搜索,密码也是直接显示。这些和表格相关的行为都可以通过修改app/Admin/Controllers/EmployeeController.php文件进行控制。
修改EmployeeController.php文件中对表格相关行为的定义:
protected function grid() { $grid = new Grid(new Employee); // 不显示 ID 列 //$grid->id('ID');^M $grid->number('工号');^M $grid->name('姓名');^M $grid->mail('邮箱');^M // 隐藏密码列 //$grid->password('Password');^M $grid->department('部门'); $grid->filter(function($filter){ // 去掉默认的 id 过滤器 $filter->disableIdFilter(); // 添加新的字段过滤器(通过工号过滤) $filter->like('number', '工号'); }); return $grid; }
实际效果如下:
六、nginx 服务器配置
首先需要终止默认安装的 Apache2 服务并安装 nginx 和 php-fpm:
$ sudo systemctl stop apache2 $ sudo systemctl disable apache2 $ sudo apt-get install nginx php7.2-fpm
创建新的站点配置文件(/etc/nginx/sites-available/admin.conf)并写入以下内容:
server { listen 80; server_name 127.0.0.1; root <your-project-path>/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
使用以下命令启用新的站点配置并重启 nginx 服务:
$ sudo ln -s /etc/nginx/sites-available/admin.conf /etc/nginx/sites-enabled/ $ sudo systemctl restart nginx
需要注意的是,app/storage目录的属主应该与运行 nginx 服务的用户(默认为www-data)一致,可通过以下命令修改:
$ sudo chown -R www-data storage
参考资料
作者:rollingstarky
链接:https://www.jianshu.com/p/a5382761301a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。