Loading

gitlab centos 安装配置运维笔记

写在前面

如果你需要一个git服务器,为企业或自己的团队托管代码而又不希望将代码仓库存储到第三方。你可以在自己的服务器上搭建一个gitlab。

本文为我在最初安装配置gitlab服务器的时候留存的笔记,暂未进行系统性整理。

gitlab社区版是MIT许可,这意味着你可以搭建自己的代码服务器为公司托管源码,而没有许可问题。gitlab企业版需要收费订阅。如果不订阅,功能与社区版是相同的。gitlab官方建议如果后续有考虑买服务或者想要试用企业版的用户安装企业版。安装企业版试用期结束后,会自动降级到社区版。不过如果你并没有付费的打算,或者你对开源软件有偏执,建议直接安装gitlab-ce(社区版)。

虽然笔记中存在汉化与锁定版本的方法,但是不建议这样做。汉化后我遇到了部分账户的部分功能出现异常。重装英文版本并将数据备份还原后问题仍无法解决。只能删除有问题的账户,在英文版本上为其重建账户问题才会消失。

建议配置定时升级,因为gitlab-ce升级频率其实还是挺快的,而且漏洞及时修复有助于提升安全性,并减少升级版本跨度。建议按笔记配置定时备份以及邮件通知。

本文有一些初级用户的参考笔记,如果你是高级用户,可以忽略,仅关注gitlab相关内容。其实官网有安装配置教程。

主要需要注意的几点是:

  1. 配置清华镜像
  2. 配置邮件
  3. 配置备份还原

Linux 配置

Linux安装

拓展硬盘大小

拓展硬盘分区,常用于虚拟机

http://blog.csdn.net/remote_roamer/article/details/50670802

df -h #查看挂载点
fdisk -l #列出分区表

挂载硬盘

增加新硬盘,分区,挂载

https://www.cnblogs.com/silent2012/p/4586273.html

root home空间重新调整

如果安装时,未配置root home大小,则需重新调整

https://www.linuxidc.com/Linux/2017-03/141301.htm

配置ipv4地址

如果安装时,未配置静态ip,或者后续需要调整ip,则需重新配置。
修改服务器ip,还需可能需要修改gitlab ip配置

vi /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=... #网卡设备名,可通过ip addr查询
BOOTPROTO="static" #dhcp改为static
ONBOOT="yes" #开机启用本配置
IPADDR=... #静态IP
GATEWAY=... #默认网关
NETMASK=... #子网掩码
DNS1=... #DNS1 配置
DNS2=... #DNS2 配置

service network restart

删除多余内核

如果系统升级更新了内核,需要手动删除老内核

uname -a
rpm -qa | grep kernel
yum remove kernel-3.10.0-229.14.1.el7

yum命令

yum install
yum install gitlab-ce-x.x.x #安装指定的版本
yum remove
yum clean all #清除缓存

linux查看当前路径

pwd 或 pwd -P显示出实际路径

GitLab配置

GitLab安装

设置清华大学GitLab源

https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

vi /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

sudo yum makecache

命令行安装

访问https://about.gitlab.com/installation/ce-or-ee/?distro=centos-7

点击 Install GitLab Community Edition 查看安装教程

sudo yum install -y curl policycoreutils-python openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://yourip" yum install -y gitlab-ce-10.7.1 #可指定安装版本,yourip为你的服务器ip或域名

然后登陆网址设置gitlab管理员root账户初始密码

配置邮箱

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

vi /etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourdomain.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlabserver@yourdomain.com"
gitlab_rails['smtp_password'] = "..." #需配置正确的密码
gitlab_rails['smtp_domain'] = "smtp.yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_ssl'] = true
gitlab_rails['smtp_force_ssl'] = true
gitlab_rails['gitlab_email_from'] = 'gitlabserver@yourdomain.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@yourdomain.com'

gitlab-ctl reconfigure

测试SMTP

gitlab-rails console
irb(main):003:0> Notify.test_email('xxx@yourdomain.com', 'test', 'this is a test').deliver_now

迁移后客户端处理

如果迁移服务器而未拷贝密钥,客户端程序会发生man-in-the-middle警告。此时需要所有客户端手动处理。

建议备份时同时备份ssh密钥。

git bash
ssh-keygen -R yourip
ssh -T git@yourip

gitlab配置时区

https://blog.csdn.net/ouyang_peng/article/details/78653790

https://www.cnblogs.com/TechSnail/p/8213490.html

vi /etc/gitlab/gitlab.rb

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

gitlab-ctl reconfigure

设置进程数

解决内存消耗过大问题,设置为CPU核心数加一

vi /etc/gitlab/gitlab.rb
unicorn['worker_processes'] = 5

gitlab-ctl reconfigure

修改gitlab ip配置

vi /etc/gitlab/gitlab.rb

external_url 'http://yourip'

gitlab-ctl reconfigure
gitlab-ctl restart

gitlab汉化(不建议汉化,如果实在需要汉化建议从汉化库安装,或禁止gitlab版本更新)

https://gitlab.com/xhang/gitlab/wikis/home

需要先安装patch,git

yum install patch
yum install git

请先使用官方包安装或升级完成,确认当前版本。

gitlab_version=$(sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)# 获取当前版本

假设当前版本为v9.0.0,并确认汉化版本库是否包含该版本的汉化标签(-zh结尾)。

如果具有相同版本的汉化标签,则首先在本地 clone 仓库。

git clone https://gitlab.com/xhang/gitlab.git # 克隆汉化版本库
git fetch # 如果已经克隆过,则进行更新

然后比较汉化标签和原标签,导出 patch 用的 diff 文件。

git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff #导出9.0.0 版本的汉化补丁

执行完毕后将生成当前版本的补丁文件,如 9.0.0-zh.diff

导入汉化补丁:

sudo gitlab-ctl stop #停止 gitlab
sudo patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ${gitlab_version}-zh.diff

(patch时出现警告是由于该文件曾汉化过,此时直接回车忽略)

确定没有 .rej 文件,重启 GitLab 即可。

sudo gitlab-ctl start

执行重新配置命令

sudo gitlab-ctl reconfigure

如果汉化中出现问题,请重新安装 GitLab(注意备份数据)。

version lock 锁定gitlab版本

由于gitlab汉化版本进程可能晚于实际发布版本,所以对gitlab设置了版本锁

http://www.jb51.net/os/RedHat/154256.html

yum install -y yum-plugin-versionlock.noarch
yum versionlock gitlab-ce-10.7.1

GitLab备份还原

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

http://www.cnblogs.com/linkenpark/p/8405436.html

老的gitlab服务器进行备份

gitlab默认备份路径"/var/opt/gitlab/backups"需修改到挂载盘"/mnt/sdb1"

vi /etc/gitlab/gitlab.rb

gitlab_rails['backup_path'] = "/mnt/sdb1"  #配置为自己的备份位置

gitlab-ctl reconfigure
gitlab-rake gitlab:backup:create
cp  /etc/gitlab/gitlab-secrets.json  /mnt/sdb1/backupkeys/
cp  /etc/ssh/*key*  /mnt/sdb1/backupkeys/
cp  /etc/ssh/sshd_config /mnt/sdb1/backupkeys/

新的gitlab服务器还原

gitlab-ctl reconfigure
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
gitlab-rake gitlab:backup:restore backup=backfilename #backfilename是指gitlab备份包的文件名1525677013_2018_05_07_10.7.1_gitlab_backup.tar
cp -f  /mnt/sdb1/backupkeys/gitlab-secrets.json  /etc/gitlab/
cp -f /mnt/sdb1/backupkeys/*key*  /etc/ssh/
cp -f /mnt/sdb1/backupkeys/sshd_config /etc/ssh/ #需注意覆盖此文件会禁止root ssh登陆,覆盖前需保证配置了账户,详情见 linux配置-root账户安全配置

gitlab-ctl restart
gitlab-rake  gitlab:check SANITIZE=true#检查新gitlab服务器刚刚导入的数据
gitlab-ctl reconfigure

对于不同ip地址的服务器迁移可使用

scp username@src_ip:/var/opt/gitlab/backups/1461165090_gitlab_backup.tar /var/opt/gitlab/backups

Gitlab定时备份

  1. 每天凌晨两点使用gitlab-rake gitlab:backup:create命令创建备份到备份盘
  2. 设置备份保存时间为3天
  3. 每天凌晨两点半备份服务器key(还原key可避免出现man-in-the-middle警告https://docs.gitlab.com/omnibus/settings/backups.html

创建bakcupkeys目录

cd /mnt/sdb1
mkdir backupkeys

创建备份key sh脚本

vi /mnt/sdb1/backupkeys.sh
#! /bin/sh

cp -f /etc/gitlab/gitlab-secrets.json  /mnt/sdb1/backupkeys/
cp -f /etc/ssh/*key* /mnt/sdb1/backupkeys/
cp -f /etc/ssh/sshd_config /mnt/sdb1/backupkeys/
echo key backup done!

创建自动备份计划,并邮件通知

yum install -y mailx
vi /etc/mail.rc
#SMTP
set from=gitlabserver@yourdomain.com
set smtp=smtp.yourdomain.com
set smtp-auth-user=gitlabserver@yourdomain.com
set smtp-auth-password=...
set smtp-auth=login
vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
00 01 * * * root gitlab-rake gitlab:backup:create | mail -s "gitlabbackup" yourname@yourdomain.com,othername@yourdomain.com
30 01 * * * root /mnt/sdb1/backupkeys.sh | mail -s "bakcupkeys" yourname@yourdomain.com,othername@yourdomain.com
00 02 * * * root yum update -y | mail -s "yum update" yourname@yourdomain.com,othername@yourdomain.com
service crond restart

设置备份清理

vi /etc/gitlab/gitlab.rb
gitlab_rails['backup_keep_time'] = 259200 #设置备份保存时长为三天3600 * 24 * 3

gitlab-ctl reconfigure
gitlab-ctl restart

递进升级到目前最新的稳定版本

列出当前gitlab所有版本

yum list gitlab-ce.x86_64  --showduplicates | sort -r

先升级到当前安装主版本的最后一个子版本,再升级到下一个主版本的合适的子版本。
升级完一个版本后,确认无报错,数据正常,再升级到下一个版本。
下面就是从7.x.x升级到10.x.x的升级方法

yum install -y gitlab-ce-7.14.3-ce.1.el7
yum install -y gitlab-ce-8.17.8-ce.0.el7
yum install -y gitlab-ce-9.5.9-ce.0.el7
yum install -y gitlab-ce-10.3.5-ce.0.el7
gitlab-ctl restart

Gitlab常规升级

  1. 关闭versionlock: yum versionlock clear
  2. 查看gitlab-ce更新的版本:yum check-update gitlab-ce
  3. 检查汉化此版本是否已汉化完成,应更新到已汉化的最新版本。查看方法为:访问https://gitlab.com/xhang/gitlab,查看tag
  4. 锁定最新gitlab版本,以10.8.0为例: yum versionlock gitlab-ce-10.8.0
  5. 更新 yum update -y
  6. 重新汉化(patch时出现警告是由于该文件曾汉化过,此时直接回车忽略)

Gitlab重装还原

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:create
cp /etc/gitlab/gitlab.rb /mnt/sdb1 #拷贝配置文件,否则需要重配
yum remove gitlab-ce

mv /opt/gitlab /mnt/sdb1/gitlab-0531 #备份gitlab目录

yum install gitlab-ce
cp /mnt/sdb1/gitlab.rb /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure

gitlab-rake gitlab:backup:restore BACKUP=1527742989_2018_05_31_10.8.2 #根据实际情况填入最新的文件戳
gitlab-ctl reconfigure
gitlab-ctl restart

Gitlab关闭开放注册

gitlab管理员登陆 http://yourip/admin/application_settings
去除Sign-up restrictions - Sign-up enabled 勾选项

posted @ 2019-01-18 21:59  wswind  阅读(587)  评论(0编辑  收藏  举报