上传文件管理
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed
上传文件指所有可以作为单个文件发送到 GitLab 的用户数据。例如,头像和评论附件都属于上传文件。上传文件是 GitLab 功能不可或缺的一部分,因此无法禁用。
添加到评论或描述中的附件,仅在其所属的项目或组被删除时才会被删除。即使上传附件的评论或资源(例如议题、合并请求、史诗)被删除,这些附件仍会保留在文件存储中。
使用本地存储
这是默认配置。要更改上传文件的本地存储位置,请根据您的安装方法,按照本节中的步骤操作:
出于历史原因,整个实例的上传文件(例如 favicon)都存储在一个基础目录中,该目录默认为 uploads/-/system。强烈不建议在现有的 GitLab 安装中更改此基础目录。
对于 Linux 包安装:
上传文件默认存储在 /var/opt/gitlab/gitlab-rails/uploads 目录下。
-
若要更改存储路径,例如更改为
/mnt/storage/uploads,请编辑/etc/gitlab/gitlab.rb文件并添加以下行:gitlab_rails['uploads_directory'] = "/mnt/storage/uploads"此设置仅在您未更改
gitlab_rails['uploads_storage_path']目录时生效。 -
保存文件并重新配置 GitLab以使更改生效。
对于自行编译安装:
上传文件默认存储在 /home/git/gitlab/public/uploads 目录下。
-
若要更改存储路径,例如更改为
/mnt/storage/uploads,请编辑/home/git/gitlab/config/gitlab.yml文件并添加或修改以下行:uploads: storage_path: /mnt/storage base_dir: uploads -
保存文件并重启 GitLab以使更改生效。
使用对象存储
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed
如果您不想使用安装 GitLab 的本地磁盘来存储上传文件,可以改用对象存储服务提供商,例如 AWS S3。此配置依赖于已预先配置的有效 AWS 凭证。
对象存储设置
本节描述了特定于存储的配置格式。您应该改用统一的对象存储设置。
对于自行编译安装,以下设置嵌套在 uploads: 和 object_store: 下。对于 Linux 包安装,这些设置以 uploads_object_store_ 为前缀。
| 设置 | 描述 | 默认值 |
|---|---|---|
enabled |
启用/禁用对象存储 | false |
remote_directory |
存储上传文件的存储桶名称 | |
proxy_download |
设置为 true 以启用代理所有文件服务。该选项允许客户端直接从远程存储下载文件,而非通过 GitLab 代理所有数据,从而可以减少出口流量。 |
false |
connection |
下面描述的各种连接选项 |
连接设置
请参阅不同提供商可用的连接设置。
对于 Linux 包安装:
上传文件默认存储在 /var/opt/gitlab/gitlab-rails/uploads 目录下。
-
编辑
/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以使更改生效。
-
使用
gitlab:uploads:migrate:allRake 任务 将所有现有的本地上传文件迁移到对象存储。
对于自行编译安装:
上传文件默认存储在 /home/git/gitlab/public/uploads 目录下。
-
编辑
/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 -
保存文件并重启 GitLab以使更改生效。
-
使用
gitlab:uploads:migrate:allRake 任务 将所有现有的本地上传文件迁移到对象存储。