如何在 Ubuntu 20.04 上安装和配置 GitLab
GitLab 是一个开源 DevOps 生命周期工具,用于托管和管理 Git 存储库。它是用 Ruby 编写的,提供了许多功能,包括 wiki、问题管理、代码审查、监控以及持续集成和部署。您可以将其托管在您自己的基础设施中,并为您的开发团队部署内部存储库。 GitLab 提供三个版本:社区版 (CE)、企业版 (EE) 和 GitLab 托管版本。
在本教程中,我们将向您展示如何在 Ubuntu 20.04 服务器上安装 GitLab CE。
先决条件
- 运行 Ubuntu 20.04 的服务器。
- 您的 VPS 指向的有效域名。
- 您的服务器上设置了 root 密码。
入门
首先,您需要将系统软件包更新到最新版本。您可以使用以下命令更新它们:
apt-get update -y
apt-get upgrade -y
系统更新后,使用以下命令安装其他所需的软件包:
apt-get install apt-transport-https gnupg2 curl -y
安装所有必需的软件包后,您可以继续下一步。
安装 GitLab CE
默认情况下,GitLab 在 Ubuntu 20.04 默认存储库中不可用。因此,您需要在系统中添加 GitLab 官方存储库。
首先,使用以下命令下载并添加 GitLab GPG 密钥:
curl -sL https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | apt-key add -
接下来,使用以下命令在 APT 中添加 GitLab 存储库:
nano /etc/apt/sources.list.d/gitlab.list
添加以下行:
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main
完成后保存并关闭文件。然后,使用以下命令更新存储库并安装 GitLab CE:
apt-get update -y
apt-get install gitlab-ce -y
成功安装 GitLab 后,您应该得到以下输出:
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
此时,GitLab 已安装在您的系统中。您现在可以继续下一步。
配置 GitLab
接下来,您需要定义 GitLab 的 URL。您可以在 /etc/gitlab/gitlab.rb 文件中定义它。
nano /etc/gitlab/gitlab.rb
将以下行更改为您的有效主机名或域名:
external_url 'http://gitlab.linuxbuz.com'
保存并关闭文件。然后,通过运行以下命令重新配置 GitLab:
gitlab-ctl reconfigure
成功配置 GitLab 后,您应该获得以下输出:
Recipe: gitlab::puma
* runit_service[puma] action restart (up to date)
* runit_service[puma] action restart (up to date)
Recipe: gitlab::sidekiq-cluster
* runit_service[sidekiq] action restart (up to date)
Recipe: gitlab::gitlab-rails
* execute[clear the gitlab-rails cache] action run
- execute /opt/gitlab/bin/gitlab-rake cache:clear
Recipe: nginx::enable
* runit_service[nginx] action restart (up to date)
Recipe: monitoring::grafana
* runit_service[grafana] action restart (up to date)
Running handlers:
Running handlers complete
Chef Client finished, 12/767 resources updated in 01 minutes 20 seconds
gitlab Reconfigured!
您现在可以使用以下命令检查 GitLab 的状态:
gitlab-ctl status
您应该得到以下输出:
down: alertmanager: 1s, normally up, want up; run: log: (pid 12973) 142s
run: gitaly: (pid 14216) 17s; run: log: (pid 12352) 286s
run: gitlab-exporter: (pid 14165) 19s; run: log: (pid 12885) 161s
run: gitlab-workhorse: (pid 14152) 19s; run: log: (pid 12767) 185s
run: grafana: (pid 14252) 15s; run: log: (pid 13855) 54s
run: logrotate: (pid 12818) 174s; run: log: (pid 12826) 173s
run: nginx: (pid 12798) 180s; run: log: (pid 12807) 179s
run: node-exporter: (pid 14160) 19s; run: log: (pid 12867) 167s
run: postgres-exporter: (pid 14246) 15s; run: log: (pid 13082) 130s
run: postgresql: (pid 12515) 280s; run: log: (pid 12532) 277s
run: prometheus: (pid 14183) 18s; run: log: (pid 12931) 149s
run: puma: (pid 12718) 199s; run: log: (pid 12727) 196s
run: redis: (pid 12309) 293s; run: log: (pid 12318) 292s
run: redis-exporter: (pid 14176) 18s; run: log: (pid 12908) 154s
run: sidekiq: (pid 12737) 193s; run: log: (pid 12749) 190s
使用 Let's Encrypt 保护 GitLab
至此,GitLab 已安装并配置完毕。接下来,建议使用 Let's Encrypt SSL 保护您的 GitLab 实例。
首先,使用以下命令安装 Let's Encrypt 客户端工具:
apt-get install letsencrypt -y
安装后,编辑 /etc/gitlab/gitlab.rb 文件并启用 Let's Encrypt。
nano /etc/gitlab/gitlab.rb
更改以下行:
external_url 'https://gitlab.linuxbuz.com'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email ']
letsencrypt['auto_renew'] = true
完成后保存并关闭文件。然后,使用以下命令重新配置 GitLab:
gitlab-ctl reconfigure
一旦你完成了。您可以继续下一步。
访问 GitLab 界面
此时,GitLab 通过 Let's Encrypt 免费 SSL 进行保护。现在,打开 Web 浏览器并输入 URL https://gitlab.linuxbuz.com。您将被重定向到以下页面:
现在,设置您的新密码,然后单击更改您的密码按钮。您应该看到以下屏幕:
现在,提供您的 root 用户名和密码,然后单击登录登录按钮。您应该看到以下屏幕:
禁用公共注册
默认情况下,GitLab 允许任何人使用 GitLab URL 注册帐户。如果您想托管公共项目,此设置非常有用。但是,如果您想将 GitLab 用于内部项目,建议禁用公共注册。
在 GitLab 仪表板上,单击管理区域图标。您应该看到以下屏幕:
现在,单击左侧窗格中的设置。您应该看到以下屏幕:
接下来,向下滚动到注册限制并单击展开按钮。取消选中“启用注册”框,并在完成后单击“保存更改”。
现在,从 GitLab 注销并再次访问 GitLab。您应该看到以下屏幕,其中公共注册被禁用:
验证 GitLab 功能
至此,GitLab 已安装并配置完毕。接下来,从 GitLab 仪表板创建一个新项目。
在 GitLab 仪表板上,单击项目按钮。您应该看到以下屏幕:
现在,单击创建项目按钮。您应该看到以下屏幕:
提供您的项目名称、URL、描述、可见性级别,然后单击创建项目按钮。您应该看到以下屏幕:
接下来,转到远程系统并使用以下命令配置 Git:
git config --global user.name "Hitesh Jethva"
git config --global user.email "[email "
接下来,使用以下命令克隆项目的存储库:
git clone https://gitlab.linuxbuz.com/root/project1.git
系统会要求您提供 GitLab 用户名和密码,如下所示:
Cloning into 'project1'...
Username for 'https://gitlab.linuxbuz.com': root
Password for 'https://[email ':
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
接下来,将目录更改为您的项目并创建 README.md 文件:
cd project1
echo "This is my first file" > README.md
接下来,将 README.md 文件添加到存储库并使用以下命令提交更改:
git add README.md
git commit -m "add README"
您应该看到以下输出:
[master (root-commit) ae4d108] add README
1 file changed, 1 insertion(+)
create mode 100644 README.md
接下来,使用以下命令将文件推送到远程存储库:
git push -u origin master
提供您的 GitLab 用户名和密码以将文件推送到远程存储库:
Username for 'https://gitlab.linuxbuz.com': root
Password for 'https://[email ':
Counting objects: 3, done.
Writing objects: 100% (3/3), 237 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://gitlab.linuxbuz.com/root/project1.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
现在,打开 GitLab 仪表板并单击项目按钮。您应该在以下屏幕中看到 README.md 文件:
结论
在上面的指南中,您学习了如何在 Ubuntu 20.04 上安装 GitLab 并使用 Let's Encrypt SSL 保护它。您还学习了如何使用 GitLab 执行基本的 Git 操作。我希望您现在可以在您的开发环境中部署 GitLab。如果您有任何疑问,请随时问我。