如何在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之前,我们需要对其进行配置。

启用S​​SH和我们刚刚创建的端口,以免被锁定。

$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错误。如果发生这种情况,请等待几分钟,然后重试。

如果一切正常,那么您将在浏览器中看到以下页面。

Gitlab登录

步骤8-配置Gitlab

为Gitlab的管理员密码提供一个密码。接下来,您将被带到登录屏幕。使用root作为您刚选择登录的用户名和密码。

登入

配置SMTP

我们需要先启用SMTP设置,

配置Gitlab配置文件

单击右上角的用户图标以调出下拉菜单并选择设置。

在Gitlab中配置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密钥粘贴到提供的框中,然后单击“添加密货币钥”继续。

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的教程。如有任何疑问,请在下面的评测中发布。

资讯来源:由0x资讯编译自HOWTOFORGE,版权归作者所有,未经许可,不得转载
你可能还喜欢