前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 16.04上安装和配置GitLab

如何在Ubuntu 16.04上安装和配置GitLab

原创
作者头像
楠宝宝
发布2018-08-03 09:34:18
1.9K0
发布2018-08-03 09:34:18
举报

介绍

GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,还有其他与开发相关的功能,如问题跟踪。它旨在使用你自己的基础架构进行托管,并且可以灵活地部署为开发团队的内部存储库,公开作为与用户交互的方式,甚至可以作为贡献者托管自己项目的方式。

GitLab项目使用简单的安装机制在你自己的硬件上设置GitLab实例变得相对简单。在本教程中,我们将介绍如何在Ubuntu 16.04服务器上安装和配置GitLab。如果您使用CentOS系统,可以参考腾讯云实验室基于 CentOS 7 搭建 GitLab的教程。

准备

一台已经设置好一个可以使用sudo命令的非root账户的Ubuntu 16.04服务器,并且开启防火墙。

要安装GitLab,对服务器硬件要求是

  • CPU核心:至少2个
  • 内存:至少4GB

满足条件后,继续开始安装过程。

安装依赖项

在我们自己安装GitLab之前,安装一些在安装过程中持续使用的软件非常重要。幸运的是,可以从Ubuntu的默认包存储库轻松安装所有必需的软件。

在安装新软件前,都要使用apt命令,更新一下本地的软件包,然后再安装新软件:

代码语言:txt
复制
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl openssh-server postfix

你可能已经安装了一些此软件。安装postfix时,请在出现提示时选择“ Internet site”。谈话输入服务器的域名或IP地址,配置系统发送邮件的方式。

安装GitLab

现在依赖关系到位,我们可以自己安装GitLab。这是一个直接的过程,利用安装脚本使用GitLab存储库配置系统。

进入/tmp目录然后下载安装脚本:

代码语言:txt
复制
$ cd /tmp
$ curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

你可以检查下载的脚本。然后你还可以在此处找到该脚本的托管版本:

代码语言:txt
复制
$ less /tmp/script.deb.sh

一旦你对脚本的安全感到满意,就可以运行安装程序:

代码语言:txt
复制
$ sudo bash /tmp/script.deb.sh

该脚本将设置你的服务器以使用GitLab维护的存储库。这使你可以使用与其他系统软件包相同的软件包管理工具来管理GitLab。完成后,你可以使用以下命令安装实际的GitLab应用程序`:

代码语言:txt
复制
$ sudo apt-get install gitlab-ce

这将在你的系统上安装必要的组件。

调整防火墙规则

在配置GitLab之前,你需要确保防火墙规则允许Web流量。

输入以下内容查看活动防火墙的当前状态:

代码语言:txt
复制
$ sudo ufw status
代码语言:txt
复制
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)

如你所见,当前规则允许SSH流量通过,但对其他服务的访问受到限制。由于GitLab是一个Web应用程序,我们应该允许HTTP访问。如果你有一个与GitLab服务器关联的域名,可以使用腾讯云的TLS / SSL证书来保护你的安装。在这种情况下,我们也希望允许HTTPS访问。

由于/etc/services文件中提供了HTTP和HTTPS的端口映射协议,因此我们可以按名称允许该流量。如果你尚未启用OpenSSH流量,则现在也应该允许该流量:

代码语言:txt
复制
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow OpenSSH

再次运行ufw status

代码语言:txt
复制
$ sudo ufw status

就能看到类似下面的输出:

代码语言:txt
复制
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)

上面的输出表明配置应用程序后可以访问GitLab Web界面。

编辑GitLab配置文件

在开始使用Gitlab之前,我们要修改一下Gitlab的配置文件。首先,打开Gitlab的配置文件:

代码语言:txt
复制
$ sudo nano /etc/gitlab/gitlab.rb

为了安全起见我们要给Gitlab添加SSL证书,购买腾讯云域名后,就可以免费申请一个SSL证书,具体步骤参考这个

1.创建证书存放目录:

代码语言:txt
复制
$ cd /etc/gitlab/
$ mkdir ssl

上传SSL证书,上传SSL证书至服务器,需要搭建一个FTP服务,可以参考这个。上传完证书,把证书移动到 /etc/gitlab/ssl

2.修改配置文件/etc/gitlab/gitlab.rb

代码语言:txt
复制
$ nano /etc/gitlab/gitlab.rb
代码语言:txt
复制
external_url 'https://cloud.tencent.com/' #这里就填写您域名地址,注意是https不是http
nginx['redirect_http_to_https']=true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt" #证书的名字改成你的证书的名字
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key" #证书的名字改成你的证书的名字

更新Gitlab配置:

代码语言:txt
复制
$ gitlab-ctl reconfigure

3.修改nginx 配置文件

  这里建议直接修改原配置文件端口,并开启ssl

代码语言:txt
复制
$ nano /var/opt/gitlab/nginx/conf/gitlab-http.conf
代码语言:txt
复制
server {
	listen *:443 ssl http2;
  	server_name mygit.cnyunwei.cc;  
  	server_tokens off;   
  	client_max_body_size 0;  
  	ssl on;  
  	ssl_certificate /etc/gitlab/ssl/gitlab.pem;  
  	ssl_certificate_key /etc/gitlab/ssl/gitlab.key;
    .............................  #剩余的信息省略了 } 
server{
  	listen*:80;server_name mygit.cnyunwei.cc;
  	rewrite^(.*)$https://$host$1permanent;
 }

重启GitLab:

代码语言:txt
复制
$ gitlab-ctl restart

通过Web界面执行初始配置

现在GitLab正在运行并且允许访问,我们可以通过Web界面执行应用程序的一些初始配置。

首次登录

在Web浏览器中访问GitLab服务器的域名:

代码语言:txt
复制
http://gitlab_domain_or_IP

如果上一个步骤配置成功,则应将你重定向到安全的HTTPS连接。

在你第一次访问时,你应该看到为管理帐户设置密码的初始提示:

GitLab初始密码设置提示
GitLab初始密码设置提示

在初始密码提示中,提供并确认管理帐户的安全密码。完成后单击“ Change your password”按钮。

你将被重定向到传统的GitLab登录页面:

GitLab首先登录提示
GitLab首先登录提示

在这里,你可以使用刚刚设置的密码登录。凭证是:

  • 用户名:root
  • 密码:你设置的密码

在现有用户的字段中输入这些值,然后单击“ sign in”按钮。你将登录该应用程序并进入登录页面,提示你开始添加项目:

GitLab初始登录登陆页面
GitLab初始登录登陆页面

你现在可以进行一些简单的更改。

调整配置文件设置

安装后,可以更新一下你的个人资料

请单击界面右上角的用户图标。在显示的下拉菜单中,选择Settings

GitLab配置文件设置按钮
GitLab配置文件设置按钮

你将进入设置的“ Profile ”部分:

GitLab配置文件设置页面
GitLab配置文件设置页面

你填写的名称将显示给其他用户,而电子邮件将用于账户验证,通知和Git操作等。

完成后,单击底部的 “Update Profile settings”按钮:

GitLab更新配置文件设置按钮
GitLab更新配置文件设置按钮

确认电子邮件将发送至你提供的地址。按照电子邮件中的说明确认你的帐户,以便你可以开始使用GitLab。

更改你的帐户名称

接下来,单击左侧菜单栏中的Account项:

GitLab帐户菜单项
GitLab帐户菜单项

在这里,你可以找到你的私有API令牌或配置双因素身份验证。但是,我们目前要做的是Change username

默认情况下,默认的管理帐户的名称是root,但是这不安全,我们需要改一下:

GitLab更改用户名部分
GitLab更改用户名部分

单击“ Update username”按钮进行更改:

GitLab更新用户名按钮
GitLab更新用户名按钮

下次登录GitLab时,使用新的用户名。

在你的帐户中添加SSH密钥

在大多数情况下,你需要使用带有Git的SSH密钥与GitLab项目进行交互。为此,你需要将SSH公钥添加到GitLab帐户。

如果你已在本地计算机上创建了SSH密钥对,则通常可以通过输入以下内容来查看公钥:

代码语言:txt
复制
locacl$ cat ~/.ssh/id_rsa.pub

可以看到一大块文本,如下所示:

代码语言:txt
复制
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制此文本并返回GitLab Web界面中的“配置文件设置”页面。

相反,如果你收到类似这样的消息,则表示你的计算机上尚未配置SSH密钥对:

代码语言:txt
复制
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

如果是这种情况,你可以通过输入以下内容来创建SSH密钥对:

代码语言:txt
复制
local$ ssh-keygen

选择默认,然后输入密码:

代码语言:txt
复制
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
|          ..%o==B|
|           *.E =.|
|        . ++= B  |
|         ooo.o . |
|      . S .o  . .|
|     . + .. .   o|
|      +   .o.o ..|
|       o .++o .  |
|        oo=+     |
+----[SHA256]-----+

完成此操作后,你可以通过输入以下内容显示上述公钥:

代码语言:txt
复制
local$ cat ~/.ssh/id_rsa.pub
代码语言:txt
复制
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制显示的文本块,然后返回GitLab Web界面中的配置文件设置。

单击左侧菜单中的SSH Keys项:

GitLab SSH Keys菜单项
GitLab SSH Keys菜单项

在提供的空间中粘贴从本地计算机复制的公钥。为其指定一个描述性标题,然后单击“ Add key按钮:

GitLab添加SSH密钥
GitLab添加SSH密钥

你现在应该能够从本地计算机管理GitLab项目和存储库,而无需提供GitLab帐户凭据。

限制或禁用公共注册(可选)

你可能已经注意到,当你访问GitLab实例的登录页面时,任何人都可以注册一个帐户。如果你希望托管公共项目,这可能是你想要的。然而,很多时候,需要更多限制性设置。

首先,点击页面顶部主菜单栏中的扳手图标,进入管理区域:

GitLab管理区域按钮
GitLab管理区域按钮

在随后的页面上,你可以看到整个GitLab实例的概述。要调整设置,请单击左侧菜单底部的“Settings”项。

GitLab管理设置按钮
GitLab管理设置按钮

你将进入GitLab实例的全局设置。在这里,你可以调整一些设置,这些设置会影响新用户是否可以注册以及他们的访问级别。

禁用注册

如果你希望完全禁用注册(你仍然可以为新用户手动创建帐户),请向下滚动到Sign-up Restrictions 部分。

Sign-up enabled前面的取消掉:

GitLab取消选择启用注册
GitLab取消选择启用注册

向下滚动到底部,然后单击“ Save”按钮:

GitLab保存设置按钮
GitLab保存设置按钮

现在GitLab登录页面中注册部分已经没了。

通过域名限制注册

如果你将GitLab用作提供与域关联的电子邮件地址的组织的一部分,则可以按域名限制注册,而不是完全禁用它们。

Sign-up Restrictions 部分中,首先选择Send confirmation email on sign-up  框,仅允许用户在确认其电子邮件后登录。

接下来,将你的域名或其他域名添加到Whitelisted domains for sign-ups(域名注册白名单) ,每行一个。你可以使用星号“*”指定通配符域:

GitLab限制域名注册
GitLab限制域名注册

向下滚动到底部,然后单击“Save”按钮:

GitLab保存设置按钮
GitLab保存设置按钮

现在GitLab登录页面中注册部分已经没了。

限制项目创建

默认情况下,新用户最多可以创建10个项目。如果你希望允许来自外部的新用户进行可见性和参与,但希望限制他们创建新项目的权限,则可以在“ Account and Limit Settings(帐户和限制设置)”部分中执行此操作。

在内部,你可以将Default projects limit(默认项目限制)更改成0就是完全禁用新用户创建项目:

GitLab将项目设置为零
GitLab将项目设置为零

新用户仍可被手动添加到项目中,并可访问其他用户创建的内部或公共项目。

向下滚动到底部,然后单击“ Save”按钮:

GitLab保存设置按钮
GitLab保存设置按钮

新用户现在可以创建帐户,但无法创建项目。

证书有效期

腾讯云的免费的SSL证书的有效期是一年,一年后需要重新申请申请证书,重新上传SSL证书到Gitlab服务器就行了。

到时只要修改配置文件/etc/gitlab/gitlab.rb

代码语言:txt
复制
$ sudo nano /etc/gitlab/gitlab.rb
代码语言:txt
复制
external_url 'https://cloud.tencent.com/' #这里就不用改了
nginx['redirect_http_to_https']=true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt" #证书的名字改成你的证书的名字
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key" #证书的名字改成你的证书的名字
#建议新证书的名字应与旧证书的名字一样,这样的话,只要删除旧的,再把新的添加到`/ssl`文件里就好了

更新Gitlab配置:

代码语言:txt
复制
gitlab-ctl reconfigure

结论

你现在应该在自己的服务器上托管一个正常工作的GitLab实例。你可以开始导入或创建新项目,并为你的团队配置适当的访问级别。GitLab会定期添加功能并对其平台进行更新,因此请务必查看项目主页以及时了解最新任何改进或重要通知。


参考文献:《How To Install and Configure GitLab on Ubuntu 16.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装依赖项
  • 安装GitLab
  • 调整防火墙规则
  • 编辑GitLab配置文件
  • 通过Web界面执行初始配置
    • 首次登录
      • 调整配置文件设置
        • 更改你的帐户名称
          • 在你的帐户中添加SSH密钥
          • 限制或禁用公共注册(可选)
            • 禁用注册
              • 通过域名限制注册
                • 限制项目创建
                • 证书有效期
                • 结论
                相关产品与服务
                SSL 证书
                腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档