laravel cdn 結合七牛雲實現檔案自動同步功能

a512395193發表於2020-08-23

在實際應用中我們為了節省伺服器開支都會部署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 協議》,轉載必須註明作者和本文連結

相關文章