如何在DigitalOceanSpaces上存储WordPress资产
介绍
DigitalOcean Spaces 是一种对象存储服务,可用于存储大量不同的非结构化数据。 WordPress 网站通常包含图像和视频资产,是对象存储解决方案的理想选择。 对这些类型的静态资源使用对象存储可以通过释放服务器上的空间和资源来优化站点性能。 有关对象存储和 WordPress 的更多信息,请查看我们关于 如何将 WordPress 站点备份到空间 的教程。
在本教程中,我们将使用直接与 DigitalOcean Spaces 一起使用的 WordPress 插件,将其用作主要资产商店。 DigitalOcean Spaces Sync 插件将我们 WordPress 媒体库的数据路由到 Spaces,并根据您的需要为您提供各种配置选项,从而简化将对象存储与 WordPress 实例一起使用的过程。
先决条件
本教程假设您在服务器上有一个 WordPress 实例以及一个 DigitalOcean Space。 如果您没有此设置,您可以完成以下操作:
- 一台 Ubuntu 16.04 服务器,按照我们的 Initial Server Setup with Ubuntu 16.04 教程 进行设置。
- 按照我们关于 如何在 Ubuntu 16.04 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈的教程,在您的服务器上安装 LAMP 堆栈。
- 按照我们关于 如何在 Ubuntu 16.04 上使用 LAMP 安装 WordPress 的教程,在您的服务器上安装 WordPress。
- DigitalOcean Space 和 API 密钥,按照 如何创建 DigitalOcean Space 和 API 密钥 创建。
- WP-CLI 按照这些说明安装。
有了这些先决条件,我们就可以开始使用这个插件了。
修改 WordPress 权限
在本教程中,我们将使用 WordPress 项目中的 wp-content/uploads
文件夹,因此该文件夹存在并具有正确的权限非常重要。 您可以使用 mkdir
命令使用 -p
标志创建它,以便在文件夹不存在时创建它,并避免在存在时引发错误:
sudo mkdir -p /var/www/html/wp-content/uploads
您现在可以设置文件夹的权限。 首先,将所有权设置为您的用户(我们将在此处使用 sammy,但请务必使用您的非 root sudo
用户),并将所有权分组为 www-data
团体:
sudo chown -R sammy:www-data /var/www/html/wp-content/uploads
接下来,建立将授予 Web 服务器对该文件夹的写入权限的权限:
sudo chmod -R g+w /var/www/html/wp-content/uploads
我们现在可以使用我们的插件在对象存储中为 wp-content/uploads
文件夹中的资产创建一个存储,并从 WordPress 界面使用我们的资产。
安装 DigitalOcean Spaces Sync
使用 DigitalOcean Spaces Sync 的第一步是将其安装在我们的 WordPress 文件夹中。 我们可以导航到 WordPress 目录中的插件文件夹:
cd /var/www/html/wp-content/plugins
从这里,我们可以使用 wp
命令安装 DigitalOcean Spaces Sync:
wp plugin install do-spaces-sync
要激活插件,我们可以运行:
wp plugin activate do-spaces-sync
从这里,我们可以导航到 WordPress 管理仪表板左侧的插件选项卡:
我们应该在激活的插件列表中看到 DigitalOcean Spaces Sync:
要管理 DigitalOcean Spaces Sync 的设置,我们可以导航到我们的 Settings 选项卡,然后从菜单中选择 DigitalOcean Spaces Sync:
DigitalOcean Spaces Sync 现在将为我们提供配置资产存储的选项:
屏幕上半部分的 Connection Settings 字段询问我们的 Spaces Access Key 和 Secret。 然后它会询问我们的 Container,这将是我们空间的名称,以及 Endpoint。
您可以根据其 URL 确定您的空间的端点。 例如,如果您的 Space 的 URL 是 https://example-name.nyc3.digitaloceanspaces.com
,那么 example-name
将是您的存储桶/容器,而 nyc3.digitaloceanspaces.com
将是您的端点。
在插件的界面中,Endpoint 部分将预先填充默认的 https://ams3.digitaloceanspaces.com
。 如果您的空间位于另一个区域,您应该修改此端点。
接下来,您将被要求文件和路径设置 . 在标记为 文件的完整 URL 路径 的字段中,您可以输入存储公共域(如果您的文件将仅存储在您的空间中)或完整的 URL 路径(如果您将它们存储在您的空间和服务器。
例如,如果您的 WordPress 项目位于 /var/www/html
,并且您希望将文件存储在服务器和空间上,那么您将输入:
http://your_server_ip/wp-content/uploads
在 Full URL-path to files 字段- 本地路径字段中的
/var/www/html/wp-content/uploads
存储前缀和文件掩码设置是预填充的,除非您想为同步指定某些类型的文件,否则不需要修改。
我们将在以下部分中介绍在您的服务器和 Space 以及仅在您的 Space 上存储文件的细节。
在多个位置同步和保存文件
DigitalOcean Spaces Sync 提供了将文件保存到您的服务器的选项,同时也将它们同步到您的空间。 如果您需要将文件保存在服务器上,但也希望将备份存储在其他地方,此实用程序会很有帮助。 我们将完成将文件同步到我们的空间的过程,同时将其保存在我们的服务器上。 出于本示例的目的,我们假设我们有一个名为 sammy10x10.png
的文件,我们希望将其存储在媒体库和空间中。
首先,导航到 WordPress 管理仪表板上的 Settings 选项卡,然后从显示的选项菜单中选择 DigitalOcean Spaces Sync。
接下来,在 Connections Settings 字段中,输入您的 Spaces Key 和 Secret,然后输入您的 Container 和 Endpoint。 请记住,如果您的 Space 的 URL 是 https://example-name.nyc3.digitaloceanspaces.com
,那么 example-name
将是您的 Container,而 nyc3.digitaloceanspaces.com
将是您的 Endpoint[X136X ]。 通过单击 Connection Settings 字段底部的 Check the Connection 按钮来测试您的连接:
现在我们准备填写文件和路径设置 .
在 文件的完整 URL 路径 字段中,我们可以输入完整的 URL 路径,因为我们将文件保存在服务器和空间中。 我们将在这里使用我们服务器的 IP,但如果您有一个域,您可以将 IP 地址换成您的域名。 有关使用 DigitalOcean 注册域的更多信息,请参阅我们关于 如何使用 DigitalOcean 设置主机名的教程。 在我们的例子中,文件 的 完整 URL 路径将是 http://your_server_ip/wp-content/uploads
。
接下来,我们将 Local path 字段填写 uploads
目录的本地路径:/var/www/html/wp-content/uploads
。
因为我们使用的是单个文件,所以我们不需要修改 Storage prefix 和 Filemask 部分。 随着您的 WordPress 媒体库的大小和种类不断增加,您可以使用通配符和扩展名(例如 Filemask 字段中的 *.png
)修改此设置以针对单个文件类型。
你的决赛文件和路径设置看起来像这样:
请务必通过单击屏幕底部的 Save Changes 按钮来保存您的配置更改。
现在我们可以将我们的文件 sammy10x10.png
添加到我们的 WordPress 媒体库中。 我们将使用 wp media import
命令,它将文件从我们的主目录导入到我们的 WordPress 媒体库。 在这种情况下,我们的主目录将属于 sammy,但在您的情况下,这将是您的非 root sudo
用户。 当我们移动文件时,我们将使用 --path
参数来指定我们的 WordPress 项目的位置:
wp media import --path=/var/www/html/ /home/sammy/sammy10x10.png
查看我们的 WordPress 界面,我们现在应该在 媒体库 中看到我们的文件。 我们可以通过 WordPress 管理仪表板左侧的 媒体库 选项卡导航到那里:
如果我们导航到 DigitalOcean 控制面板中的 Spaces 页面,我们还应该在 Space 中看到该文件。
最后,我们可以导航到我们的 wp-content/uploads
文件夹,WordPress 将在其中创建一个带有年份和月份的子文件夹。 在这个文件夹中,我们应该看到我们的 sammy10x10.png
文件。
在空间上存储文件
DigitalOcean Spaces Sync 插件有一个附加选项,允许我们仅在我们的空间中存储文件,以防我们想优化服务器上的空间和资源。 我们将使用另一个文件 sammy-heart10x10.png
,并设置我们的 DigitalOcean Spaces 同步设置,以便该文件将仅存储在我们的空间中。
首先,让我们导航回插件的主配置页面:
我们可以离开连接设置信息,但我们会修改文件和路径设置 . 首先,在Full URL-path to files中,我们将写入存储公共域。 同样,我们将使用我们的服务器 IP,但如果您有一个域,您可以将其换成域:http://uploads.your_server_ip
接下来,我们将导航到同步设置 ,在页面底部,然后单击第一个框,这将允许我们“仅将文件存储在云端,并在成功上传后删除”。 你的决赛文件和路径设置看起来像这样:
请务必通过单击屏幕底部的 Save Changes 按钮来保存更改。
回到命令行,我们将使用 wp media import
将 sammy-heart10x10.png
从用户的主目录移动到我们的媒体库:
wp media import --path=/var/www/html/ /home/sammy/sammy-heart10x10.png
如果我们导航回 WordPress 界面,我们将不会在 媒体库 中看到 sammy-heart10x10.png
或 sammy10x10.png
。 接下来,如果我们返回命令行并导航到我们的 wp-content/uploads
目录,我们应该会看到时间戳子文件夹中缺少 sammy-heart10x10.png
。
最后,如果我们导航到 DigitalOcean 控制面板中的 Spaces 页面,我们应该会看到两个文件都存储在我们的 Space 中。
结论
我们介绍了两种不同的选项,您可以使用 DigitalOcean Spaces Sync 将 WordPress 媒体文件存储到 DigitalOcean Spaces。 此插件提供了额外的自定义选项,您可以通过阅读开发人员的文章“将您的 WordPress 媒体与 DigitalOcean Spaces 同步”来了解更多信息。
如果您想了解有关使用 Spaces 的更多一般信息,请查看我们的 DigitalOcean Spaces 简介和我们的 Spaces 性能最佳实践指南。