云端储存空间¶
云存储集成可将 聊天记录 和电子邮件附件存储在 Google Cloud 或 Microsoft Azure 平台上,而不是数据库服务器中。
该模块可用于防止大型文件上传到数据库服务器或从数据库服务器下载,或在数据库需要更多数据存储空间时使用。
Note
Odoo 生成的文件(例如销售订单)以及文件管理/签署应用的文件始终存储在数据库服务器上。
数据库的存储上限取决于其托管方案:
Odoo Online:100 GB
Odoo.sh:
共享托管:512 GB
专用托管:4 TB
本地部署:受现有基础设施的限制。
Google Cloud云¶
首先,注册并登录到 Google Cloud 。
服务账号¶
云存储存储桶¶
Odoo 配置¶
安装 Cloud Storage Google 模块。
打开 设置 应用,并在导航侧边栏中选择 云存储 。
将 新附件的云存储提供商 选择为 Google Cloud Storage 。
在 Google 存储桶名称 中输入 先前设置 的名称。
点击 Google 服务账号密钥 旁的 上传文件 ,并选择 已下载的 JSON 文件 。
设置存储在 Google Cloud 上的附件的 最小文件大小(字节) 。
Microsoft Azure¶
首先,注册并登录 Microsoft Azure 。
应用注册¶
在 Microsoft Azure 门户中搜索 应用注册 服务并打开它。
点击 新注册 ,输入应用 名称 ,在 支持的账户类型 下选择 任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户) ,然后点击 注册 。
记下 应用程序(客户端)ID 和 目录(租户)ID ,因为 配置 Odoo 时会用到。
点击 客户端凭据 旁的 添加证书或机密 ,点击 新客户端机密 ,然后点击 添加 。
Important
出于安全原因,请将 过期 字段保留为
180 天(6 个月)或选择更短的过期时间间隔。在机密过期之前,需要添加新的客户端机密,并用新值更新 Odoo 的配置 。复制客户端机密的 值 并安全保管。配置 Odoo 时会用到它。
存储账户¶
搜索 存储账户 服务,打开它,然后点击 创建 。
点击 资源组 字段下方的 新建 ,输入 名称 ,然后点击 确定 。
输入唯一的 存储账户名称 并记录下来,因为 配置 Odoo 时会用到。
按需配置存储账户,完成后点击 审阅 + 创建 ,然后点击 创建 。
容器¶
打开存储账户资源(例如通过搜索其名称),然后在导航侧边栏的 数据存储 下选择 容器 。
输入 名称 ,记录下来,因为 配置 Odoo 时会用到,然后点击 创建 。
资源共享¶
在存储账户导航侧边栏的 设置 下选择 资源共享(CORS) 。
创建第一条 CORS Blob 服务规则:
允许的来源 :
*允许的方法 :
GET允许的标头 :
Content-Type公开的标头 :
Content-Type最长保留时间 :
0
创建第二条 CORS Blob 服务规则并点击 保存 :
允许的来源 :
*允许的方法 :
PUT允许的标头 :
content-type,x-ms-blob-type公开的标头 :
content-type,x-ms-blob-type最长保留时间 :
0
角色分配¶
自定义角色¶
Note
此步骤是 可选的 。不过,移除 delete 权限可以防止任何能够访问云存储凭据的人删除文件。
打开订阅资源(例如通过搜索其名称),在导航侧边栏中选择 访问控制(IAM) ,点击 添加 并选择 添加自定义角色 。
选择 JSON 选项卡并点击 编辑 。复制下面的代码,在
assignableScopes下添加您的subscription-id,并按需更改roleName(Custom role),然后粘贴并点击 保存 。
{
"properties": {
"roleName": "Custom role",
"description": "",
"assignableScopes": [
"/subscriptions/subscription-id"
],
"permissions": [
{
"actions": ["Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"],
"notActions": [],
"dataActions": ["Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read", "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"],
"notDataActions": []
}
]
}
}