zoukankan      html  css  js  c++  java
  • 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 勾选项

  • 相关阅读:
    electron项目打包成dmg
    到底什么是流?
    cent日常操作实践(二)
    pm2基本使用
    koa + sequelize + mysql 项目实践笔记
    cenos 磁盘操作
    MySQL基础操作汇总二
    Python调用shell
    Python常用模块之七 PIL
    random
  • 原文地址:https://www.cnblogs.com/wswind/p/10289934.html
Copyright © 2011-2022 走看看