Centos7.2 搭建Gitlab并汉化

一、前言

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

1571237351191.jpg

这时候会提示为管理员账号设置密码。管理员账号默认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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。