WordPress如何使用騰訊雲物件儲存COS儲存媒體庫附件

發表於2023-09-27

這篇文章來介紹一下透過使用外掛實現將 WordPress 的媒體庫附件儲存在騰訊雲 COS 上。

騰訊雲 COS 具有高擴充套件性、低成本、可靠和安全等特點,將媒體庫附件儲存在 COS 上有以下好處:

  • 附件將擁有更高的可靠性;
  • 使用者檢視圖片附件時將直連 COS 伺服器,不佔用伺服器的下行頻寬/流量,使用者訪問速度更快;
  • 可配合騰訊雲 CDN 進一步提升使用者檢視圖片附件的速度,最佳化網站訪問速度。

準備工作

  1. 搭建 WordPress 部落格平臺
  • 可以在 WordPress 官方頁面 下載 WordPress 的最新版並檢視安裝指南
  • 或者在安裝伺服器系統時在映象市場中選擇預裝 WordPress 部落格平臺 的 CVM 映象
  1. 建立一個公有讀私有寫的儲存桶,儲存桶的地域建議與執行 WordPress 部落格平臺的 CVM 的地域相同,建立詳情請參見 建立儲存桶 文件
  2. 在儲存桶列表中找到剛剛建立的儲存桶,並單擊配置管理
  3. 單擊左側的基礎配置,檢視訪問域名並記錄
  4. 訪問 WordPress 後臺,訪問外掛-安裝外掛頁面 /wp-admin/plugin-install.php,安裝外掛
  • GitHubWordPress Plugins 下載最新 releases 原始碼,透過 WordPress 後臺上傳安裝,或者直接將原始碼上傳到 WordPress 外掛目錄 wp-content/plugins,然後在後臺啟用
  • 後臺搜尋Sync QCloud COS進行安裝(推薦使用)

配置 Sync Qcloud COS 外掛

  1. 在 WordPress 後臺管理左側導航欄騰訊雲COS,點選進入設定頁面,配置說明見下表
配置項配置值
儲存桶名稱建立儲存桶時自定義的名稱
儲存桶地域建立儲存桶時所選擇的地域
APP ID開發商 APPID,建立儲存桶時名稱後的 ID
SecretID前往「雲 API 金鑰」進行獲取
SecretKey前往「雲 API 金鑰」進行獲取
不上傳縮圖勾選後不會上傳對應的縮圖檔案,建議不勾選
不在本地保留備份勾選後不會在本地保留原檔案,建議不勾選
本地資料夾本地儲存路徑,例wp-content/uploads
不在本地保留備份勾選後不會在本地保留原檔案,建議不勾選
URL 字首COS 訪問域名/本地資料夾,例https://media-100000cos.ap-shanghai.myqcloud.com/wp-content/uploads
  1. 填寫完成後點選儲存更新即可
  2. 測試上傳一個新檔案,檢視附件詳情,檢視附件圖片的 URL,確認附件圖片的 URL 指向騰訊雲 COS

遷移

如果以上是成功的,那麼就需要同步舊資源到 COS 儲存桶當中,可以使用 COSCLI,否則後臺無法正常預覽舊資源;

COSCLI 是使用 Go 語言開發,部署方便,且支援跨桶操作。

下載與安裝配置

COSCLI 工具提供 Windows、Mac、Linux 作業系統的二進位制包,透過簡單的安裝和配置後即可使用。

GitHub 地址國內站點
WindowsWindows
MacMac
LinuxLinux
當前版本號為 v0.16.0-beta,如需獲取工具的最新版本、歷史版本和更新日誌,請前往 GitHub 進行檢視。

根據自己需要在什麼環境下使用進行下載,這裡以 macOS 為例,其他環境可以參考文件

  1. 下載 COSCLI
wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-mac
  1. 重新命名並修改檔案許可權
mv coscli-mac /usr/local/bin/coscli
chmod 755 /usr/local/bin/coscli
  1. 檢視版本號檢查是否安裝成功
$ coscli -v
coscli version v0.16.0-beta

看到了version的輸出表示安裝成功。

在 macOS 系統下使用 COSCLI 時,若彈出無法開啟“coscli”,因為無法驗證開發者的提示,可以前往設定 > 安全性與隱私 > 通用中選擇仍要開啟 coscli,之後即可正常使用 COSCLI。
  1. 配置引數

可以使用coscli --help命令來快速檢視 COSCLI 的使用方法。在第一次使用時,執行coscli命令,會進行初始化配置,需要輸入Secret ID等資訊,按步驟填寫完成後,COSCLI 會預設在~/.cos.yaml的位置生成配置檔案

$ coscli
2023/09/06 17:11:46 Welcome to coscli!
When you use coscli for the first time, you need to input some necessary information to generate the default configuration file of coscli.
The path of the configuration file: /Users/lufei/.cos.yaml
Input Your Secret ID:

後期也可以使用coscli config init命令在其他位置為 COSCLI 互動式地生成配置檔案,或者可以直接手動編寫 COSCLI 的配置檔案。

配置檔案中各配置項的說明如下:

配置項說明
Secret ID金鑰 ID,可從 訪問管理控制檯 中建立並獲取。
Secret Key金鑰 Key,可從 訪問管理控制檯 中建立並獲取。
Session Token臨時金鑰 token,當使用臨時金鑰時需要配置,若不使用可以直接按 Enter 跳過。
APP IDAPP ID 是您在成功申請騰訊雲賬戶後所得到的賬號,由系統自動分配,可從 賬號資訊 中獲取。一個儲存桶的全稱由Bucket NameAPP ID這兩個元素組成,格式為<BucketName-APPID>,詳情請參見 儲存桶命名規範
Bucket Name儲存桶名稱,和 APP ID 一起構成儲存桶全稱,格式為<BucketName-APPID>,詳情請參見 儲存桶命名規範
Bucket Region儲存桶所在地域,詳情請參見 地域與訪問域名
Bucket Alias儲存桶別名,配置後可以在使用時用BucketAlias代替BucketName-APPID,減少所需輸入的命令長度,如果不配置此項,BucketAlias的值是BucketName-APPID的值。

配置完成後可以檢視~/.cos.yaml檔案,可以看到類似如下內容:

$ cat ~/.cos.yaml
cos:
  base:
    secretid: xxxxx
    secretkey: xxxxx
    sessiontoken: xxxxx
    protocol: https
  buckets:
  - name: sy-records-85464277
    alias: sy-records-85464277
    region: ""
    endpoint: cos.ap-shanghai.myqcloud.com
secretid/secretkey/sessiontoken 均為加密後的字串,不是明文配置的值。

如果需要支援多個儲存桶,可以使用coscli config add命令新增儲存桶配置。

使用

COSCLI 支援以下命令:

$ coscli --help
Welcome to use coscli!

Usage:
  coscli [flags]
  coscli [command]

Available Commands:
  abort          Abort parts
  bucket-tagging Modify bucket tagging
  config         Init or edit config file
  cp             Upload, download or copy objects
  du             Displays the size of a bucket or objects
  hash           Calculate local file's hash-code or show cos file's hash-code
  help           Help about any command
  ls             List buckets or objects
  lsparts        List multipart uploads
  mb             Create bucket
  rb             Remove bucket
  restore        Restore objects
  rm             Remove objects
  signurl        Gets the signed download URL
  sync           Synchronize objects

Flags:
  -c, --config-path string     config file path(default is $HOME/.cos.yaml)
  -e, --endpoint string        config endpoint
  -h, --help                   help for coscli
  -i, --secret-id string       config secretId
  -k, --secret-key string      config secretKey
  -t, --session-token string   config sessionToken
  -v, --version                version for coscli

Use "coscli [command] --help" for more information about a command.

這裡介紹一下cpsync命令

  • cp 命令用於上傳、下載或複製檔案。
  • sync 命令用於同步上傳、下載或複製檔案。

與 cp 命令不同的是:sync 命令首先會對比同名檔案的 crc64,如果 crc64 值相同則不進行傳輸。

這兩個命令在上傳和下載大檔案時會自動啟用併發上傳/下載。當以分塊形式上傳/下載檔案時,會預設開啟斷點續傳。

以遷移 WordPress 為例,可以使用如下命令將 WordPress 的媒體庫上傳到 COS 中,其中 /yourpath/wp-content/uploads 就是你的 WordPress 站點目錄本地的媒體庫儲存路徑,而 wp-content/uploads 就是存放在 COS 中的路徑。

首次上傳

  • 將本地 wp-content/uploads 資料夾下的所有檔案上傳至 bucket1 桶中的 wp-content/uploads 資料夾下
coscli cp /yourpath/wp-content/uploads/ cos://bucket1/wp-content/uploads/ -r
  • 將本地 wp-content/uploads 資料夾下的所有 .mp4 型別檔案上傳至 bucket1 桶中的 wp-content/uploads 資料夾下
coscli cp /yourpath/wp-content/uploads/ cos://bucket1/wp-content/uploads/ -r --include .*.mp4
  • 將本地 wp-content/uploads 資料夾下的所有非 .md 型別檔案上傳至 bucket1 桶中的 wp-content/uploads 資料夾下
coscli cp /yourpath/wp-content/uploads/ cos://bucket1/wp-content/uploads/ -r --exclude .*.md

二次上傳

如果出現了某些異常,或者手動停止掉後,想要重新上傳,可以使用sync,該命令會對比同名檔案的 crc64,如果 crc64 值相同則不進行傳輸。

coscli sync /yourpath/wp-content/uploads/ cos://bucket1/wp-content/uploads/ -r

更多關於 COSCLI 的使用方法請檢視官網文件介紹

同步完成以後,可以開啟回源設定,參考下文的設定回源。

擴充套件

  1. 使用 CDN 加速訪問 儲存桶如果需要配置 CDN 加速,可參見 CDN 加速配置 文件 在外掛設定中將 URL 字首修改為預設 CDN 加速域名或自定義加速域名即可
  2. 替換資料庫中的資源地址 如果不是新建立的站點,資料庫當中必定是舊的資源連結地址,我們需要替換一下,外掛提供了替換功能,在首次替換前記得備份 舊域名填寫原資源域名,如https://qq52o.me/ 新域名填寫現在的資源域名,如
https://img.qq52o.me/
  1. 設定跨域訪問 在文章中引用對應的資源連結,控制檯會提示跨域的錯誤
No 'Access-Control-Allow-Origin' header is present on the requested resource

原因是沒有新增 header 需要你的 COS 源的 CDN 中新增 HTTP Header 配置

Access-Control-Allow-Origin:*

或者只允許你自己的域名

Access-Control-Allow-Origin:https://qq52o.me

在儲存桶的基礎設定中設定 跨域訪問CORS,詳細請檢視對應文件 設定跨域訪問

相關文章