一、前言
1、GitLab是什么?
GitLab一个开源的git仓库管理平台,方便团队协作开发、管理。在GitLab上可以实现完整的CI(持续集成)、CD(持续发布)流程。而且还提供了免费使用的Plan,以及免费的可以独立部署的社区版本(https://gitlab.com/gitlab-org/gitlab-ce )。
官网:https://about.gitlab.com/
2、本篇环境信息
工具 | 环境 |
---|---|
系统版本 | 阿里云Centos7.2 |
Gitlab | Gitlab-ce12.3.0 |
二、准备工作
1、安装依赖
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
2、安装Postfix
Postfix是一个邮件服务器,GitLab发送邮件需要用到
# 安装
sudo yum install -y postfix
# 设置开机启动
sudo systemctl enable postfix
sudo systemctl start postfix
# 如果启动报错 no local interface found for ::1
# 需要在配置文件中配置interface
vi /etc/postfix/main.cf
inet_interfaces = all
三、安装Gitlab
本次我们部署的是社区版:gitlab-ce,如果要部署商业版可以把关键字替换为:gitlab-ee
到 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
1、下载对应的ce版本
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
安装gitlab
rpm -i gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
安装成功后如下图
1571236737227.jpg
四、配置Gitlab
GitLab默认的配置文件路径是 /etc/gitlab/gitlab.rb
默认的站点Url配置项是: external_url 'http://gitlab.example.com'
这里我将GitLab站点Url修改为 http://git.xxx.com
也可以用IP代替域名,这里根据自己需求来即可
修改配置文件:
sudo vi /etc/gitlab/gitlab.rb
# 访问路径
external_url 'http://git.xxx.com'
# 时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
五、启动Gitlab
装配配置
sudo gitlab-ctl reconfigure
配置成功可以看到
Running handlers complete
Chef Client finished, 432/613 resources updated in 03 minutes 43 seconds
gitlab Reconfigured!
启动Gitlab
sudo gitlab-ctl restart
# 启动成功
ok: run: alertmanager: (pid 20643) 0s
ok: run: gitaly: (pid 20658) 0s
ok: run: gitlab-exporter: (pid 20690) 0s
ok: run: gitlab-workhorse: (pid 20694) 1s
ok: run: grafana: (pid 20706) 0s
ok: run: logrotate: (pid 20724) 1s
ok: run: nginx: (pid 20806) 0s
ok: run: node-exporter: (pid 20814) 1s
ok: run: postgres-exporter: (pid 20821) 0s
ok: run: postgresql: (pid 20836) 0s
ok: run: prometheus: (pid 20850) 1s
ok: run: redis: (pid 20868) 0s
ok: run: redis-exporter: (pid 20933) 1s
ok: run: sidekiq: (pid 20940) 1s
ok: run: unicorn: (pid 20952) 0s
访问GitLab
http://git.xxx.com
这时候会提示为管理员账号设置密码。管理员账号默认username是root。
设置完成之后即可使用root账号登录,登陆后会进入欢迎界面。
六、GitLab常用配置
1、禁用创建组权限
GitLab默认所有的注册用户都可以创建组。但对于团队来说,通常只会给Leader相关权限。
虽然可以在用户管理界面取消权限,但毕竟不方便。我们可以通过配置GitLab默认禁用创建组权限。
sudo vi /etc/gitlab/gitlab.rb
# 开启gitlab_rails['gitlab_default_can_create_group'] 选项,并将值设置为false
### GitLab user privileges
gitlab_rails['gitlab_default_can_create_group'] = false
保存后,重新配置并启动GitLab
sudo gitlab-ctl reconfigure
2、gitlab-ctl常用命令介绍
语法:gitlab-ctl 命令参数
命令参数如下:
命令 | 说明 |
---|---|
help | 帮助 |
reconfigure | 修改配置文件之后,需要重新加载下 |
show-config | 查看所有服务配置文件信息 |
uninstall | 卸载这个软件 |
cleanse | 删除gitlab数据,重新白手起家 |
服务管理命令:
命令 | 说明 |
---|---|
start | 启动所有服务 |
stop | 关闭所有服务 |
restart | 重启所有服务 |
status | 查看所有服务状态 |
tail | 查看日志信息 |
service-list | 列举所有启动服务 |
graceful-kill | 平稳停止一个服务 |
七、汉化Gitlab
Gitlab默认语言是英文,对于想加强英文的同学,建议继续使用英文,但要求使用中文,这里需要下载一个汉化包。
下载对应的汉化包:
汉化插件地址:https://gitlab.com/xhang/gitlab
可以直接下载对应的版本或者clone整个库切换到对应的版本
git clone https://gitlab.com/xhang/gitlab.git -b 12-3-stable-zh
下载完成后,将下载的文件夹内容复制到gitlab目录下
复制前先停止Gitlab
[root@gitlab ~]# gitlab-ctl stop
ok: down: gitaly: 0s, normally up
ok: down: gitlab-monitor: 0s, normally up
ok: down: gitlab-workhorse: 1s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 1s, normally up
ok: down: node-exporter: 0s, normally up
ok: down: postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 1s, normally up
[root@gitlab ~]# cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
复制时可能不断提示是否要覆盖,这时可能是系统每次执行cp命令时,其实是执行了cp -i命令的别名。出现这种情况可以修改~/.bashrc,在“alias cp=’cp -i’”前加#注释,再刷新文件 source ~/.bashrc
复制完成后,需要重新加载配置,并启动Gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
...
... ...
... ... ...
... ... ... ...
...
Running handlers:
Running handlers complete
Chef Client finished, 2/516 resources updated in 09 seconds
gitlab Reconfigured!
[root@gitlab ~]# gitlab-ctl restart
ok: run: gitaly: (pid 42828) 0s
ok: run: gitlab-monitor: (pid 42852) 0s
ok: run: gitlab-workhorse: (pid 42858) 0s
ok: run: logrotate: (pid 42867) 0s
ok: run: nginx: (pid 42874) 0s
ok: run: node-exporter: (pid 42879) 0s
ok: run: postgres-exporter: (pid 42884) 1s
ok: run: postgresql: (pid 42894) 0s
ok: run: prometheus: (pid 42897) 0s
ok: run: redis: (pid 42907) 0s
ok: run: redis-exporter: (pid 42912) 1s
ok: run: sidekiq: (pid 42997) 0s
ok: run: unicorn: (pid 43007) 0s
八、关闭自带的nginx 使用外部nginx转发
由于服务器可能还会有其它应用在使用80端口,所以有时需要安装nginx
关闭自带nginx
#vi /etc/gitlab/gitlab.rb
# 添加本机的IP地址 要与下面配置相对应
gitlab_rails['trusted_proxies'] = ['127.0.0.1','xxx.xxx.xxx']
#gitlab 环境协议及访问地址
#【特别提示】该地址将用在nginx 的 upstream 配置中,很重要,网上示例大多都写成了 server
# unix:/var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;,
# 实际使用会一直返回 nginx 的 502 Bad Gateway 错误,千万注意
gitlab_workhorse['listen_network'] = "tcp"
# 下面端口很重要 为nginx中转发的端口
gitlab_workhorse['listen_addr'] = "127.0.0.1:8888"
# 修改端口
#unicorn["port"] = 8080 默认为8080 修改为自己的端口
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8889
# 将nginx启动用户加入到gitlab-www组中 非常重要
web_server['external_users'] = ['nginx','root']
# nginx['enable'] = true 默认是true
nginx['enable'] = false
# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:8889", :tcp_nopush => true
listen "/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket", :backlog => 1024
在外部nginx配置中加入以下转发
查看配置详情
upstream gitlab {
# 8.0 位置
server 127.0.0.1:8888;
}
server {
listen *:80;
server_name gitlab.xxxx.com; # 修改为配置gitlab时一样的域名
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
client_max_body_size 250m;
access_log /var/log/gitlab/nginx/gitlab_access.log;
error_log /var/log/gitlab/nginx/gitlab_error.log;
location / {
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
proxy_read_timeout 300; # Some requests take more than 30 seconds.
proxy_connect_timeout 300; # Some requests take more than 30 seconds.
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
# 如果此处配置的是https 则开启下面配置
# proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab;
}
location ~ ^/(assets)/ {
root /opt/gitlab/embedded/service/gitlab-rails/public;
# gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
}
error_page 502 /502.html;
}
下面出现502多半是权限问题,所以更换权限
# 路径要对,不同的版本路径可能不同
sudo chmod -R o+x /var/opt/gitlab/gitlab-rails
sudo chmod -R o+x /var/opt/gitlab/gitlab-workhorse
重启nginx
重启gitlab
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# 启用外部nginx
nginx
网友评论