写在前面

如果你需要一个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 勾选项

gitlab centos 安装配置运维笔记的更多相关文章

  1. Nginx之https配置 - 运维笔记 (http->https强转)

    一.Nginx安装(略)安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块.Nginx安装方法: # ./configu ...

  2. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  3. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  4. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

  5. Linux系统运维笔记(6),CentOS 7.6双网卡路由配置

    Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...

  6. Centos安装流量监控工具iftop笔记

    Centos安装流量监控工具iftop笔记 一.概述 iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等,详细的将会在后面的使用参数中说明.官方网站:http://ww ...

  7. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  8. Linux系统运维笔记(三),设置IP和DNS

    Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...

  9. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

随机推荐

  1. mysql的约束

    SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). (1)NOT NULL约 ...

  2. Hadoop单机环境搭建整体流程

    1.   Ubuntu环境安装和基本配置 本例程中在MAC上安装使用的虚拟机Ubuntu系统(64位,desktop): 基本配置 考虑到以后涉及到hadoop的应用便于权限的管理,特别地创建一个ha ...

  3. 在Eclipse中使用Maven部署项目的Tomcat

    方式一:打war包到tomcat/webapps目录 点击在项目上面 -> 右键 -> Run As -> Maven install 之后查看Maven输出路径: D:\apach ...

  4. CSS 基本知识梳理-续

    CSS 基本知识 1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets),是一种用来表现 HTML 文档样式的语言,样式定义如何显示 HTML 元素,是能够真正做到网 ...

  5. python 之 Collections模块

    官方文档:https://yiyibooks.cn/xx/python_352/library/collections.html 参考: https://blog.csdn.net/songfreem ...

  6. python开发_python中的module

    在python中,我们可以把一些功能模块化,就有一点类似于java中,把一些功能相关或者相同的代码放到一起,这样我们需要用的时候,就可以直接调用了 这样做的好处: 1,只要写好了一个功能模块,就可以在 ...

  7. Eclipse的基本使用

    01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org * b: 安装 * 只需要解压后就能使用 * c: 卸载 * 只 ...

  8. java 控制台 输入字符串

    import java.util.Scanner; //导入输入类 public static void main(String[] args) {      //创建输入对象   Scanner s ...

  9. Bower 使用

    Bower:客户端库管理工具 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 概述 常用操作 项目初始化 库的安装 库的搜索和查看 库的更新和卸载 列出所有库 ...

  10. Spring 学习记录6 BeanFactory(2)

    主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListabl ...