CentOS7 安装部署 Gitlab

GitLab一个开源的git仓库管理平台,方便团队协作开发、管理。

准备工作

安装基础依赖

1
2
3
4
5
6
# 安装基础依赖
sudo yum install -y curl policycoreutils-python openssh-server

# 启动ssh服务&设置为开机启动
sudo systemctl enable sshd
sudo systemctl start sshd

安装Postfix

Postfix是一个邮件服务器,GitLab发送邮件需要用到

1
2
3
4
5
6
#安装postfix
sudo yum install -y postfix

#启动postfix并设置为开机启动
sudo systemctl enable postfix
sudo systemctl start postfix
  • Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.错误, 解决办法:
1
2
3
4
5
# 修改 /etc/postfix/main.cf 的设置
inet_protocols = ipv4
inet_interfaces = all
# 重新启动postfix即可
sudo systemctl restart postfix.service

开放ssh以及http服务(80端口)

1
2
3
4
5
6
#开放ssh、http服务
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent

#重载防火墙规则
sudo firewall-cmd --reload
  • FirewallD is not running, 解决办法:
1
sudo systemctl start firewalld

部署过程

本次我们部署的是社区版:gitlab-ce,如果要部署商业版可以把关键字替换为:gitlab-ee

Yum安装GitLab

  • 添加GitLab社区版Package
1
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  • 安装GitLab社区版
1
sudo yum install -y gitlab-ce

安装成功后会看到gitlab-ce打印了以下图形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.



_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!

配置GitLab站点Url

GitLab默认的配置文件路径是/etc/gitlab/gitlab.rb

默认的站点Url配置项是:

1
external_url 'http://gitlab.example.com'
1
2
3
4
5
#修改配置文件
sudo vi /etc/gitlab/gitlab.rb

#配置首页地址
external_url 'http://gitlab.caoxl.com'
  • 防火墙开启端口
1
2
[root@caoxl init.d]# firewall-cmd --add-port=9999/tcp --permanent
success

启动并访问Gitlab

  • 启动Gitlab
1
2
3
4
5
6
7
8
9
10
11
#重新配置并启动
sudo gitlab-ctl reconfigure

#完成后将会看到如下输出
Running handlers:
Running handlers complete
Chef Client finished, 3/709 resources updated in 15 seconds
gitlab Reconfigured!

#启动
sudo gitlab-ctl restart
  • 访问Gitlab

将设置的域名DNS解析到服务器IP,或者修改本地host将域名指向服务器IP。访问:http://gitlab.caoxl.com

这时候会提示为管理员账号设置密码。管理员账号默认username是root
设置完成之后即可使用root账号登录,登陆后会进入欢迎界面。

  • ruby_block[authorize Grafana with GitLab] action run,解决办法
1
2
# vim /etc/gitlab/gitlab.rb
monitoring['grafana']['enable'] = false
  • Whoops, GitLab is taking too much time to respond. (502)错误, 解决办法

原因是端口被其他服务占用了,需要更换配置文件里得到端口 ,并且执行gitlab-ctl reconfigure, gitlab-ctl restart 就可以解决

GitLab常用配置

邮件配置

配置邮箱可以让GitLab在发生相应事件的时候进行邮件通知
比如:找回密码、添加邮箱等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#修改配置文件
sudo vi /etc/gitlab/gitlab.rb

#邮件配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.163.com'
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = 'yourmail@163.com'
gitlab_rails['smtp_password'] = 'yourpasswd'
gitlab_rails['smtp_domain'] = 'smtp.163.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'yourmail@163.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

#保存后,重新配置并启动GitLab
sudo gitlab-ctl reconfigure

禁用创建组权限

GitLab默认所有的注册用户都可以创建组。但对于团队来说,通常只会给Leader相关权限。
虽然可以在用户管理界面取消权限,但毕竟不方便。我们可以通过配置GitLab默认禁用创建组权限。

1
2
3
4
5
6
7
8
9
#修改配置文件
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

gitlab-ctl常用命令介绍

1
sudo gitlab-ctl cmd
命令 说明
check-config 检查在gitlab中是否有任何配置。在指定版本中删除的rb
deploy-page 安装部署页面
diff-config 将用户配置与包可用配置进行比较
remove-accounts 删除所有用户和组
upgrade 升级
once 如果GitLab服务停止了就启动服务,如果已启动就不做任何操作
restart 重启GitLab服务
start 如果GitLab服务停止了就启动服务,如果已启动就重启服务
stop 停止GitLab服务
status 查看GitLab服务状态
reconfigure reconfigure重新配置GitLab并启动

解决Gitlab的Nginx以及自带Nginx冲突问题

vim /etc/gitlab/gitlab.rb

做以下修改:

1
2
3
4
5
6
7
8
9
10
11
12
// 禁用Gitlab的nginx
nginx['enable'] = false

// 设置自建Nginx的用户, 查看用户命令看说明
web_server['external_users'] = ['www']

// 修改监听方式和监听地址
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:9999"

// 最后执行下面命令让配置生效:
sudo gitlab-ctl reconfigure
  • 说明
1
cat /usr/local/nginx/conf/nginx.conf | grep user
  • 配置Nginx, 新增gitlab.conf

官网提供配置 - gitlab-omnibus-nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
upstream gitlab-workhorse {
server 127.0.0.1:9999; #根据实际情况修改, 与gitlab.rb中的gitlab_workhorse['listen_addr']一致
}

## Normal HTTP host
server {
listen 80;
listen [::]:80 default_server;
server_name gitlab.caoxl.com; ## 修改成自己的域名;
server_tokens off; ## Don't show the nginx version number, a security best practice
root /opt/gitlab/embedded/service/gitlab-rails/public;

## See app/controllers/application_controller.rb for headers set

## Individual nginx logs for this GitLab vhost
access_log /var/log/nginx/gitlab_access.log; # 根据实际情况修改
error_log /var/log/nginx/gitlab_error.log; # 根据实际情况修改


location / {
client_max_body_size 0;
gzip off;

## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_pass http://gitlab-workhorse;
}
}
  • 重启Nginx: sudo service nginx restart

解决Gitlab访问502问题

1
sudo chmod -R o+x /opt/gitlab/embedded/service//gitlab-rails/

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2021 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :