上传管理

注意: uploads 表示可以作为单个文件发送到GitLab的所有用户数据。 例如,头像和附注的附件是上传的。 上传是GitLab功能的组成部分,因此无法禁用。

使用本地存储

注意: 这是默认配置

要更改本地存储 uploads 的位置,请按照以下步骤操作。


在Omnibus安装中:

注意: 由于历史原因,uploads 存储在本地目录中,默认情况下为 uploads/-/system 。 强烈建议不要在现有GitLab安装上更改此配置选项。

上传内容默认存储在/var/opt/gitlab/gitlab-rails/uploads/-/system

  1. 要更改存储路径,例如 /mnt/storage/uploads ,编辑 /etc/gitlab/gitlab.rb 并添加以下行:
gitlab_rails['uploads_storage_path'] = "/mnt/storage/"
gitlab_rails['uploads_base_dir'] = "uploads"
  1. 保存文件并重新配置GitLab以使更改生效。

使用对象存储

笔记:

  • 在 GitLab企业版Premium 10.5中 引入 。
  • 从版本11.1开始,我们支持direct_upload到S3。

如果您不想使用安装GitLab的本地磁盘来存储uploads,则可以使用AWS S3等对象存储提供程序。 此配置依赖于已配置的有效AWS凭据。

对象存储设置

对于源安装,以下设置嵌套在 uploads: 下的 object_store: 。 在omnibus安装上,它们以前缀为前缀 uploads_object_store_

设置

描述

默认

enabled

启用/禁用对象存储

false

remote_directory

存储uploads的存储桶名称

direct_upload

设置为true以启用uploads的直接uploads,而无需本地共享存储。 一旦我们决定仅为所有文件支持单个存储,则可以删除选项。

false

background_upload

设置为false以禁用自动uploads。 一旦上传直接到S3,可以删除选项

true

proxy_download

设置为true以启用代理服务的所有文件。 选项允许减少出口流量,因为这允许客户端直接从远程存储下载而不是代理所有数据

false

connection

各种连接选项如下所述

S3兼容连接设置

连接设置与 Fog 提供的设置相匹配 ,如下所示:

设置

描述

默认

provider

始终 AWS 用于兼容的主机

AWS

aws_access_key_id

AWS凭证或兼容

aws_secret_access_key

AWS凭证或兼容

aws_signature_version

要使用的AWS签名版本。 2或4是有效选项。 数字海洋空间和其他提供商可能需要2。

4

region

AWS区域

美国 - 东 - 1

host

S3兼容主机,用于不使用AWS时,例如 localhoststorage.example.com

s3.amazonaws.com

endpoint

通过输入诸如的URL, 可以在配置诸如 Minio 的S3兼容服务时使用 http://127.0.0.1:9000

(可选的)

path_style

设置为true以使用 host/bucket_name/object 样式路径而不是 bucket_name.host/object 。 对AWS S3保留为false


use_iam_profile

设置为true以使用IAM配置文件而不是访问密钥


在Omnibus安装中:

上传内容默认存储在 /var/opt/gitlab/gitlab-rails/public/uploads/-/system

  1. 通过替换/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
}
  1. 保存文件并 重新配置GitLab 以使更改生效。
  2. 将任何现有本地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]"