本文档记录的是在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.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、安装完成
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、安装成功
1.3.2、修改url地址
##修改配置文件
vim /etc/gitlab/gitlab.rb
如图所示
1.3.3、修改gitlab.rb文件完成
##编译配置文件
gitlab-ctl reconfigure
##重启
gitlab-ctl restart
1.3.4、编译成功
1.3.5、重启成功
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
测试成功
1.5、修改密码并登录
第一次访问时,将被跳转到密码重置页面。为初始管理员帐户提供密码后,将跳转回登录屏幕。使用默认帐户的用户名root和刚配置的密码登录。
1.5.1、修改密码
1.5.2、登陆
1.6、汉化
1.6.1、修改设置
进入偏好设置
修改语言种类,选择简体中文,完成后保存修改
1.6.2、刷新页面,页面变为简体中文
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
启动成功示意图
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、邮件发送失败
发送报错
解决办法
##增加配置
gitlab_rails['smtp_tls'] = true
2、使用部分
2.1、新建用户
2.1.1、登陆管理员账号或者root用户后
2.1.2、点击添加人员
2.1.3、添加用户信息
用户名不能是汉字
2.1.4、增加初始密码
添加成功后,增加初始密码(最少8位)
保存
2.1.5、初次登陆
强制修改密码
修改后强制重新登陆
登陆成功,至此,用户可正常使用
2.2、新建项目
2.2.1、新建项目
项目名称不能为汉语
2.3、系统数据手动备份
2.3.1、备份
##手动备份,全量
gitlab-rake gitlab:backup:create
备份成功
注意:/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
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文件)。
a、定时命令
##编辑 crontab 文件
vim /etc/crontab
##输入以下语句
# weijx 2020/07/17 添加定时任务,每天下午五点,执行gitlab备份
0 17 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
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
修改完成后记得保存
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"
修改完成后记得保存
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
在管理端中也可以查看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 备份文件
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
第一处
第二处
2.6.6、恢复成功后,启动gitlab
##编译配置文件
gitlab-ctl reconfigure
##重启
gitlab-ctl restart
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" } })
2.7.4重启
##编译配置文件
gitlab-ctl reconfigure
##重启
gitlab-ctl restart
2.8、修改项目clone时的地址
2.8.1、修改此处的地址
2.8.2、修改配置文件
##gitlab.yml配置文件
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
##修改host和port
2.8.3、重启
##重启
gitlab-ctl restart
2.8.4、注意
##每次修改gitlab.rb配置文件,执行gitlab-ctl reconfigure后,要再修改gitlab.yml文件后才能重启