上传管理
注意: uploads 表示可以作为单个文件发送到GitLab的所有用户数据。 例如,头像和附注的附件是上传的。 上传是GitLab功能的组成部分,因此无法禁用。
使用本地存储
注意: 这是默认配置
要更改本地存储 uploads 的位置,请按照以下步骤操作。
在Omnibus安装中:
注意: 由于历史原因,uploads 存储在本地目录中,默认情况下为
uploads/-/system
。 强烈建议不要在现有GitLab安装上更改此配置选项。
上传内容默认存储在/var/opt/gitlab/gitlab-rails/uploads/-/system
。
- 要更改存储路径,例如
/mnt/storage/uploads
,编辑/etc/gitlab/gitlab.rb
并添加以下行:
gitlab_rails['uploads_storage_path'] = "/mnt/storage/"
gitlab_rails['uploads_base_dir'] = "uploads"
- 保存文件并重新配置GitLab以使更改生效。
使用对象存储
笔记:
- 在 GitLab企业版Premium 10.5中 引入 。
- 从版本11.1开始,我们支持direct_upload到S3。
如果您不想使用安装GitLab的本地磁盘来存储uploads,则可以使用AWS S3等对象存储提供程序。 此配置依赖于已配置的有效AWS凭据。
对象存储设置
对于源安装,以下设置嵌套在 uploads:
下的 object_store:
。 在omnibus安装上,它们以前缀为前缀 uploads_object_store_
。
设置 | 描述 | 默认 |
| 启用/禁用对象存储 |
|
| 存储uploads的存储桶名称 | |
| 设置为true以启用uploads的直接uploads,而无需本地共享存储。 一旦我们决定仅为所有文件支持单个存储,则可以删除选项。 |
|
| 设置为false以禁用自动uploads。 一旦上传直接到S3,可以删除选项 |
|
| 设置为true以启用代理服务的所有文件。 选项允许减少出口流量,因为这允许客户端直接从远程存储下载而不是代理所有数据 |
|
| 各种连接选项如下所述 |
S3兼容连接设置
连接设置与 Fog 提供的设置相匹配 ,如下所示:
设置 | 描述 | 默认 |
| 始终 | AWS |
| AWS凭证或兼容 | |
| AWS凭证或兼容 | |
| 要使用的AWS签名版本。 2或4是有效选项。 数字海洋空间和其他提供商可能需要2。 | 4 |
| AWS区域 | 美国 - 东 - 1 |
| S3兼容主机,用于不使用AWS时,例如 | |
| 通过输入诸如的URL, 可以在配置诸如 Minio 的S3兼容服务时使用 | (可选的) |
| 设置为true以使用 | 假 |
| 设置为true以使用IAM配置文件而不是访问密钥 | 假 |
在Omnibus安装中:
上传内容默认存储在 /var/opt/gitlab/gitlab-rails/public/uploads/-/system
。
- 通过替换
/etc/gitlab/gitlab.rb
中所需的值来 编辑 和添加以下行:
gitlab_rails['uploads_object_store_enabled'] = true
gitlab_rails['uploads_object_store_remote_directory'] = "uploads"
gitlab_rails['uploads_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-central-1',
'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY'
}
注意: 如果您使用的是AWS IAM配置文件,请确保省略AWS访问密钥和秘密访问密钥/值对。
gitlab_rails['uploads_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-central-1',
'use_iam_profile' => true
}
- 保存文件并 重新配置GitLab 以使更改生效。
- 将任何现有本地uploads迁移到对象存储:
注意: 这些任务符合
BATCH
环境变量以批量处理uploads(默认情况下为200)。 所有处理都将在后台工作中完成, 无需停机 。
# gitlab-rake gitlab:uploads:migrate[uploader_class, model_class, mount_point]
# Avatars
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Project, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Group, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, User, :avatar]"
# Attachments
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Note, :attachment]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :logo]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :header_logo]"
# Markdown
gitlab-rake "gitlab:uploads:migrate[FileUploader, Project]"
gitlab-rake "gitlab:uploads:migrate[PersonalFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[NamespaceFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[FileUploader, MergeRequest]"