上传管理
注意: 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_
。
设置 | 描述 | 默认 |
---|---|---|
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时,例如 localhost 或 storage.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
。
-
通过替换
/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]"