在 ECS 实例上部署 GitLab,可获得自主可控的代码托管和 CI/CD 平台,支持私有化访问与数据本地化存储。本文介绍在 Linux 系统的 ECS 实例上通过安装包、Docker 镜像或 ECS 扩展程序部署 GitLab 的完整步骤。
准备工作
请确保已创建一台 ECS 实例,并且 ECS 实例必须满足以下条件:
操作系统:Linux 系统。具体支持的系统说明,请参见 Supported OSes。
-
实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网。
已在安全组内添加入方向规则放行 80、443、22 端口。具体操作,请参见添加安全组规则。
实例规格:安装 GitLab 所需的实例规格与项目规模和团队规模有关,建议最小规格为 4 vCPU、8 GiB。更多信息,请参见 Installation system requirements 和 Running GitLab in a memory-constrained environment。
重要低于 4 vCPU、8 GiB 会因规格过小,导致长时间处于 Installing 状态或安装失败。请升级规格以后再安装,升级规格操作,请参见升降配方式概述。
安装 GitLab
GitLab 版本包括企业版(EE)、社区版(CE)和极狐版(JH)。极狐 GitLab 是在中国内地与中国香港、中国澳门发行的企业级 GitLab 版本,服务器位于中国境内,访问速度更快。版本对比详情参见 极狐 GitLab 安装与版本说明。
方式一:使用安装包
社区版本和极狐版本在安装命令和支持的操作系统上存在差异。
方式二:使用 Docker 镜像
方式三:使用 ECS 扩展程序
ECS扩展程序是用于增强和扩展ECS实例功能的插件。Alibaba Cloud Linux 3系统会安装极狐GitLab,其他系统会安装GitLab社区版。
进入 GitLab 管理页面
在浏览器输入网址。访问网址:
http://${ECS的公网IP}。重要如果使用 Docker 镜像方式安装,并将 HTTP 的默认端口 80 映射成非标准端口,请在访问链接后添加该端口号。
首次登录使用用户名
root,通过如下方式获取密码。获取 GitLab 的登录密码。在 ECS 实例执行以下命令:
Linux 安装包方式:
sudo cat /etc/gitlab/initial_root_passwordDocker 安装方式:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
回显信息类似如下所示,在
Password字段后即为 GitLab 的初始登录密码。
重要出于安全原因,24 小时后该文件会被自动删除。建议安装成功首次登录后立即修改 GitLab 的初始密码,操作步骤参见 reset_user_password。

进入 Admin 页面。

在 Users>Pending approval 页面审批新用户的申请。其他操作例如管理项目、管理用户等,请参见 admin_area。

本示例介绍将文件上传到 GitLab 仓库的步骤。如需了解更多 GitLab 操作(例如常用命令、数据备份、配置选项、用户管理、与其他服务集成、故障排除等),请参见 极狐 GitLab 和 GitLab 社区版。
注册用户并设置免密访问
访问GitLab页面。单击Sign in按钮下的Register now,创建一个新用户。等待GitLab管理员通过申请后,使用新创建的用户登录GitLab。
在本地生成密钥对文件。
ssh-keygen生成密钥对的过程中,系统会提示输入密钥对存放目录(默认为当前用户目录下的
.ssh/id_rsa,例如/home/test/.ssh/id_rsa)和密钥对密码,可以手动输入,也可以按 Enter 保持默认。回显信息类似如下所示。

查看并复制公钥文件
id_rsa.pub中的内容,便于后续步骤使用。cat ~/.ssh/id_rsa.pub回显信息类似如下所示。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQVwWjF3KXmI549jDI0fuCgl+syJjjn55iMUDRRiCd/B+9TwUda3l9WXH5i7RU53QGRCsDVFZxixLOlmXr9E3VSqkf8xXBnHs/5E2z5PIOCN0nxfB9xeA1db/QxPwK4gkHisep+eNHRn9x+DpCYDoSoYQN0nBg+H3uqfOqL42mJ+tqSfkyqbhjBf1kjtDTlBfVCWtI0siu7owm+c65+8KNyPlj5/0AyJ4Aqk1OX2jv+YE4nTipucn7rHwWuowasPU86l+uBsLNwOSb+H7loJvQyhEINX2FS1KnpRU+ld20t07n+N3ErfX5xBAGfxXpoN9BKKSP+RT7rvTeXTVE**** test@iZuf63zs0dn0qccsisy****添加 SSH key。将获取的公钥添加到 GitLab 账户中,以便实现免密身份验证。
单击页面右上角的头像,然后单击 Edit profile。

在左侧导航栏,单击 SSH Keys。将公钥文件
id_rsa.pub中的内容粘贴到Key所在的文本框中,然后单击 Add key。
SSH Key 添加完成后,如下图所示。

创建项目并托管代码
创建新项目
在 GitLab 的主页中,单击页面右侧的 New Project 按钮,然后单击 Create blank project。

单击 Create blank project,设置 Project name 和 Project URL,然后单击页面底部的 Create project。本文以 mywork 项目为例说明。

回到项目页面,复制 SSH 克隆地址,该地址在克隆时使用。

克隆远程仓库
sudo yum install git在本地配置使用 Git 仓库的人员信息。
配置使用 Git 仓库的用户名。
git config --global user.name "testname"配置使用 Git 仓库的人员邮箱。
git config --global user.email "abc@example.com"
克隆已创建的项目到本地。
输入
git clone并粘贴 SSH 克隆地址,Git 会自动创建一个以仓库名称命名的文件夹并下载文件。git clone ${SSH URL}如果使用 Docker 镜像安装,需要在链接中添加
ssh://和 docker run 命令中的映射端口,例如:重要如果不想修改 SSH 链接,需要修改
gitlab_rails['gitlab_shell_ssh_port']参数,以便在 GitLab 页面中正确显示,请参见使用 Docker 方式启动时,提示 22 端口被占用。git clone ssh://git@{IP域名}:{SSH端口}/root/mywork
进入到项目目录。
cd mywork/查看当前分支的名称,默认为主分支
main。git branch
新建分支并修改文件
在本地创建新的分支,便于更改文件。
新建一个分支
example。git checkout -b example新建需要上传到 GitLab 中的目标文件
test.txt,并写入内容Hello World!。echo "Hello world!" > test.txt
提交并推送更改
将新分支 example 推送到远程仓库保存。
将
test.txt文件添加到暂存区。git add test.txt确认变更的文件。
git status获得以下输出:
On branch example Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: test.txt提交暂存文件
test.txt。git commit -m "测试用"example分支目前只在本地可用。将分支推送到 GitLab 仓库,便于其他人访问。git push origin example推送到 GitLab 仓库后,其他用户也可以查看新建的分支。

合并更改
将本地example 分支的更改合并到主分支 main,然后将合并后的主分支 main推送到远程仓库。
切换到主分支
main。git checkout main将新建分支
example合并到主分支main。git merge example将合并后的主分支推送到 GitLab 仓库。
git push变更已同步到 GitLab 仓库的主分支
main中。






















