laravel cdn 结合七牛云实现文件自动同步功能

在实际应用中我们为了节省服务器开支都会部署cdn,本文围绕七牛云cdn 来展开说明。
一. 安装 overtrue 的七牛cdn 扩展包 laravel-filesystem-qiniu :
安装:

$ composer require "overtrue/laravel-filesystem-qiniu" -vvv

配置cdn :
1.注册
config/app.php 中添加Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider

 'providers' => [
      // Other service providers...
      Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider::class,
  ],
  1. 添加七牛磁盘配置到 config/filesystems.php :
 <?php

 return [
    'disks' => [
         //...
         'qiniu' => [
            'driver'     => 'qiniu',
            'access_key' => env('QINIU_ACCESS_KEY', 'xxxxxxxxxxxxxxxx'),
            'secret_key' => env('QINIU_SECRET_KEY', 'xxxxxxxxxxxxxxxx'),
            'bucket'     => env('QINIU_BUCKET', 'test'),
            'domain'     => env('QINIU_DOMAIN', 'xxx.clouddn.com'), // or host: https://xxxx.clouddn.com
         ],
         //...
     ]
 ];

二.安装 asset-cdn :

$ composer require arubacao/asset-cdn

仅对于Laravel必需<=5.4,因为启用了Laravel >=5.5 自动发现

// config/app.php

'providers' => [

    // Other Service Providers

    \Arubacao\AssetCdn\AssetCdnServiceProvider::class,

],

配置:
asset-cdn 提供了asset-cdn:push, asset-cdn:sync, asset-cdn:empty 三个命令具体可以查看文档

如果要使用必须进行相应的配置

发布配置文件

$ php artisan vendor:publish --provider="Arubacao\AssetCdn\AssetCdnServiceProvider"

应为我们使用的是七牛云,所以这里有变动不能安装说明来配置

// config/asset-cdn.php

[
   'cdn_url' =>env('CDN_URL','xxxx'),//添加配置方便动态更改
    'filesystem' => [
        'disk' => 'qiniu',//注意这里要和config/filesystems.php 添加qiniu配置一样
   ],
]

.env.example中添加

#cdn
USE_CDN=
CDN_URL=

三.任务调度
使用调度器时,我们需要修改系统的 Cron 计划任务配置信息,运行以下命令:

export EDITOR=vi && crontab -e

复制下面这一行:

* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1

此时进入 VI 编辑器界面 保存退出

注册调度任务
app/Console/Kernel.php中添加(可自行设置)

<?php
.
.
.
class Kernel extends ConsoleKernel
{
    .
    .
    .
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')
        //          ->hourly();
        // 每隔一个小时执行一遍
        $schedule->command('asset-cdn:sync')->hourly();

    }
    .
    .
    .
}

即可实现cdn 的同步

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!