文章目录
前言
相信Git大家都不陌生,无论是工作还是学习中,大家都接触过Git,使用Git托管或下载代码。本篇将介绍如何使用GitLab来搭建一个自己的代码托管服务器。一、GitLab是什么?
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务1。
简单来说,GitLab就是一个可以部署在自己的服务器服务器上的一个类似GitHub的代码托管WEB应用。如果想更深入了解GitLab,可以访问GitLab官网。
二、搭建前准备
1. 服务器准备
我这里使用的是CentOS7系统,通过虚拟机搭建的服务器,有条件的也可使用云服务器搭建。
没有CentOS7虚拟机的,可以去CentOS官网自行下载安装,具体的安装方法这里就不提了,不会的话可以自行百度,网上有很多相关的博客。
2. 安装方式选择
官方给出了一些系统服务器下载安装GitLab的方式,包括主流的Ubuntu、Debian和CentOS等,大家可以直接按照官网给出的方式来安装。
不过官网的安装方式不太稳定,毕竟官方服务器在国外,所提供的资源可能获取不到,我之前使用官网的方式就没有安装成功,下面是通过国内镜像安装的方式,大家可以参考一下。
三、搭建步骤
1. 安装和配置所需依赖
安装必要依赖
# 安装依赖以及ssh服务,有些CentOS镜像安装后自带ssh
sudo yum install -y curl policycoreutils-python openssh-server
# 开启ssh
sudo systemctl enable sshd
sudo systemctl start sshd
防火墙配置
# 防火墙添加http服务
sudo firewall-cmd --permanent --add-service=http
# 防火墙添加https服务
sudo firewall-cmd --permanent --add-service=https
# 重启防火墙
sudo systemctl reload firewalld
一般的镜像是自带防火墙的,当然有些纯净镜像可能没有,这时候就需要安装防火墙
# 查看防火墙状态,如果输出一段信息并且显示active(running),表示有防火墙且处于开启状态
sudo systemctl status firewalld
# 如果没有防火墙,则按照以下命令安装
sudo yum install firewalld systemd -y
# 开启防火墙
sudo service firewalld start
安装Postfix邮件服务
# 安装postfix
sudo yum install postfix
# 开启邮件服务
sudo systemctl enable postfix
sudo systemctl start postfix
2. 安装GitLab
这里我们使用清华大学开源软件镜像站提供的GitLab资源进行安装。
首先,创建/etc/yum.repos.d/gitlab-ce.repo
文件:
# 这里使用vim编辑器编辑文件,如果系统没有的话,请自行百度安装方法
sudo vim /etc/yum.repos.d/gitlab-ce.repo
然后在文件内添加以下内容并保存关闭:
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
最后执行命令:
sudo yum makecache
sudo yum install gitlab-ce
待命令执行完之后出现安装成功的提示信息,即完成了GitLab的安装。
3. 配置和启动GitLab
配置访问地址及端口
# 打开gitlab配置文件
sudo vim /etc/gitlab/gitlab.rb
找到external_url
,并修改成自己服务器的ip和端口
这里的ip就是CentOS服务器的ip,不知道的话可以用ifconfig
或ip addr
命令进行查看。端口就是你想要部署的端口,这里不要用8080端口,因为GitLab的程序中有进程已经占用了这个端口。
刷新GitLab配置并启动GitLab
# 刷新配置
sudo gitlab-ctl reconfigure
# 重启gitlab
sudo gitlab-ctl restart
在服务器上的浏览器地址栏输入上面配置的external_url
就可直接访问了。
4. 防火墙开放端口
完成以上3步,我们就可以初步使用GitLab了,但是只能在服务器上的浏览器访问,在自己的主机上还是不能访问。这是因为防火墙的缘故,程序所在的8888端口并未开放给服务器外的机器访问,这里就要配置并开放防火墙端口了。
首先查看防火墙已开放端口,看我们要开放的端口是否已经开放了
sudo firewall-cmd --list-ports
一般服务器再未配置时,这里会输出空行,表示没有开放过端口。下面进行开放端口操作
# 这里端口需要修改成自己的
sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent
然后重启防火墙,使配置生效
sudo firewall-cmd --reload
这时在执行第一个命令,查看已开放端口,此时会输出我们所配置的端口。现在,我们在自己的主机上也能访问到搭建的GitLab页面上了。当然,主机必须和搭建的服务器在一个局域网内(除非GitLab服务器时部署在云服务器上,有自己的公网地址)。
5. 502错误的处理
有的同学在配置完以上步骤之后,打开浏览器看到的却是502页面:
有可能是以下几点原因:
- 服务器内存不够。GitLab所要求的最小内存是2GB,最好是配置到3~4GB,如果太小的话,GitLab的程序会不能完全启动,导致502。
external_url
所配置的端口被占用了。这个是比较常见的原因,GitLab本身的进程会占用一些端口,比如8080,或者服务器上运行的其他程序占用所配置的端口,从而导致GitLab启动失败。- 服务器上运行的其他程序占用了GitLab进程所需的端口。如2中所说,GitLab本身的进程会占用一些端口,如果服务器上运行了其他程序,且和GitLab有冲突,也会导致GitLab启动失败。
至于如何判断是2还是3,在GitLab启动时,会有反馈信息。
如果有哪个进程没启动,在这反馈信息会看见,这种情况就是3,有其他程序占用了GitLab某个进程所用的端口。否则就是2中的情况,可以根据图中的反馈信息结合
lsof
命令或netstat -tunlp
命令根据pid查看GitLab进程所占用的端口。
6. GitLab页面应用设置
(1) 首次登录
第一次访问GitLab页面应用时,会让我们重置管理员账号的密码,重置完成之后,使用用户名root和所设置的密码即可登录。
(2) 设置中文
应用默认以英文显示,可以设置成中文:
点击右上角头像位置,选择setting,再选择左侧的"Perferences",页面拉到最下面,看到"Language"项,选择“简体中文”,再点击"Save changes"按钮保存设置,最后刷新页面即可。
(3) 设置邮箱
管理员默认的邮箱是"admin@example.com",显然这是无效的,需要设置成自己的邮箱,以便能接收到GitLab所发送的邮件。点击右上角头像,选择设置->用户资料,然后在电子邮箱一栏填入自己的邮件地址,页面拉到底部点击“更新个人资料设置”保存更改,刷新后即生效。
除了邮件,也可更改用户名、头像等信息。
7. 配置GitLab邮件服务
GitLab提供邮件服务,可以给用户发送一些提示邮件,下面将介绍如何配置GitLab的邮件服务。
我们可以使用QQ邮箱、网易邮箱,或者如果是企业使用的话,可以用自己的企业邮箱,作为GitLab的邮件服务器发送邮件。这里我使用的是QQ邮箱。
首先,登录QQ邮箱并获取SMTP服务的授权码:
登录QQ邮箱后,选择设置->账户,然后往下浏览,找到POP3…这一项,开启POP3/SMTP服务,按照提示发送短信后页面会给出授权码。
获取到授权码后,进入gitlab配置文件配置邮件服务:
sudo vim /etc/gitlab/gitlab.rb
找到gitlab_rails['smtp_enable'] = true
部分,然后对这部分内容进行修改,内容如下:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
# 邮箱账号
gitlab_rails['smtp_user_name'] = "xxx@qq.com"
# 授权码
gitlab_rails['smtp_password'] = "xxxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
# 邮箱账号
user['git_user_email'] = "xxx@qq.com"
# 邮箱账号
gitlab_rails['gitlab_email_from'] = "xxx@qq.com"
配置完成之后,刷新GitLab配置并重启:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
测试邮件服务是否正常:
# 进入控制台
gitlab-rails console
# 发送邮件,按回车发送
Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now
如果能收到邮件,则代表邮件服务配置成功。
总结
经过以上步骤,即可完成GitLab服务器的基本搭建,可以尝试在此服务器注册账号并托管代码。