Help us learn about your current experience with the documentation. Take the survey.

上传文件管理

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

上传文件指所有可以作为单个文件发送到 GitLab 的用户数据。例如,头像和评论附件都属于上传文件。上传文件是 GitLab 功能不可或缺的一部分,因此无法禁用。

添加到评论或描述中的附件,在其所属的项目或组被删除时才会被删除。即使上传附件的评论或资源(例如议题、合并请求、史诗)被删除,这些附件仍会保留在文件存储中。

使用本地存储

这是默认配置。要更改上传文件的本地存储位置,请根据您的安装方法,按照本节中的步骤操作:

出于历史原因,整个实例的上传文件(例如 favicon)都存储在一个基础目录中,该目录默认为 uploads/-/system。强烈不建议在现有的 GitLab 安装中更改此基础目录。

对于 Linux 包安装:

上传文件默认存储在 /var/opt/gitlab/gitlab-rails/uploads 目录下。

  1. 若要更改存储路径,例如更改为 /mnt/storage/uploads,请编辑 /etc/gitlab/gitlab.rb 文件并添加以下行:

    gitlab_rails['uploads_directory'] = "/mnt/storage/uploads"

    此设置仅在您未更改 gitlab_rails['uploads_storage_path'] 目录时生效。

  2. 保存文件并重新配置 GitLab以使更改生效。

对于自行编译安装:

上传文件默认存储在 /home/git/gitlab/public/uploads 目录下。

  1. 若要更改存储路径,例如更改为 /mnt/storage/uploads,请编辑 /home/git/gitlab/config/gitlab.yml 文件并添加或修改以下行:

    uploads:
      storage_path: /mnt/storage
      base_dir: uploads
  2. 保存文件并重启 GitLab以使更改生效。

使用对象存储

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

如果您不想使用安装 GitLab 的本地磁盘来存储上传文件,可以改用对象存储服务提供商,例如 AWS S3。此配置依赖于已预先配置的有效 AWS 凭证。

了解更多关于在 GitLab 中使用对象存储的信息

对象存储设置

本节描述了特定于存储的配置格式。您应该改用统一的对象存储设置

对于自行编译安装,以下设置嵌套在 uploads:object_store: 下。对于 Linux 包安装,这些设置以 uploads_object_store_ 为前缀。

设置 描述 默认值
enabled 启用/禁用对象存储 false
remote_directory 存储上传文件的存储桶名称
proxy_download 设置为 true 以启用代理所有文件服务。该选项允许客户端直接从远程存储下载文件,而非通过 GitLab 代理所有数据,从而可以减少出口流量。 false
connection 下面描述的各种连接选项

连接设置

请参阅不同提供商可用的连接设置

对于 Linux 包安装:

上传文件默认存储在 /var/opt/gitlab/gitlab-rails/uploads 目录下。

  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
    }
  2. 保存文件并重新配置 GitLab以使更改生效。

  3. 使用 gitlab:uploads:migrate:all Rake 任务 将所有现有的本地上传文件迁移到对象存储。

对于自行编译安装:

上传文件默认存储在 /home/git/gitlab/public/uploads 目录下。

  1. 编辑 /home/git/gitlab/config/gitlab.yml 文件,添加或修改以下行,确保使用适用于您的提供商的相应设置

    uploads:
      object_store:
        enabled: true
        remote_directory: "uploads" # The bucket name
        connection: # The lines in this block depend on your provider
          provider: AWS
          aws_access_key_id: AWS_ACCESS_KEY_ID
          aws_secret_access_key: AWS_SECRET_ACCESS_KEY
          region: eu-central-1
  2. 保存文件并重启 GitLab以使更改生效。

  3. 使用 gitlab:uploads:migrate:all Rake 任务 将所有现有的本地上传文件迁移到对象存储。