GitLab安装配置全过程

一、准备一台Linux主机

我用了一台VMware虚拟机,配置如下:

IP:192.168.1.159

1、开SSH

systemctl enable sshd

2、关闭SELINUX

vi /etc/sysconfig/selinux

修改下边红字部分

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of three two values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

3、安装rz

yum -y install lrzsz

之后上传文件一定要用-be参数(其中-b是--binary用二进制的方式上传,-e是--escape强制escape所有控制字符),否则上传的文件不完整

rz –be

4、安装wget

yum -y install wget

5、更换yum源,用于提速yum

(1)备份yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

(2)下载新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  

清理缓存

yum clean all

重新生成缓存

yum makecache

 

一、安装GitLab

1、安装必须的组件

yum install -y curl policycoreutils-python openssh-server

2、安装GitLab社区版包库

cd /home

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

3、安装GitLab社区版

EXTERNAL_URL是访问的URL

EXTERNAL_URL="http://192.168.1.159" yum install -y gitlab-ce 

GitLab安装配置全过程

安装完成后:

gitlab-ctl reconfigure    #使配置文件生效 但是会初始化除了gitlab.rb之外的所有文件

gitlab-ctl status        #查看状态

gitlab-ctl stop          #停服务

gitlab-ctl start         #起服务

gitlab-ctl tail          #查看日志的命令(Gitlab 默认的日志文件存放在/var/log/gitlab 目录下)

相关目录信息

.git/config                              #版本库特定的配置设置,可用--file修改

~/.gitconfig                             #用户特定的配置设置,可用--global修改

/var/opt/gitlab/git-data/repositories/root    #库默认存储目录

/opt/gitlab                             #是gitlab的应用代码和相应的依赖程序

/var/opt/gitlab       #此目录下是运行gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置

/etc/gitlab #此目录下存放了以omnibus-gitlab包安装方式时的配置文件,这里的配置文件才需要管理员手动编译配置

/var/log/gitlab                          #此目录下存放了gitlab各个组件产生的日志

/var/opt/gitlab/backups/                  #备份文件生成的目录

相关文件

/opt/gitlab/embedded/service/gitlab-rails/config  #配置文件(修改clone的ip地址)

/etc/gitlab/gitlab.rb                      #设置相关选项进行配置(gitlab地址就在这)

/var/opt/gitlab/git-data                   #Git存储库数据(默认

4、运行服务(此步可不做)

gitlab-ctl start

5、登录测试

首次登录需要修改root密码

GitLab安装配置全过程

密码改成:********

账号:root

GitLab安装配置全过程

登录后的页面(这是IE浏览器,显示有问题,需换非IE浏览器访问)

GitLab安装配置全过程

二、汉化GitLab

1、检查安装版本和汉化包版本

安装版本检查

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

GitLab安装配置全过程

汉化包检查

https://gitlab.com/xhang/gitlab

GitLab安装配置全过程

2、汉化过程

如果具有相同版本的汉化标签

(1)克隆汉化版本库

yum install -y git

git clone https://gitlab.com/xhang/gitlab.git

(可以指定版本号git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh)

如果已经克隆过,则进行更新git fetch

(2)查看该汉化补丁的版本

cat gitlab/VERSION

GitLab安装配置全过程

(2)比较汉化标签和原标签,导出 patch 用的 diff 文件。

gitlab-ctl stop

cd /home/gitlab

git diff v11.1.4 v11.1.4-zh > ../11.1.4-zh.diff

GitLab安装配置全过程

生成11.1.4-zh.diff文件

由于官方版本比汉化包少一些文件(assets目录下所有文件)会导致打补丁时出错,所以先拷贝这些文件到官方目录

cd /home/gitlab/app

cp -r assets /opt/gitlab/embedded/service/gitlab-rails/app/

将11.1.4-zh.diff作为补丁更新到gitlab中

yum install patch -y

patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 11.1.4-zh.diff

cd /opt/gitlab/embedded/service/gitlab-rails

git apply /home/11.1.4-zh.diff

强行拷贝过去后git apply可能会出错

GitLab安装配置全过程

用patch打补丁

GitLab安装配置全过程

出现询问时都输入y,注意上图有个失误,导致多了一个rej文件,这个文件一定要重命名掉

cd gitlab-rails/app/assets/javascripts/boards/components/

mv board_delete.js.rej board_delete.js.rej.bak

启动和检查GitLab配置

gitlab-ctl start

gitlab-ctl reconfigure

重新登录192.168.1.159

GitLab安装配置全过程

三、用LDAP接入AD

四、增加邮件功能

1、修改配置文件gitlab.rb

vi /etc/gitlab/gitlab.rb

在gitlab.rb文件中添加下面配置:

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.********"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] = "gitlab"

gitlab_rails['smtp_password'] = "**********"

gitlab_rails['smtp_domain'] = "**********"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_enable_starttls_auto'] = true

 

gitlab_rails['gitlab_email_from'] = 'gitlab@**********'

user['git_user_email'] = "gitlab@**********"

2、修改完,重新配置

gitlab-ctl reconfigure

查看日志

gitlab-ctl tail

五、修改时区

如果不修改默认时间会造成下图的现象,可能会差几个小时

GitLab安装配置全过程

1、修改配置文件gitlab.rb

vi /etc/gitlab/gitlab.rb

在gitlab.rb文件中

GitLab安装配置全过程

添加下面配置:

gitlab_rails['time_zone'] = 'Asia/Shanghai'

2、修改完,重新配置

gitlab-ctl reconfigure

查看日志

gitlab-ctl tail

 

六、设置密码输错锁定

1、修改配置文件gitlab.rb

vi /etc/gitlab/gitlab.rb

在gitlab.rb文件中修改下面配置:

gitlab_rails['rack_attack_git_basic_auth'] = {

  'enabled' => true,

  'ip_whitelist' => ["127.0.0.1"],

  'maxretry' => 300,

  'findtime' => 60,

  'bantime' => 60

}

解释:

# Rack Attack IP banning enabled

'enabled' => true

# Whitelist requests from 127.0.0.1 for web proxies (NGINX/Apache) with incorrect headers

'ip_whitelist' => ["127.0.0.1"]

# Limit the number of Git HTTP authentication attempts per IP

'maxretry' => 300

# Reset the auth attempt counter per IP after 60 seconds

'findtime' => 60

# Ban an IP for one hour (60s) after too many auth attempts

'bantime' => 60

2、修改完,重新配置

gitlab-ctl reconfigure

查看日志

gitlab-ctl tail

 

 

七、备份

1、修改配置文件gitlab.rb

vi /etc/gitlab/gitlab.rb

在gitlab.rb文件中

GitLab安装配置全过程

修改为下面配置:

gitlab_rails['manage_backup_path'] = true

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"    //gitlab备份目录

gitlab_rails['backup_archive_permissions'] = 0644       //生成的备份文件权限

gitlab_rails['backup_keep_time'] = 7776000              //备份保留天数为3个月(即90天,这里是7776000秒)

2、修改完,重新配置

gitlab-ctl reconfigure

查看日志

gitlab-ctl tail

3、手动备份一次

gitlab-rake gitlab:backup:create


cd /var/opt/gitlab/backups目录,查看已有备份文件

GitLab安装配置全过程

4、添加每日备份的计划任务

编辑crontab

vi /etc/crontab

添加下边一行

0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

GitLab安装配置全过程

注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出

重启crond服务

systemctl restart crond

重启系统

shutdown –r now

 

七、恢复测试

GItLab只能还原到与备份文件相同的gitlab版本。

1、克隆一份正式环境的GitLab,改服务器IP为192.168.1.211

2、修改GitLab的访问IP地址

vi /etc/gitlab/gitlab.rb

在gitlab.rb文件中

GitLab安装配置全过程

修改为下面配置:

external_url 'http://192.168.1.221'

修改完,重新配置

gitlab-ctl reconfigure

3、随便删除一个项目

GitLab安装配置全过程

4、开始恢复操作

(1)将备份文件权限修改为777,不然可能恢复的时候会出现权限不够,不能解压的问题

cd /var/opt/gitlab/backups

chmod 777 1550089292_2019_02_14_11.1.4_gitlab_backup.tar

(2)执行命令停止相关数据连接服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

gitlab-ctl status

GitLab安装配置全过程

(3)执行命令从备份文件中恢复Gitlab

Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号

gitlab-rake gitlab:backup:restore BACKUP=1550089292_2019_02_14_11.1.4

GitLab安装配置全过程

输入yes

 

输入yes

GitLab安装配置全过程

恢复完成

(4)最后再次启动Gitlab

gitlab-ctl start

gitlab-ctl status

GitLab安装配置全过程

5、检查恢复情况

(1)check命令

gitlab-rake gitlab:check SANITIZE=true

GitLab安装配置全过程

GitLab安装配置全过程

全部ok

(2)web页面

之前删除的项目已经恢复了。20GB的数据,200个项目共计恢复用时1小时