GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,还有其他与开发相关的功能,如问题跟踪。它旨在使用你自己的基础架构进行托管,并且可以灵活地部署为开发团队的内部存储库,公开作为与用户交互的方式,甚至可以作为贡献者托管自己项目的方式。
GitLab项目使用简单的安装机制在你自己的硬件上设置GitLab实例变得相对简单。在本教程中,我们将介绍如何在Ubuntu 16.04服务器上安装和配置GitLab。如果您使用CentOS系统,可以参考腾讯云实验室基于 CentOS 7 搭建 GitLab的教程。
一台已经设置好一个可以使用sudo
命令的非root
账户的Ubuntu 16.04服务器,并且开启防火墙。
满足条件后,继续开始安装过程。
在我们自己安装GitLab之前,安装一些在安装过程中持续使用的软件非常重要。幸运的是,可以从Ubuntu的默认包存储库轻松安装所有必需的软件。
在安装新软件前,都要使用apt
命令,更新一下本地的软件包,然后再安装新软件:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl openssh-server postfix
你可能已经安装了一些此软件。安装postfix
时,请在出现提示时选择“ Internet site”。谈话输入服务器的域名或IP地址,配置系统发送邮件的方式。
现在依赖关系到位,我们可以自己安装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的配置文件:
$ 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
现在GitLab正在运行并且允许访问,我们可以通过Web界面执行应用程序的一些初始配置。
在Web浏览器中访问GitLab服务器的域名:
http://gitlab_domain_or_IP
如果上一个步骤配置成功,则应将你重定向到安全的HTTPS连接。
在你第一次访问时,你应该看到为管理帐户设置密码的初始提示:
在初始密码提示中,提供并确认管理帐户的安全密码。完成后单击“ Change your password”按钮。
你将被重定向到传统的GitLab登录页面:
在这里,你可以使用刚刚设置的密码登录。凭证是:
在现有用户的字段中输入这些值,然后单击“ sign in”按钮。你将登录该应用程序并进入登录页面,提示你开始添加项目:
你现在可以进行一些简单的更改。
安装后,可以更新一下你的个人资料
请单击界面右上角的用户图标。在显示的下拉菜单中,选择Settings:
你将进入设置的“ Profile ”部分:
你填写的名称将显示给其他用户,而电子邮件将用于账户验证,通知和Git操作等。
完成后,单击底部的 “Update Profile settings”按钮:
确认电子邮件将发送至你提供的地址。按照电子邮件中的说明确认你的帐户,以便你可以开始使用GitLab。
接下来,单击左侧菜单栏中的Account项:
在这里,你可以找到你的私有API令牌或配置双因素身份验证。但是,我们目前要做的是Change username。
默认情况下,默认的管理帐户的名称是root,但是这不安全,我们需要改一下:
单击“ Update username”按钮进行更改:
下次登录GitLab时,使用新的用户名。
在大多数情况下,你需要使用带有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项:
在提供的空间中粘贴从本地计算机复制的公钥。为其指定一个描述性标题,然后单击“ Add key按钮:
你现在应该能够从本地计算机管理GitLab项目和存储库,而无需提供GitLab帐户凭据。
你可能已经注意到,当你访问GitLab实例的登录页面时,任何人都可以注册一个帐户。如果你希望托管公共项目,这可能是你想要的。然而,很多时候,需要更多限制性设置。
首先,点击页面顶部主菜单栏中的扳手图标,进入管理区域:
在随后的页面上,你可以看到整个GitLab实例的概述。要调整设置,请单击左侧菜单底部的“Settings”项。
你将进入GitLab实例的全局设置。在这里,你可以调整一些设置,这些设置会影响新用户是否可以注册以及他们的访问级别。
如果你希望完全禁用注册(你仍然可以为新用户手动创建帐户),请向下滚动到Sign-up Restrictions 部分。
把Sign-up enabled前面的√
取消掉:
向下滚动到底部,然后单击“ Save”按钮:
现在GitLab登录页面中注册部分已经没了。
如果你将GitLab用作提供与域关联的电子邮件地址的组织的一部分,则可以按域名限制注册,而不是完全禁用它们。
在Sign-up Restrictions 部分中,首先选择Send confirmation email on sign-up 框,仅允许用户在确认其电子邮件后登录。
接下来,将你的域名或其他域名添加到Whitelisted domains for sign-ups(域名注册白名单) ,每行一个。你可以使用星号“*”指定通配符域:
向下滚动到底部,然后单击“Save”按钮:
现在GitLab登录页面中注册部分已经没了。
默认情况下,新用户最多可以创建10个项目。如果你希望允许来自外部的新用户进行可见性和参与,但希望限制他们创建新项目的权限,则可以在“ Account and Limit Settings(帐户和限制设置)”部分中执行此操作。
在内部,你可以将Default projects limit(默认项目限制)更改成0就是完全禁用新用户创建项目:
新用户仍可被手动添加到项目中,并可访问其他用户创建的内部或公共项目。
向下滚动到底部,然后单击“ Save”按钮:
新用户现在可以创建帐户,但无法创建项目。
腾讯云的免费的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》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。