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

介绍

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命令,更新一下本地的软件包,然后再安装新软件:

$ sudo apt-get update
$ sudo apt-get install ca-certificates curl openssh-server postfix

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

安装GitLab

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

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

$ cd /tmp
$ curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

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

$ less /tmp/script.deb.sh

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

$ sudo bash /tmp/script.deb.sh

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

$ sudo apt-get install gitlab-ce

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

调整防火墙规则

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

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

$ sudo ufw status
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流量,则现在也应该允许该流量:

$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow OpenSSH

再次运行ufw status

$ sudo ufw status

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

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的配置文件:

$ sudo nano /etc/gitlab/gitlab.rb

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

1.创建证书存放目录:

$ cd /etc/gitlab/
$ mkdir ssl

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

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

$ nano /etc/gitlab/gitlab.rb
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配置:

$ gitlab-ctl reconfigure

3.修改nginx 配置文件

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

$ nano /var/opt/gitlab/nginx/conf/gitlab-http.conf
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:

$ gitlab-ctl restart

通过Web界面执行初始配置

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

首次登录

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

http://gitlab_domain_or_IP

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

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

GitLab初始密码设置提示

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

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

GitLab首先登录提示

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

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

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

GitLab初始登录登陆页面

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

调整配置文件设置

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

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

GitLab配置文件设置按钮

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

GitLab配置文件设置页面

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

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

GitLab更新配置文件设置按钮

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

更改你的帐户名称

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

GitLab帐户菜单项

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

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

GitLab更改用户名部分

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

GitLab更新用户名按钮

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

在你的帐户中添加SSH密钥

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

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

locacl$ cat ~/.ssh/id_rsa.pub

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

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

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

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

cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

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

local$ ssh-keygen

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

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]-----+

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

local$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

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

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

GitLab SSH Keys菜单项

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

GitLab添加SSH密钥

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

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

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

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

GitLab管理区域按钮

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

GitLab管理设置按钮

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

禁用注册

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

Sign-up enabled前面的取消掉:

GitLab取消选择启用注册

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

GitLab保存设置按钮

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

通过域名限制注册

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

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

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

GitLab限制域名注册

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

GitLab保存设置按钮

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

限制项目创建

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

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

GitLab将项目设置为零

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

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

GitLab保存设置按钮

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

证书有效期

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

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

$ sudo nano /etc/gitlab/gitlab.rb
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配置:

gitlab-ctl reconfigure

结论

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


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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LIN_ZONE

php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)

2.windows默认带防火墙的,进入 控制面板-系统和安全-Windows 防火墙-允许的程序(win10系统的是:进入 控制面板-允许应用或功能通过Wind...

643
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Icinga和Icinga Web

Icinga是一个灵活而强大的开源监控系统,用于监控网络主机和服务的运行状况。它可用于监视Web worker集群的负载和正常运行时间,存储设备上的可用磁盘空间...

2364
来自专栏从零开始学自动化测试

Selenium2+python自动化40-cookie相关操作

前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录。 登录后换账号登录...

3078
来自专栏云计算教程系列

如何在Debian 8上用mod_proxy将Apache设置为反向代理

reverse proxy(反向代理)是一种代理服务器,它接收HTTP(S)请求并将它们透明地分发到一个或多个后端服务器。反向代理非常实用,因为许多现代Web应...

1203
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Apache或Nginx加密Tomcat 8连接

Apache Tomcat是一个Web服务器和servlet容器,旨在为Java应用程序提供服务。Tomcat经常用于生产企业部署和较小的应用程序需求,既灵活又...

4053
来自专栏云计算教程系列

使用Apache或Nginx加密Tomcat流量

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Serv...

1626
来自专栏云计算教程系列

如何在Ubuntu上安装Chef服务器,工作站和客户端

随着组织结构的增长以及管理环境所需组件的扩展,各个服务器和服务可能变得难以管理。配置管理解决方案旨在简化系统和基础架构的管理。配置管理工具的目标是允许您将基础架...

1093
来自专栏JavaEdge

SpringBoot+Security 发送短信验证码在core模块下properties包中创建SmsCodeProperties在ValidateCodeProperties中new一个SmsCo

2926
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装VestaCP并设置网站

Vesta控制面板是一个免费的开源网站控制面板,内置网站,电子邮件,数据库和DNS功能。在本教程结束时,我们将在Ubuntu 14.04上安装并运行Vesta,...

830
来自专栏守望轩

Visual Studio 2008 每日提示(二十七)

#261、按Ctrl+Alt+B打开断点窗口 原文链接:You can press Ctrl+Alt+B to open the Breakpoint Win...

3206

扫码关注云+社区

领取腾讯云代金券