如何在Ubuntu 18.04 LTS上使用Docker安装Gitlab服务器
如何在Ubuntu 18.04 LTS上使用Docker安装Gitlab服务器
Gitlab CE或Community Edition是用于托管Git存储库的开源应用程序。自托管Git存储库可让您完全控制数据,同时为您和您的团队成员提供易于使用的界面。
在本指南中,我们将介绍如何使用Gitlab的免费产品Community Edition安装Git存储库。如果您需要合并批准,路线图,项目组合管理,灾难恢复,容器扫描等高级功能,则可以选择升级到企业版。
先决条件
- 基于Ubuntu 18.04的服务器,具有非root用户sudo用户。
- 根据Gitlab CE的指定硬件要求(至少要支持100个用户),您需要至少具有2个CPU内核和8GB RAM的VPS。即使可以用交易所空间代替RAM,也不建议这样做,因为应用程序运行速度会变慢。
第1步-安装依赖项
在安装Gitlab之前,我们需要确保服务器具有某些软件,而Gitlab必须正常运行。运行以下命令以安装依赖项。
$sudo apt update
$sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y
上面的某些软件可能已为您预装。
第2步-更改系统的SSH端口
Gitlab将使用端口22通过SSH推送存储库。您服务器的SSH也正在运行,这将产生冲突。有两种解决方法。您可以更改用于连接到系统的SSH端口,也可以更改Gitlab用于SSH的端口。在本教程中,我们将更改服务器本身的SSH端口。
为此,我们需要编辑/ etc / ssh / sshd_config文件。在nano文本编辑器中打开文件。
$sudo nano /etc/ssh/sshd_config
找到以下行,并将22更改为6622,并删除其前面的#。您可以选择任何所需的端口。
# Port 22
按Ctrl + X关闭文件,然后按Y保存更改。
重新启动SSH服务。
$sudo systemctl restart sshd
关闭当前的SSH会话,并使用端口6622创建一个新会话,然后再次连接到服务器。
$ssh (email protected) -p 6622
步骤3-配置防火墙
在上一步中,我们安装了ufw(不复杂的防火墙)。在继续安装Gitlab之前,我们需要对其进行配置。
启用SSH和我们刚刚创建的端口,以免被锁定。
$sudo ufw allow OpenSSH
$sudo ufw allow 6622
启用ufw防火墙。
$sudo ufw enable
我们还需要启用http和https才能使Gitlab运行。
$sudo ufw allow http
$sudo ufw allow https
检查防火墙的状态。
$sudo ufw status
您应该看到类似以下的输出。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
6622 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
6622 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
第4步-安装Docker
将Docker的GPG密钥添加到您的系统。
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证下载密钥的指纹。
$sudo apt-key fingerprint 0EBFCD88
您应该看到类似以下的输出。
pub rsa4096 2017-02-22 (SCEA)
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid ( unknown) Docker Release (CE deb) <(email protected)>
sub rsa4096 2017-02-22 (S)
添加Docker存储库。
$sudo add-apt-repository "deb (arch=amd64) https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
更新您的软件包数据库。
$sudo apt update
安装Docker-CE。 CE是Docker的社区版。
$sudo apt install docker-ce -y
现在应该安装Docker。检查它是否正在运行。
$sudo systemctl status docker
输出应类似于以下内容。
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
Docs: https://docs.docker.com
Main PID: 19128 (dockerd)
Tasks: 12
CGroup: /system.slice/docker.service
??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
按q退出。
将您的受限Linux用户帐户添加到docker组,以便您无需sudo即可运行docker。
sudo usermod -aG docker $USER
$USER变量将选择当前登录的用户并将其添加到docker组。如果您当前尚未使用该用户名登录,请用实际的用户名替换$USER。
切换到我们刚刚添加的用户。即使您已经登录,您仍然需要再次切换到它以重新加载权限。
$su - ${USER}
通过运行内置的“ Hello World”程序,检查一切是否正常。
$docker run hello-world
您应该看到以下输出,它将告诉Docker已安装并正常工作。
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
步骤5-安装Docker Compose
可以跳过此步骤并继续,但是安装Docker Compose将使运行Gitlab更加容易,特别是如果您想在多台服务器上进行此操作。
$sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
在撰写本教程时,1.24.1是Docker Compose的当前稳定版本。您可以从其Github页面上检查最新版本。
将可执行权限应用于docker compose二进制文件。
$sudo chmod +x /usr/local/bin/docker-compose
将命令完成添加到Docker Compose。
$sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
验证安装是否成功。
$docker-compose --version
它将输出以下输出。
docker-compose version 1.24.1, build 4667896b
第6步-安装Gitlab
从Dockerhub下载Gitlab的Docker映像。该映像包含运行Docker所需的一切-nginx,PostgreSQL,Redis等。运行以下命令以下载映像。
$docker pull gitlab/gitlab-ee:latest
即使本教程是关于安装社区版的,但我们仍将获取Gitlab的企业版图像。这是因为企业版的行为与社区版完全一样,除非您通过输入许可证升级到社区版。将Community Edition安装升级到Enterprise Edition会带来更多麻烦。
下载完整图像将需要一些时间。作业完成后,您可以运行以下命令来检查系统上当前的所有映像。
$docker images
输出应类似于以下内容。
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ee latest 4bacb2356d28 4 days ago 1.87GB
hello-world latest fce289e99eb9 9 months ago 1.84kB
第7步-运行Gitlab
现在,我们可以通过单个命令提供所有选项来立即运行Gitlab容器,但这意味着每次您需要运行容器时,都需要提供这些变量。 Docker Compose使此过程变得更容易,因为它将允许您将配置保存到.yml文件中,然后将其用于运行和启动容器。
创建一个docker-compose.yml。
$nano docker-compose.yml
粘贴以下代码。
web:
image: 'gitlab/gitlab-ee:latest'
container_name: 'gitlab-howtoforge-tutorial'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
gitlab_rails('smtp_enable') = true
gitlab_rails('smtp_address') = "smtp.gmail.com"
gitlab_rails('smtp_port') = 587
gitlab_rails('smtp_user_name') = "(email protected)"
gitlab_rails('smtp_password') = "app-password"
gitlab_rails('smtp_domain') = "smtp.gmail.com"
gitlab_rails('smtp_authentication') = "login"
gitlab_rails('smtp_enable_starttls_auto') = true
gitlab_rails('smtp_tls') = false
gitlab_rails('smtp_openssl_verify_mode') = 'peer'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
- '587:587'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
让我们看看上面每个选项的含义。
- 映像是指Dockerhub上Gitlab的Docker映像的位置。
- container_name允许您在Docker容器上应用标签,以在Docker网络中引用容器时使用。
- 主机名定义了容器的内部主机名,在我们的例子中,是安装Gitlab的URL。
- restart指定容器的重启策略。我们将其设置为始终,这意味着容器退出后将自动重新启动。
- 环境提供变量GITLAB_OMNIBUS_CONFIG,它允许您输入任何Gitlab配置设置。在这种情况下,我们提供了Gitlab应该使用的外部URL。
- 成交量定义了服务器上安装的用于存储持久性数据的目录。这三个成交量/目录存储应用程序数据,日志文件和配置文件。分号左边的值是服务器上的本地目录,右边的值是容器内的目录。
- publish告诉容器将端口或一系列端口发布到主机。由于Gitlab需要端口22(SSH),80(HTTP),443(HTTPS)和587(SMPT-MSA),因此我们在此处指定了它们。如果您希望Gitlab在服务器上使用非标准端口(可能是因为它不可用),则应首先提供主机端口,然后再提供容器端口。例如,由于您的服务器已经在使用SSH(22)端口,您可以告诉Gitlab通过另一个端口(例如3333)使用SSH。然后,您可以将上述文件中的22:22更改为3333:22。您还需要在上面的GITLAB_OMNIBUS_CONFIG下添加gitlab_rails('gitlab_shell_ssh_port')= 3333行。
- external_url是指将要安装Gitlab的域。我们选择了https,它将自动为我们安装“让我们加密货币SSL”证书。
- 我们还添加了其他配置,以将Gitlab配置为使用Gmail发送邮件。您可以使用任何第三方SMTP邮件服务。 Gitlab文档维护了有关如何使用它配置各种SMTP服务的详细指南。
确保与docker-compose.yml位于同一目录中。运行以下命令以启动Gitlab。
$docker-compose up -d
您将看到类似以下的内容。
Creating gitlab-howtoforge-tutorial ... done
您可能需要花费几分钟,才能通过浏览器访问Gitlab。您可以通过以下命令找到有关启动过程的更多信息。
$docker logs -f gitlab-howtoforge-tutorial
要退出日志监视过程,请按Ctrl +C。
在浏览器中加载Gitlab网站。如果您在启动容器后不久尝试加载它,则会收到502错误。如果发生这种情况,请等待几分钟,然后重试。
如果一切正常,那么您将在浏览器中看到以下页面。
步骤8-配置Gitlab
为Gitlab的管理员密码提供一个密码。接下来,您将被带到登录屏幕。使用root作为您刚选择登录的用户名和密码。
配置SMTP
我们需要先启用SMTP设置,
配置Gitlab配置文件
单击右上角的用户图标以调出下拉菜单并选择设置。
您将被带到“个人资料设置”页面。在此处添加您的姓名和电子邮件。您需要确认您的电子邮件地址以进行更新。如果需要,还可以在此处添加有关您自己的更多信息。
完成后,单击“更新配置文件设置”。
变更使用者名称
接下来,我们需要将用户名从root更改为其他名称,因为root是一种非常常见的可猜测用户名。点击左侧边栏中的帐户。
将用户更改为您想要保留的任何用户名。单击更新用户名以完成。您还应该在此处启用两因素身份验证,以提高安全性。
限制公开注册
默认情况下,Gitlab安装允许任何人注册。如果您不希望这样做,则应将其禁用。单击顶部栏中的扳手查找图标以访问管理区域。
要调整设置,请单击左侧边栏中的设置。
在这里,向下滚动到“注册限制”,然后单击“扩展”按钮。取消选中“启用注册”框,然后单击“完成后保存更改”。
您仍然可以通过管理界面添加新用户。
添加SSH密钥
最后一步是添加我们的SSH密钥。如果您具有SSH密钥,则可以跳过以下命令。如果没有,则可以使用以下命令创建一个。
$ssh-keygen
该命令对于Mac OS,Linux和Windows上的Git Bash / WSL是通用的。接受默认值,并将密码短语字段留空。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 (email protected)
The key's randomart image is:
+---(RSA 2048)----+
|+*OB=*O=.. |
|B+o+o+oo+ |
|oo.+. ...= . |
|. + .. .o+ |
| o *. S . |
| =Eo . o |
| . o o o |
| . o |
| |
+----(SHA256)-----+
您可以通过以下命令显示您的公钥
$cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp (email protected)
返回到“个人资料”的“设置”区域,然后从边栏中访问SSH密钥。
将SSH密钥粘贴到提供的框中,然后单击“添加密货币钥”继续。
现在,您无需提供Gitlab凭据即可创建并提交到存储库。
第9步-创建您的第一个项目
Gitlab中的每个存储库都属于一个项目。一个项目包括一个存储库,问题跟踪器,合并请求,Wiki,持续集成和持续交付(CI / CD)管道以及许多其他功能。
要创建第一个存储库,请单击“创建项目”。
您将被带到“新项目”页面。输入项目名称。您可以将项目项目更改为其他内容。如果需要,请输入项目的描述,并根据需要更改项目的可见性。您可以使用自述文件初始化存储库。完成后,单击创建项目。
仅带一个空白README.md文件,您将被带到存储库页面。
现在我们的存储库已启用,让我们尝试从命令行添加更改日志。
在计算机上输入以下命令以创建CHANGELOG文件并将其推回到存储库中。确保您的计算机上安装了Git。
克隆存储库。您可以使用SSH或HTTPS进行克隆。
使用SSH克隆。
$git clone (email protected):user/howtoforge-test.git
或使用HTTPS克隆。
$git clone https://gitlab.example.com/user/howtoforge-test.git
输入其余命令以创建并推送CHANGELOG。
$cd howtoforge-test
$touch CHANGELOG # Or create the file in your editor and enter a project description
$git add CHANGELOG
$git commit -m "add Changelog"
$git push -u origin master
步骤10-管理Gitlab容器
要查看所有正在运行的容器,请运行以下命令。
$docker-ps
要停止您的Gitlab容器,请运行以下命令。
$docker stop gitlab-howtoforge-tutorial
要重新启动容器,请使用以下命令。
$docker start gitlab-howtoforge-tutorial
万一您要删除容器,可以通过以下命令删除。
$docker container rm gitlab-howtoforge-tutorial
步骤11-升级Gitlab
如果要将Gitlab升级到最新版本,则需要停止并删除现有容器,提取最新映像,然后重新创建该容器。
$docker stop gitlab-howtoforge-tutorial
$docker rm gitlab-howtoforge-tutorial
$docker pull gitlab/gitlab-ee:latest
$docker-compose up -d
在您提出要求之前,即使您删除容器,您的数据也将是安全的。
这结束了我们有关使用Docker在Ubuntu 18.04服务器上设置Gitlab的教程。如有任何疑问,请在下面的评测中发布。