gitlib安装和部分功能使用教程

本文档记录的是在CentOS 7下安装gitlab的过程,不同的服务器内核版本,安装过程会有不同

目录

1、安装部分

1.1、安装和配置必要的依赖项
1.2、添加GitLab包存储库并安装软件包(此步若无法执行,则直接执行第三步)
1.3、安装gitlab(若第二步执行成功,则跳过此步)
1.4、邮箱配置
1.5、修改密码并登录
1.6、汉化
1.7常用命令
1.8、常见问题及解决方法

2、使用部分

2.1、新建用户
2.2、新建项目
2.3、系统数据手动备份
2.4、系统数据自动备份
2.5、更改备份文件存放目录
2.6、数据迁移和恢复
2.7、修改gitlab的数据文件路径
2.8、修改项目clone时的地址

1、安装部分

查询linux服务器内核版本

cat /etc/redhat-release

本文档记录的是在CentOS 7下安装gitlab的过程,不同的服务器内核版本,安装过程会有不同

1.1、安装和配置必要的依赖项

1.1.1、打开系统防火墙中HTTP、HTTPS和SSH访问(一般不需要配置)
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

1.1.2、安装发送通知电子邮件的插件
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
###查看postfix运行状态
sudo systemctl status postfix

在插件安装期间,可能会出现配置界面,选择“Internet站点”并按Enter键。使用服务器 的外部DNS作为“邮件名称”,然后按Enter键。如果出现其他界面,请继续按Enter键接受默认值。

1.1.3、安装成功

安装成功

1.png

运行成功


2.png

1.2、添加GitLab包存储库并安装软件包(此步若无法执行,则直接执行第三步)

1.2.1、添加GitLab包存储库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

若无法使用curl,也可以手动从网址上下载脚本,再将脚本上传到服务器,手动执行

https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
​
1.2.2、安装完成
3.png
1.2.3、安装GitLab包

http://gitlab.example.com改为你实际访问GitLab实例的URL。将自动安装配置并在该URL上启动GitLab。

sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce

1.3、安装gitlab(若第二步执行成功,则跳过此步)

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.1.4-ce.0.el7.x86_64.rpm
##或者直接将安装包下载好,传输到服务器上
​
​
##直接执行此命令可能会报错error: Failed dependencies: policycoreutils-python is needed by ##gitlab-ce-13.1.4-ce.0.el7.x86_64
##若报错则先执行后一句命令,再执行此句
rpm -ivh gitlab-ce-13.1.4-ce.0.el7.x86_64.rpm
​
yum install policycoreutils-python
1.3.1、安装成功
4.png
1.3.2、修改url地址
##修改配置文件
vim /etc/gitlab/gitlab.rb

如图所示


5.png
1.3.3、修改gitlab.rb文件完成
##编译配置文件
gitlab-ctl reconfigure
##重启
gitlab-ctl restart
1.3.4、编译成功
6.png
1.3.5、重启成功
7.png
1.3.6、目录结构
/opt/gitlab 主目录
/etc/gitlab 配置文件目录
/var/log/gitlab 日志目录

1.4、邮箱配置

1.4.1、确认postfix服务状态
systemctl status postfix
1.4.2配置邮箱参数

本文以163邮箱为例,其他邮箱可通过以下网址查找参数示例

https://docs.gitlab.com/omnibus/settings/smtp.html

进入配置文件

##进入配置文件
vim /etc/gitlab/gitlab.rb

修改参数

gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.163.com" 
gitlab_rails['smtp_port'] = 25 
gitlab_rails['smtp_user_name'] = "xxuser@163.com" 
gitlab_rails['smtp_password'] = "xxpassword" 
gitlab_rails['smtp_domain'] = "163.com" 
gitlab_rails['smtp_authentication'] = :login "login"
gitlab_rails['smtp_enable_starttls_auto'] = true 
gitlab_rails['gitlab_email_from'] = "xxuser@163.com" 
user["git_user_email"] = "xxuser@163.com"


gitlab_rails['smtp_password'] = "yyyy"   #163生成的客户端授权码 非邮箱密码
1.4.3编译重启
##编译配置文件
gitlab-ctl reconfigure
##重启
gitlab-ctl restart
1.4.4邮箱测试
##进入控制台
gitlab-rails console

##输入邮件内容
Notify.test_email('测试收件邮箱', '邮件标题_test', '邮件正文_test').deliver_now

测试成功

8.png

1.5、修改密码并登录

第一次访问时,将被跳转到密码重置页面。为初始管理员帐户提供密码后,将跳转回登录屏幕。使用默认帐户的用户名root和刚配置的密码登录。

1.5.1、修改密码
9.png
1.5.2、登陆
10.png
11.png

1.6、汉化

1.6.1、修改设置
12.png

进入偏好设置


13.png

修改语言种类,选择简体中文,完成后保存修改


14.png
15.png
1.6.2、刷新页面,页面变为简体中文
16.png

1.7、常用命令

sudo gitlab-ctl start                               # 启动所有 gitlab 组件;

sudo gitlab-ctl stop                                # 停止所有 gitlab 组件; 

sudo gitlab-ctl restart                             # 重启所有 gitlab 组件; 

sudo gitlab-ctl status                              # 查看服务状态; 

sudo gitlab-ctl reconfigure                         # 重新编译文件; 

sudo vim /etc/gitlab/gitlab.rb                      # 修改默认的配置文件; 

gitlab-rake gitlab:check SANITIZE=true --trace      # 检查gitlab; 

sudo gitlab-ctl tail                                # 查看日志;

gitlab-ctl show-config                              #验证配置文件

gitlab-ctl uninstall                                #删除gitlab(保留数据)

gitlab-ctl cleanse                                  #删除所有数据,重新开始

gitlab-ctl tail <svc_name>                          #查看服务的日志

gitlab-rails console production                     #进入控制台 ,可以修改root 的密码



每次修改gitlab.rb文件后直接重启是没用的,需要先执行gitlab-ctl reconfigure再重启



# 配置http协议所使用的访问地址,不加端口号默认为80,但是建议加端口,以免80端口被占用导致服务启动不成功
external_url 'http://192.168.199.231'

1.8、常见问题及解决方法

1.8.1、端口被占用解决办法
##修改配置文件
vim /etc/gitlab/gitlab.rb

##将external_url中的端口改为未用端口,例如
external_url 'http://192.168.199.231:8081'

##重新编译配置文件
gitlab-ctl reconfigure

##重启
gitlab-ctl restart

##检查状态
gitlab-ctl status

启动成功示意图


17.png
1.8.2、系统卡顿解决办法

gitlab官方建议系统配置在4g及以上,所以系统卡顿的时候,可以适当增大系统内存

1.8.3、编译错误

问题描述:安装后未启动,修改配置文件后,第一次编译,执行gitlab-ctl reconfigure语句,报错内存不足,报错信息如下

Running handlers:
There was an error running gitlab-ctl reconfigure:

execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8] (postgresql::enable line 75) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
STDOUT: The files belonging to this database system will be owned by user "gitlab-psql".
This user must also own the server process.

The database cluster will be initialized with locale "zh_CN.UTF-8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

fixing permissions on existing directory /var/opt/gitlab/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default timezone ... PRC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ...
STDERR: 2020-07-20 11:10:30.605 CST [184806] FATAL:  could not create shared memory segment: 设备上没有空间
2020-07-20 11:10:30.605 CST [184806] DETAIL:  Failed system call was shmget(key=5432001, size=56, 03600).
2020-07-20 11:10:30.605 CST [184806] HINT:  This error does *not* mean that you have run out of disk space.  It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.
    The PostgreSQL documentation contains more information about shared memory configuration.
child process exited with exit code 1
initdb: removing contents of data directory "/var/opt/gitlab/postgresql/data"
---- End output of /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 ----
Ran /opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8 returned 1

解决:建议重新编译,因为可能因为第一次编译内容过多,占用内存过多,机器内存较小,无法一次性全部完成。

1.8.4、邮件发送失败

发送报错


18.png

解决办法

##增加配置
gitlab_rails['smtp_tls'] = true

2、使用部分

2.1、新建用户

2.1.1、登陆管理员账号或者root用户后
2.1.2、点击添加人员
19.png
2.1.3、添加用户信息

用户名不能是汉字

20.png
21.png
22.png
2.1.4、增加初始密码

添加成功后,增加初始密码(最少8位)


23.png
24.png

保存


25.png
26.png
2.1.5、初次登陆
27.png

强制修改密码


28.png

修改后强制重新登陆


29.png

登陆成功,至此,用户可正常使用


30.png

2.2、新建项目

2.2.1、新建项目

项目名称不能为汉语


31.png
32.png
33.png
34.png

2.3、系统数据手动备份

2.3.1、备份
##手动备份,全量
gitlab-rake gitlab:backup:create

备份成功


35.png

注意:/etc/gitlab/gitlab.rb和/etc/gitlab/gitlab-secrets.json并未包含在备份文件中,故需要单独备份

2.3.2、备份文件
##备份文件所在目录
cd /var/opt/gitlab/backups

##文件名称为:备份时间_软件版本_gitlab_backup.tar,如下,版本是13.1.4:
1594971719_2020_07_17_13.1.4_gitlab_backup.tar
36.png

2.4、系统数据自动备份

所谓自动备份就是定时执行备份命令行,其中有脚本自动备份,也有语句自动备份的方法,选一种使用即可

2.4.1、编辑crontab命令

介绍

##crontab文件格式
m h dom mon dow user command

##各个值得含义
m: 表示分钟,可以是从0到59之间的任何整数。
h:表示小时,可以是从0到23之间的任何整数。
dom:表示日期,可以是从1到31之间的任何整数。
mon:表示月份,可以是从1到12之间的任何整数。
dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
user : 表示执行的用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。
37.png

a、定时命令

##编辑 crontab 文件
vim /etc/crontab

##输入以下语句

# weijx 2020/07/17 添加定时任务,每天下午五点,执行gitlab备份
0 17 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
38.png

b、定时脚本

在指定路径编写脚本并赋权限

chmod +x auto_backup.sh
##备份后,使用ftp传到其他服务器

#新建日期文件夹
DATE=`gitlab +"20%y%m%d"`
cd /svn/gitlab/backups
mkdir $DATE


echo '开始备份'

/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

mv *.tar  /svn/gitlab/backups/$DATE



echo '开始打包'
tar zcvf ${DATE}.tar.gz ${DATE}  --remove-files
ftp -v -i -n *.*.*.*<<!
bin
user svn pass
cd  /svn/backup
put ${DATE}.tar.gz 
!



配置crontab 文件

##编辑 crontab 文件
vim /etc/crontab

##输入以下语句

# weijx 2020/07/17 添加定时任务,每天半夜两点,执行gitlab备份
0 2 * * * root /data/gitlabData/backups/auto_backup.sh -D 1
2.4.2、重新启动cron服务
#重新加载cron配置文件
/bin/systemctl reload crond.service 


#重启cron服务 
/bin/systemctl restart crond.service

2.4.3、设置备份过期时间
##修改配置文件
vim /etc/gitlab/gitlab.rb



##增加(或修改)过期时间,过期时间设为7天,单位是秒
gitlab_rails['backup_keep_time'] = 604800
39.png

修改完成后记得保存

2.4.4、编译重启
##编译配置文件
gitlab-ctl reconfigure

##重启
gitlab-ctl restart

注意:/etc/gitlab/gitlab.rb和/etc/gitlab/gitlab-secrets.json并未包含在备份文件中,故需要单独备份

2.5、更改备份文件存放目录

2.5.1、修改配置文件
##修改配置文件
vim /etc/gitlab/gitlab.rb

##将双引号中的地址修改为你想存放的地址
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
40.png

修改完成后记得保存

2.5.2、编译重启
##编译配置文件
gitlab-ctl reconfigure

##重启
gitlab-ctl restart

2.6、数据迁移和恢复

数据的迁移和恢复需要新老机器版本一直,故执行前检查版本;
其中老机器的版本可从备份包查看,备份包的版本写在文件名中(文件名称为:备份时间_软件版本_gitlab_backup.tar,如1594971719_2020_07_17_13.1.4_gitlab_backup.tar,版本是13.1.4)

2.6.1、在服务器查看新机器gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
41.png

在管理端中也可以查看gitlab版本

2.6.2、传输备份文件

如果没修改过默认备份目录的话,需要将老服务器上的备份文件目录(/var/opt/gitlab/backups目录)下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups目录下

##scp 用户名 @IP:绝对路径/文件名1   远程用户名@IP:绝对路径/ ,需要密码

scp root@172.28.18.104:/var/opt/gitlab/backups/1594971719_2020_07_17_13.1.4_gitlab_backup.tar   root@172.28.17.155:/var/opt/gitlab/backups

若是数据迁移,则gitlab.rb和gitlab-secrets.json需要单独传输,单独配置

##以下两个文件并未包含在备份文件中,故需要单独备份,修改
##/etc/gitlab/gitlab.rb
##/etc/gitlab/gitlab-secrets.json

##将新服务器中的两个文件做备份
cd /etc/gitlab

mv gitlab.rb  gitlab.rb.bak
mv gitlab-secrets.json gitlab-secrets.json.bak


##将原文件传输
scp root@172.28.18.104:/etc/gitlab/gitlab.rb   root@172.28.17.155:/etc/gitlab

scp root@172.28.18.104:/etc/gitlab/gitlab-secrets.json   root@172.28.17.155:/etc/gitlab

若两台服务器之间网络不通,则下载后再上传到新服务器

此处开始,执行数据恢复

2.6.3、修改文件权限
##备份文件所在目录
cd /var/opt/gitlab/backups


##修改权限
chmod 777 备份文件
42.png
2.6.4、停止部分服务
##停止数据连接相关服务
gitlab-ctl stop unicorn 

gitlab-ctl stop sidekiq
2.6.5、执行恢复命令
##执行恢复命令,备份文件1594971719_2020_07_17_13.1.4_gitlab_backup.tar
##备份文件编号为1594971719_2020_07_17_13.1.4

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

遇见确认界面,均选为yes

第一处


43.png

第二处


44.png
2.6.6、恢复成功后,启动gitlab
##编译配置文件
gitlab-ctl reconfigure

##重启
gitlab-ctl restart
45.png

2.7、修改gitlab的数据文件路径

2.7.1新建目录

新建目标路径

mkdir -p /svn/gitlab/git-data
2.7.2修改所属用户
chown  git git-data
2.7.3修改配置文件
##修改配置文件
vim /etc/gitlab/gitlab.rb

##增加数据文件地址
git_data_dirs({ "default" => { "path" => "/home/gitlab-data" } })
46.png
2.7.4重启
##编译配置文件
gitlab-ctl reconfigure

##重启
gitlab-ctl restart

2.8、修改项目clone时的地址

2.8.1、修改此处的地址
47.png
2.8.2、修改配置文件
##gitlab.yml配置文件
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

##修改host和port
48.png
2.8.3、重启
##重启
gitlab-ctl restart
2.8.4、注意
##每次修改gitlab.rb配置文件,执行gitlab-ctl reconfigure后,要再修改gitlab.yml文件后才能重启
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335