本文主要记录在Ubuntu 16.04 64bit上搭建GitLab服务器的操作记录,以下是操作步骤(主要参考资料:https://about.gitlab.com/downloads/#ubuntu1604)
Gitlab是一个私有的仓库Web管理工具,基于RoR。它支持类似于github那样强大而又简单的UI交互型操作,支持安装包部署在自己服务器上,安全、开源,并且免费,支持邮件服务,支持分支保护(权限机制,以免被人胡乱push)。
需要说明的是,由于gitlab主要存储项目代码,一般是放在内网的,所以刚开始的时候,我们的服务器micros-server-00通过办公室的公网路由器,连接公网(IP:192.168.8.40),我们进行gitlab的安装配置,并要求用户注册gitlab的账号。一旦这些工作都完成,我们就要将micros-server-00断开公网连接,而连接到内网的路由器,同时还要更换ip地址等。所以,如果有谁参考了本文,请根据自己的实际情况,来进行调整。
对于某些不太熟悉ubuntu的用户,安装ubuntu之后,并没有启动root账户,而在安装配置gitlab的过程中,可能需要使用root账户进行操作,所以这里,我们先启动root账户,为root用户设置密码:
micros@micros-server-00:~$ sudo passwd root
[sudo] password for micros://先输入当前用户micros的密码
Enter new UNIX password: //为root设置密码
Retype new UNIX password: //再次输入密码进行确认
passwd: password updated successfully
micros@micros-server-00:~$ su//切换到root
Password://在此输入micros账号的密码
root@micros-server-00:/home/micros# exit//切换到root成功,如果想退出root账户,输入exit
exit
需要先输入一次当前用户的登陆密码,然后输入两次root用户的密码(自己设置)。
配置的机器hostname为taiic.com, IP地址为192.168.8.40
在Ubuntu系统中永久修改主机名也比较简单。主机名存放在/etc/hostname文件中,修改主机名时,编辑hostname文件,在文件中输入新的主机名并保存该文件即可。重启系统后,打开命令行来看或者通过命令行hostname确认主机名有没有修改成功。
sudo nano /etc/hostname
或者sudo gedit /etc/hostname
sudo apt-get install curl openssh-server ca-certificates postfix
执行完成后,出现邮件配置,选择Internet那一项(不带Smarthost的)(GitLab中使用postfix进行邮件发送)
回车,代表选择
回车,等待安装结束。
利用清华大学的镜像(https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/)来进行主程序的安装。
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
利用root用户(不是sudo,而是root),vi或者nano等打开文件/etc/apt/sources.list.d/gitlab-ce.list,加入下面一行:
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
然后退出root账户:
sudo apt-get update
sudo apt-get install gitlab-ce
首先运行
sudo -e /etc/gitlab/gitlab.rb
在文本中修改"externval_url"之后的域名,可以是本机IP或指向本机IP的域名(注意要带有“https://”),这一行在全部文本中位于很靠上面的位置,如下图所示(不要忘记了是https而不是http)。
(如果将来修改了这里的地址,则后面的步骤也要重新配置一下,使之生效。)
重新配置gitlab,使刚才修改的ip生效。
sudo gitlab-ctl reconfigure
第一次配置的时候,完成后报错:ConnectionFailed: Failed to open TCP connection to acme-staging.api.letsencrypt.org:443
然后,我翻了个墙,重新配置,就ok了。
sshd使得gitlab可以被远程连接,postfix允许gitlab接发邮件。
service sshd start
service postfix start
为了使 GitLab 社区版的 Web 界面可以通过网络进行访问,我们需要允许 80 端口通过防火墙,这个端口是 GitLab 社区版的默认端口。为此需要运行下面的命令
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo gitlab-ctl status
如果得到类似下面的结果,则说明GitLab运行正常
在本地浏览器地址栏中输入:http://127.0.0.1,即可访问GitLab的Web页面;或者在局域网内的其他机器上输入https://192.168.8.40查看gitlab的web管理页面。
这密码是gitlab上的root这个账号的密码哦。
设置完成后,可以用root账号和刚才的密码登录。可以看到现在是管理员的角色。
退出后,注册一个新的账号并登录,
发现这俩界面差距不小呀,毕竟刚注册的只是一个普通用户嘛,前面的那个可是管理员耶。
先用root(管理员)账户登录,创建一个group。
这里,可以修改group的属性。
回到前面注册新用户并登录的地方。创建好了用户后,会自动引导至用户的主页,点击右上角圆形图标的下拉菜单,有Settings,进入配置界面,再点击导航栏中的SSH Keys进入密钥的输入界面,如下图所示。
如果不知道如何获取密钥,可以按照这个链接来进行操作:http://127.0.0.1/help/ssh/README 或者https://192.168.8.40/help/ssh/README
(我自己平时用的win7系统,装有putty和git bash,所以我可以选择使用git bash来生成key)
至此,生成的公钥已经复制到剪贴板了,下面直接粘贴到ssh key框中。
邮箱里收到邮件,目前因为gitlab所在的服务器连着公网,所以可以发送邮件。这也是为什么先让大家都注册完之后,再断网的原因吧(虽然断开公网连接之后也可以注册)。
测试配置是否正确:
在命令行输入(我的是git bash)
ssh -T [email protected] //这里输入对应的ip地址,或者域名(如果配置了dns可以解析的话)
现在我换一台机器(就是192.168.8.40这个服务器本身),ssh登录一下gitlab试一下
发现是无法使用git的,它要求必须把这台机器添加到可信列表里去。所以,新建的用户必须生成相应的ssh key pair,并把公钥提交给gitlab,要不然根本无法使用git。
至此, gitlab的安装已经完成。
我们参考 (因为我们是一键安装的,并不是从source安装的)
这是目前gitlab的respository所在目录的结构。我们暂时可以先不改。