Laravel Web Installer : 让 Laravel 应用像 WordPress 一样通过浏览器进行安装升级
1、概述
你是否想让自己开发的 Laravel 应用可以像 WordPress、Discuz 或者其他 CMS 一样通过浏览器进行安装?Laravel Web Installer 这个第三方扩展包我们带来了福音,通过该扩展包,不再需要使用 Composer、SSH 这些命令行工具,你完全可以在浏览器中按照向导一步步实现应用的安装和升级工作。
注:需要指出的是这里安装指的不是 Laravel 的安装,即通过该扩展包我们提供了以下功能:laravel new project
或者composer create-project
这些命令实现的操作,而是基于 Laravel 开发的电商、博客、CMS 这些具体应用的安装和升级操作。
- 检查服务器是否满足要求
- 检查项目文件权限
- 设置数据库信息
- 更新已存在的应用
- 迁移数据库
- 填充数据表
2、安装
在 Laravel 项目根目录下,使用 Composer 安装依赖包:
composer require rachidlaasri/laravel-installer ~1.3
安装完成后,需要在 config/app.php
中如下注册服务提供者:
RachidLaasri\LaravelInstaller\Providers\LaravelInstallerServiceProvider::class,
3、使用
在使用该扩展包之前还需要运行如下 Artisan 命令发布配置文件及前端资源:
php artisan vendor:publish
该命令执行后项目中新增一些文件及文件件:
config/installer.php
- 该文件即为本扩展包的配置文件,用于配置数据库迁移及填充文件、项目需要的 PHP 扩展以及目录权限的配置。public/installer/css/main.css
- 该文件定义了安装界面默认的 CSS 样式resources/views/vendor/installer
- 该目录下包含了安装界面所需的视图文件resources/lang/en/messages.php
- 该文件定义了安装页面的提示文字,如果需要的话可以定义本地化消息,比如对应的中文翻译版本。
应用安装
下面我们在浏览器中访问 http://dev.laravel.app/install
,页面显示如下:
然后我们既可以按照向导一步步执行下去,直到安装完成,安装成功后会在 storage
目录下生成 installed
文件,下次再访问http://dev.laravel.app/install
,Laravel Web Installer会根据中间件 canInstall
判断是否该目录下是否包含 installed
,如果包含会认为已经安装,页面直接重定向到 http://dev.laravel.app
,不再执行安装操作。
应用升级
要升级应用,需要修改 config/installer.php
文件中 last_version
配置值,将其修改为大于之前的版本号即可,比如之前为 1.0,现在改成 1.1,然后在浏览器中访问 http://dev.laravel.app/upgrade
,页面显示如下:
同样按照升级向导一步步操作,直到升级成功,升级成功后会更新 storage/installed
文件中的版本号,这样,如果不修改 config/installer.php
文件中的 last_version
配置值,或者修改后的值小于之前版本的话,都不会执行升级操作。
小问题
当前版本 Laravel Web Installer 似乎有点小问题,按照其数据库迁移实现逻辑一次只能执行一个迁移,如果想要执行所有迁移需要对源码做改动。
将配置文件 config/installer.php
中的 migrates
设置为 true
(或者其他任意字符串,不要为空即可):
'migrations' => 'true'
然后修改扩展包源码 vendor/rachidlaasri/laravel-installer/src/Helpers/UpgradeManager.php
的第29行代码如下:
Artisan::call('migrate');
这样在安装/升级的时候才能一次运行所有未执行的迁移。
2 Comments