服务器搭建 Gitlab

创作于 2018 年左右,最初创建时间已丢失

环境

  • ubuntu16.04

安装 gitlab-ee 步骤(无特殊说明,安装过程中采用默认配置项)

  1. 安装和配置必要依赖
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
  1. 安装邮件服务器
sudo apt-get install -y postfix
  1. 下载 gitlab 安装包并安装
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
  1. 设置访问路径(此处有坑)
sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee

这里的方式是在安装 gitlab 企业版的命令上通过参数的方式指定访问地址,官网示例中直接给的是一个域名地址,此操作其实会在 gitlab 安装后的/etc/gitlab/gitlab.rb文件里有个EXTERNAL_URL的配置项(整个 gitlab 的所有配置都在此)

所以当然这里也就可以只进行安装,即

sudo apt-get install gitlab-ee

然后再修改默认的配置文件,把EXTERNAL_URL改成 gitlab 的访问地址

vi /etc/gitlab/gitlab.rb

重新加载配置文件

sudo gitlab-ctl reconfigure

重启 gitlab 服务

sudo gitlab-ctl restart

问题来了,如果你这里EXTERNAL_URL配置为机器的 IP,即

EXTERNAL_URL="http://xx.xx.xx.xx"

那么默认访问的是http://xx.xx.xx.xx的 80 端口,而 80 端口可能被占用,或受 ECS 限制,需要单独配置 80 端口的访问权限,所以这里可以自定义访问的端口,方法也很简单,就是在 IP 地址后面加上端口,例如:

EXTERNAL_URL="http://xx.xx.xx.xx:8800"

然后还有关键的一步,就是开放端口对外的访问权限,这里以 ubuntu16.04 为例

安装 iptables

sudo apt-get install iptables

添加规则

iptables -I INPUT -p tcp --dport 8800 -j ACCEPT

保存规则

iptables-save

这样操作后,服务器重启后会失效,需要持久化规则

安装 iptables-persistent

sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
  1. 初始化账号

访问配置好的 gitlab 地址,例如http://xx.xx.xx.xx:8800,会提示设置密码,这里设置的即是管理员 root 的密码,重设后使用如下账号登录管理员账号

用户名:root

密码:重设后的密码

  1. 初始化组、用户、项目

创建一个 group,点击顶部扳手图标(admin area),添加用户,添加用户后保存,然后再通过 Edit 修改可设置初始密码(用户使用该账号登录后会提示修改密码)

  1. 将用户添加进组,创建项目

  2. 用户初始操作

登录 gitlab 地址,点击 Setting,添加本地已有的或生成的 SSH-KEY

  1. 完成

卸载 gitlab-ee

这才是个大坑,比安装麻烦(卸载干净不容易),官网也没找到官方的卸载步骤

还好*nix 系统秉承一切皆文件,并且提供了一系列强大工具,比如 ls、find、grep,可以全局查找进行手动清理

  1. 停服务
sudo gitlab-ctl stop
  1. 进程操作(可选)

查看进程

ps -ef|grep gitlab

找到守护进程runsvdir -P /opt/gitlab/service log的 PID 并停掉

kill -9 端口号
  1. 删除 gitlab 相关文件
find / -name gitlab |xargs rm -rf
  1. 删除包含 gitlab 的相关目录和文件
find / -name *gitlab*|xargs rm -rf
  1. 删除 uninstall 时生成的备份文件(可选)
ls /root/gitlab*
rm -rf /root/gitlab*
  1. Done

安装 gitlab-ce

1、2 步同企业版(简略如下)

sudo apt-get install curl openssh-server ca-certificates postfix
  1. 下载 gitlab-ce 包
curl -O https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.4.2-omnibus-1_amd64.deb
  1. 或者直接下载安装脚本
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  1. 上面的脚本执行后会添加 gitlab 服务器配置到/etc/apt/sources.list.d目录,并且添加配置文件gitlab_gitlab-ce.list/etc/apt/sources.list.d目录,内容如下
# this file was generated by packages.gitlab.com for
# the repository at https://packages.gitlab.com/gitlab/gitlab-ce

deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ xenial main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ xenial main

可通过more /etc/apt/sources.list.d/gitlab_gitlab-ce.list查看

后缀为 deb 的为包,使用 curl -O 下载到本地当前文件夹,名称为 deb 包的文件名,使用-o参数可以自定义下载到本地的文件名,例如curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html,后缀为 deb.sh 的为安装脚本,需要通过管道调用 bash 来运行安装脚本,例如curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

  1. 安装 gitlab-ce
sudo apt-get install gitlab-ce
  1. 修改配置文件,把EXTERNAL_URL改成 gitlab 的访问地址
vi /etc/gitlab/gitlab.rb
  1. 重新加载配置文件
sudo gitlab-ctl reconfigure
  1. 重启 gitlab 服务
sudo gitlab-ctl restart
  1. 其他操作见企业版安装(比如开放外部访问端口等)

  2. 访问配置好的地址

  3. 账号初始化

参考链接