Zydecx's Site

Debug code, debug life, debug today!

搭建GitLab服务器

Time: , by zydecx

GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可以通过Web界面访问公开或私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

本文记录通过GitLab搭建Git私服的过程,可为今后相关工作提供参考。

  1. 下载GitLab

    安装前首先需查看GitLab的环境要求,推荐配置为:

    操作系统:Ubuntu/Debian/CentOS/Red Hat Enterprise Linux/Scientific Linux/Oracle Linux,64bit
    Ruby:Ruby 2.1
    存储:由项目本身决定,推荐SSD硬盘
    CPU:双核(可支持500用户)
    内存:2G(可支持100用户,考虑Redis和Sidekiq的可能开销,建议4G)

    笔者安装环境为:CentOS 6.4(64bit)/4G/双核/200G。下文中,笔者根据自己的安装环境,介绍安装和配置过程。对于其他环境,可进入GitLab官方教程,选择对应的操作系统,按照教程提示安装和配置GitLab。

    NOTE:

    公司新建的虚拟机可能未配置DNS,无法使用yum安装,可参考以下方法配置:

    1. vim /etc/resolv.conf
    2. 添加以下配置

      nameserver 192.168.51.51
      nameserver 8.8.8.8
  2. 安装和配置依赖包

    sudo yum install curl openssh-server postfix cronie
    sudo service postfix start
    sudo chkconfig postfix on
    sudo lokkit -s http -s ssh
  3. 安装GitLab包

    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
    sudo yum install gitlab-ce

    NOTE:

    1. 上述方法将安装GitLab最新版本,若需要指定版本,可手动选择版本
    2. 通过yum安装GitLab速度较慢(往往第一条命令在最后更新软件源缓存数据库时便会因无法访问而出错),因此,可以通过其他工具直接下载安装文件(或者直接通过wget命令从原始地址下载),通过rpm -ivh gitlab-ce-7.13.5-ce.0.el6.x86_64.rpm完成安装工作。gitlab-ce-7.13.5-ce.0.el6.x86_64.rpm点击此处下载。
  4. 配置和启动GitLab

    sudo gitlab-ctl reconfigure

    NOTE:

    启动过程中,出现下面的错误;这问题通过执行命令modprobe bridge解决。

    STDERR: error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
    error: "net.bridge.bridge-nf-call-iptables" is an unknown key
    error: "net.bridge.bridge-nf-call-arptables" is an unknown key
  5. 访问GitLab

    直接在浏览器访问服务器域名或IP地址即可访问GitLab,默认登陆账号为:root\5iveL!fe(登陆后系统提示修改默认密码)。

  6. 配置邮箱服务器

    GitLab提供邮件通知服务,因此需要配置邮箱服务器。接下来以Outlook邮箱为例,介绍配置方法。

    GitLab邮箱服务器可以在/etc/gitlab/gitlab.rb中配置,打开该文件,添加以下配置(使用前替换external_url和邮箱账号/密码):

    external_url 'http://your domain or ip address' # 服务器域名或IP地址,邮件中的链接使用
    
    gitlab_rails['gitlab_email_from'] = '***@outlook.com'
    gitlab_rails['gitlab_email_display_name'] = 'GitLab@Eccom'  # 邮件显示名称
    gitlab_rails['gitlab_email_reply_to'] = '***@outlook.com'
    
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp-mail.outlook.com"
    gitlab_rails['smtp_port'] = 25
    gitlab_rails['smtp_user_name'] = "***@outlook.com"
    gitlab_rails['smtp_password'] = "********"
    gitlab_rails['smtp_domain'] = "outlook.com"
    gitlab_rails['smtp_authentication'] = :login
    gitlab_rails['smtp_enable_starttls_auto'] = true

    配置修改后,重复步骤4的命令sudo gitlab-ctl reconfigure更新配置即可。

    经实际测试:

    • 163邮箱: 可用,替换上述配置中smtp地址为smtp.163.com,smtp域名为163.com,并将账号替换成实际的账号
    • gmail邮箱:由于无法联通gmail服务器smtp.gmail.com,因此无法测试
    • 公司邮箱:使用上述配置,无法使用公司邮箱

This is a magic phrase. You CANNOT see it(I'll really FULE you if you do that), but it does work. Why? You may feel confused. OK, at least it doesn't afftect your experience and it works. That is what we call MAGICE!