如何在 Ubuntu 18.04 LTS 上使用 Docker 安装 Gitlab 服务器如何在 Ubuntu 18.04 LTS 上使用 Docker 安装 Gitlab 服务器如何在 Ubuntu 18.04 LTS 上使用 Docker 安装 Gitlab 服务器如何在 Ubuntu 18.04 LTS 上使用 Docker 安装 Gitlab 服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 LTS 上使用 Docker 安装 Gitlab 服务器

本教程适用于这些操作系统版本

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(仿生海狸)

在此页

  1. 先决条件
  2. 第 1 步 - 安装依赖项
  3. 第 2 步 - 更改您的系统 SSH 端口
  4. 第 3 步 - 配置防火墙
  5. 第 4 步 - 安装 Docker
  6. 第 5 步 - 安装 Docker Compose
  7. 第 6 步 - 安装 Gitlab
  8. 第 7 步 - 运行 Gitlab
  9. 第 8 步 - 配置 Gitlab
    1. 配置 SMTP
    2. 配置 Gitlab 配置文件
    3. 更改用户名
    4. 限制公开注册
    5. 添加 SSH 密钥

    Gitlab CE 或社区版是用于托管 Git 存储库的开源应用程序。自托管 Git 存储库可让您完全控制数据,同时为您和您的团队成员提供易于使用的界面。

    在本指南中,我们将介绍如何使用 Gitlabs 免费产品(社区版)安装 Git 存储库。如果您想要合并批准、路线图、投资组合管理、灾难恢复、容器扫描等高级功能,那么您可以选择升级到企业版。

    先决条件

    • 具有非根 sudo 用户的基于 Ubuntu 18.04 的服务器。
    • 根据 Gitlab CE 的指定硬件要求,您需要一个至少具有 2 个 CPU 内核和 8GB RAM 的 VPS,它将支持 100 个用户。即使您可以用交换空间代替 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  -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

    将 Dockers 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) <>
    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 下载 Gitlabs Docker 镜像。此映像包含运行 Docker 所需的一切 - nginx、PostgreSQL、Redis 等。运行以下命令下载映像。

    $ docker pull gitlab/gitlab-ee:latest
    

    尽管本教程是关于安装社区版的,但我们将获取 Gitlab 的企业版映像。这是因为企业版的行为与社区版完全一样,除非您通过输入许可证升级到它。将社区版安装升级到企业版会带来更多的复杂性。

    下载完整的图像需要一些时间。作业完成后,您可以运行以下命令来检查当前系统上的所有图像。

    $ 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'] = ""
          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'
    

    让我们看看上面每个选项的含义。

    • image是指Gitlab的Docker镜像在Dockerhub上的位置。
    • container_name 允许您将标签应用于 docker 容器,以便在 Docker 网络中引用容器时使用。
    • hostname 定义容器内部主机名,或者在我们的例子中,是安装 Gitlab 的 URL。
    • restart 指定容器的重启策略。我们已经将它设置为 always,这意味着容器如果退出,将自动重新启动。
    • environment 提供变量 GITLAB_OMNIBUS_CONFIG,它允许您输入任何 Gitlab 配置设置。在这种情况下,我们提供了 Gitlab 应该使用的外部 URL。
    • volume 定义安装在服务器上的目录以存储持久数据。这三个卷/目录存储应用程序数据、日志文件和配置文件。分号左边的值是服务器上的本地目录,右边的值是容器内部的目录。
    • publish 告诉容器向主机发布端口或一系列端口。由于 Gitlab 需要端口 22(SSH)、80(HTTP)、443(HTTPS) 和 587(SMPT - MSA),我们在这里指定了它们。如果您希望 Gitlab 在您的服务器上使用非标准端口(可能是因为它不可用),您将首先提供主机端口,然后再提供容器端口。例如,由于您的服务器已经在使用 SSH(22) 端口,您可以告诉 Gitlab 通过不同的端口使用 SSH,比如 3333。然后您可以将上述文件中的 22:22 更改为 3333:22。您还需要在上面的 GITLAB_OMNIBUS_CONFIG 下添加行 gitlab_rails[gitlab_shell_ssh_port]=3333。
    • external_url 指的是您的 Gitlab 将安装到的域。我们选择了 https,它将自动为我们安装 Lets Encrypt SSL 证书。
    • 我们还添加了额外的配置来配置 Gitlab 使用 Gmail 发送邮件。您可以使用任何第 3 方 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

    为 Gitlabs 管理员密码提供密码。接下来您将被带到登录屏幕。使用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 
    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 
    

    返回您的配置文件设置区域并从侧边栏访问 SSH 密钥。

    将 SSH 密钥粘贴到提供的框中,然后单击“添加密钥”继续。

    现在,您无需提供 Gitlab 凭据即可创建和提交您的存储库。

    第 9 步 - 创建您的第一个项目

    Gitlab 中的每个存储库都属于一个项目。项目包括存储库、问题跟踪器、合并请求、wiki、持续集成和持续交付 (CI/CD) 管道以及许多其他功能。

    要创建您的第一个存储库,请单击创建项目。

    您将被带到新项目页面。输入项目名称。您可以将项目 slug 更改为不同的东西。如果您愿意,可以输入项目描述,并根据需要更改项目的可见性。您可以使用 README 文件初始化您的存储库。完成后,单击创建项目。

    您将被带到您的存储库页面,其中只有一个空白的 README.md 文件。

    现在我们的存储库已经上线,让我们尝试从命令行添加一个变更日志。

    在您的计算机上输入以下命令以创建一个 CHANGELOG 文件并将其推送回您的存储库。确保你的电脑上安装了 Git。

    克隆存储库。您可以使用 SSH 或 HTTPS 进行克隆。

    使用 SSH 克隆。

    $ git clone :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 的教程到此结束。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com