Skip to content

zhangqingxi/laravel-admin

Repository files navigation

Laravel-Admin

This Is A Web System Manage

部署流程

1.检查版本、扩展、安全函数

php7.3 mysql5.7 nginx1.16
php扩展:
    --PHP OpenSSL
    --PHP PDO
    --PHP Mbstring
    --PHP Tokenizer
    --PHP XML
    --PHP Fileinfo
php安全函数
    --proc_open
    --proc_get_status
    --exec
    --putenv
    --pcntl_signal
    --pcntl_alarm

2.配置环境

重命名.env.example为.env
配置Db、Redis
配置菜单权限`MENU_AUTH`为false
其他配置按需求设置     

3.安装依赖

composer install --optimize-autoloader --no-dev

--optimize-autoloader 可优化20%~25%的性能

4.必要数据

php artisan key:generate
php artisan migrate
php artisan db:seed
.env开启菜单权限`MENU_AUTH`为true

更新流程

1.开启维护

php artisan down

2.更新数据

git pull origin master
php artisan migrate

3.清空缓存

php artisan clear-compiled
php artisan route:clear
php artisan cache:clear
php artisan config:clear

4.重建缓存

php artisan optimize
composer dump-autoload --optimize

--optimize 可优化20%~25%的性能

5.关闭维护

php artisan up

可能出现的问题

php artisan migrate 错误

Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
原因是最大长度是1000字节 给定的是1071 
laravel 5.4以上用的是utf8mb4编码【每字符4字节】 
解决方案 在AppServiceProvider.php中的boot方法加入下面一行
Schema::defaultStringLength(250); 1000/4

Call to undefined function App\Observers\prettyPrint()

原因是更新composer.json之后 没有在autoload/files加上 "app/Helpers/Helpers.php"

用到的知识点

安装工具自动提示扩展

laravel-ide-helper

composer require --dev barryvdh/laravel-ide-helper

在config/app.php add service provider

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class

门面的自动PHPDOC生成 === 每次使用composer都要重新运行改命令

php artisan ide-helper:generate
php artisan ide-helper:meta
php artisan ide-helper:models

也可以添加执行脚本至composer.json

"scripts":{
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "@php artisan ide-helper:generate",
        "@php artisan ide-helper:models",
        "@php artisan ide-helper:meta"
    ]
},

安装调试工具

laravel-debugbar

composer require --dev barryvdh/laravel-debugbar 

在config/app.php add service provider

Barryvdh\Debugbar\ServiceProvider::class,

生成配置

php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
.env DEBUGBAR_ENABLED=true/false

安装富文本编辑框扩展

laravel-u-editor

composer require overtrue/laravel-ueditor

在config/app.php add service provider

Overtrue\LaravelUEditor\UEditorServiceProvider::class

生成静态资源

php artisan vendor:publish --provider='Overtrue\LaravelUEditor\UEditorServiceProvider'

blade引入资源

<!--引入资源-->
@include('vendor.ueditor.assets')


<!-- 编辑器容器 -->
<script id="container" name="content" type="text/plain"></script>

<!-- 实例化编辑器 -->
<script type="text/javascript">
    var ue = UE.getEditor('container');
    ue.ready(function() {
        ue.execCommand('serverparam', '_token', '{{ csrf_token() }}'); // 设置 CSRF token.
    });
</script>

开启storage资源软连接

php artisan storage:link 

安装验证码扩展

captcha

composer require mews/captcha

在config/app.php add service provider

Mews\Captcha\CaptchaServiceProvider::class

生成配置文件

php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider" --tag=config

安装validate提示语言包

laravel-lang

composer require overtrue/laravel-lang

在config/app.php add service provider and edit locale 'zh-CN'

Illuminate\Translation\TranslationServiceProvider::class,

locale => zh-CN

在resources/lang add zh-CN

php artisan lang:publish zh-CN

laravel异步队列

生产环境需要使用进程管理器 Supervisor 来确保队列处理器不会停止运行

队列存储需要的数据表

php artisan queue:table
php artisan migrate

创建任务UpdateAdminUserLoginInfo (用于后台用户登录后更新登录的信息)

php artisan make:job UpdateAdminUserLoginInfo

推送任务

public function handle()
{
    //TODO
}

dispatch(new UpdateAdminUserLoginInfo());

启动队列 在配置文件开启对应的队列驱动模式

// --queue      被监听的队列
// --daemon     在后台模式运行
// --delay      给执行失败的任务设置延时时间 (默认为零: 0)
// --force      强制在「维护模式下」运行
// --memory     内存限制大小,单位为 MB (默认为: 128)
// --sleep      当没有任务处于有效状态时, 设置其进入休眠的秒数 (默认为: 3)
// --tries      任务记录失败重试次数 (默认为: 0)
php artisan queue:work --daemon [--queue[="..."]] [--delay[="..."]] [--force[="..."]] [--memory[="..."]] [--sleep[="..."]] [--tries[="..."]] 

#laravel事件 监听 观察者 服务 创建一个系统操作事件

php artisan artisan make:event SystemOperation 

监听这个事件

php artisan artisan make:listener SystemLogs 

观察者 模型的操作观察 Laravel事先已经定义好了 10 个模型事件以供我们使用

// creating    监听数据即将创建的事件。
// created     监听数据创建后的事件。
// updating    监听数据即将更新的事件。
// updated     监听数据更新后的事件。
// saving      监听数据即将保存的事件。
// saved       监听数据保存后的事件。
// deleting    监听数据即将删除的事件。
// deleted     监听数据删除后的事件。
// restoring   监听数据即将从软删除状态恢复的事件。
// restored    监听数据从软删除状态恢复后的事件。
php artisan artisan make:observer ModelObserver 

在app\config 新建一个配置 内容如下

    'event' => [
        'listeners' => [
            'App\Events\SystemOperation' => [
                'App\Listeners\SystemLogs',
            ],
        ],
        'observers' => [
           \App\Model\Admin\AdminMenu::class
           ...
        ],
    ],

注册一个服务

artisan make:provider SystemOperationProvuder

//boot内容
$allListeners = config('blog.event.listeners');
foreach ($allListeners as $event => $listeners) {
    foreach ($listeners as $listener) {
        Event::listen($event, $listener);
    }
}
$observers = config('blog.event.observers');
foreach ($observers as $observer) {
    $observer::observe(ModelObserver::class);
}

Releases

No releases published

Packages

No packages published