在 Centos 上在线安装 GitLab
作为程序员,其中一个愿望是拥有一个自己的代码存储库。在支持私有部署的代码存储库产品中,GitLab 是比较著名的了,所以今天我总结了一下在 Centos 上安装 GitLab 的过程。
依赖
基础依赖
首先,需要安装部分基础的依赖,需要安装的依赖见如下命令:
yum install -y curl policycoreutils-python openssh-server
上面安装完成之后需要将 sshd
服务设置开机自启并且立即启动:
# 设置开机自启
systemctl enable sshd
# 立即启动 sshd 服务(如果已经启动的话,这句命令可能执行失败)
systemctl start sshd
Postfix 依赖
GitLab 发送邮件的功能需要用到 Postfix
:
yum -y install postfix# 设置开机自启
systemctl enable postfix
# 立即启动 postfix
systemctl start postfix
开放端口
这里介绍 firewall 防火墙的命令。
首先需要开放 sshd
服务的端口。firewall 可以通过指定服务名称的方式来开放端口:
# 开放 sshd 服务用到的端口
firewall-cmd --add-service=sshd --permanent
可以指定端口开放:
# 开放访问端口,本次教程我们使用 8090 作为范例
firewall-cmd --add-port=8090/tcp --permanent
开放端口之后记得刷新一下防火墙:
firewall-cmd --reload
安装 GitLab
下面的命令是安装 GitLab CE 也就是社区版,如果想要安装 GitLab EE 企业版的话,需要把下面两条命令中的关键字 gitlab-ce
替换为 gitlab-ee
之后再执行命令。
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install -y gitlab-ce
更改配置文件
配置文件的位置在这里:/etc/gitlab/gitlab.rb
简单的访问只需要修改配置文件中的 external_url
配置,将其更改为自己的域名,比如我想使用域名:git.a.com
,端口是 8090
(上面配置的),使用 http
协议,那么这里应该配置:
external_url="http://git.a.com:8090"
注意:
external_url
是用于访问 GitLab 时的URL,显示在地址栏中的和克隆项目时都是使用这个URL作为前面的部分。
但是,这里的配置并不意味着 GitLab 自带的 Nginx 会监听这里的端口
启动 GitLab
这次修改了配置文件,需要让 GitLab 重新配置,所以执行命令:
gitlab-ctl reconfigure
如果只是单纯的启动 GitLab,只需要使用 start 即可:
gitlab-ctl start
安装成功的访问
GitLab 会默认生成一个文本文档: /etc/gitlab/initial_root_password
,这个文件的有效期为 24H,到期后自动删除。里面存储的是 root
账户的密码,记得抓紧时间修改。
进阶 GitLab 的搭建
通常情况下,我们自己搭建好之后向外提供 GitLab 的服务,一般都使用 80(http) 或者 443(https) 端口。当服务器资源较少时(即一台服务器可能安装了多个对外服务,如:GitLab、个人blog等),只能根据域名来区分每个服务了(因为都使用 80 或者 443 端口)。那么此时需要禁用 GitLab 自身的 Nginx 模块,转而使用我们自己的 Nginx(方便分配域名资源)。
注意:
下面的端口都使用80
端口了。
记得把external_url
里面的端口删除。
首先,需要禁用 GitLab 自身的 Nginx 模块,修改配置文件中的 nginx['enable']
为 false
:
nginx['enable'] = false
GitLab 修改配置文件需要 reconfigure
:
gitlab-ctl reconfigure
接着在我们自己安装 Nginx 的配置文件中增加如下配置:
upstream gitlab {# 下面的写法固定server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket;
}server {listen 80;server_name gitlab.a.com;location ^~ / {proxy_pass http://gitlab;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
启动或者重启 Nginx:
# 启动 Nginx
nginx
# 重启 Nginx
nginx -s reload
访问 http://gitlab.a.com
就可以了。
使用 https 访问
https 的配置这里就不是重点了,这里说一下 location 模块内的配置,注意最后两行的配置:
location ^~ / {proxy_pass http://gitlab;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 下面的内容不加的话,可能会有 422 错误proxy_set_header X-Forwarded-Proto https;proxy_set_header X-Forwarded-Ssl on;
}