· 起因
项目的版本库要从 SVN 迁移到 Git 上,考虑到团队管理方便,Gitlab 提供了比控制台更直观的管理项目、组的管理,因此搭建了一个Gitlab的版本控制环境,过程中遇到一些问题,记录下来。
· Ubuntu
为什么要用Ubuntu呢,一是Gitlab对Ubuntu支持较好,二是Ubuntu安装软件也方便快捷,其安装过程就不讲了,都是图形化的操作,安装完后设置好IP地址就好,Ubuntu的下载地址 https://www.ubuntu.com/download。
· 安装SSH
访问Git还是要安装ssh,Ubuntu 默认没有安装,使用下面的命令来安装 ssh:
sudo apt-get update
输入密码后,更新系统
更新系统安装ssh :
安装 sshsudo apt-get install openssh-server
查看ssh服务是否启动
启动 ssh 服务 服务已启动sudo ps -e |grep ssh #有显示ssh服务代表已启动
sudo service ssh start #启动ssh服务
· 安装 ca-certificates 和 postfix
Gitlab 使用 https 时需要配置 ca,postfix 是作为Gitlab的默认邮件发送工具的,我们在实际工作中没有使用邮件服务器,因此psotfix 只是简单配置了一下,但并没有起作用,想要配置postfix 的童鞋参考 http://wiki.ubuntu.org.cn/Postfix_%E5%9F%BA%E6%9C%AC%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97。
#安装 ca 和 postfix
sudo apt-get install ca-certificates postfix
· 解决Ubuntu中,vim 在编辑模式下键盘位置不准的问题
在 MAC 系统下,vim 编辑模式的键盘位置有误,这个问题在windows上没有发现(PS:我是在虚拟机中安装的Ubuntu),解决这个问题的办法是重新安装 vim:
#卸载vim
$sudo apt-get remove vim-common
#安装vim
$sudo apt-get install vim
· 安装 Gitlab
Gitlab 的安装文件还比较大,如果有官方的源,怕是还没有下载下来就挂了,所以要使用国内的镜像来安装,过程如下:
#信任 Gitlab 的 GPG 公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
编辑 /etc/apt/sources.list.d/gitlab-ce.list 文件,这个根据不同的服务器,会有所不同,具体参考 清华大学镜像站使用帮助。Ubuntu 16.04LTS的内容如下:
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
设置好后,就可以安装了
sudo apt-get update
sudo apt-get install gitlab-ce
如果一切顺利,Gitlab 就安装完毕了。
· Gitlab 配置
首先,你要配置你的域名,gitlab的所有配置都可以在 /etc/gitlab/gitlab.rb 文件中配置,这个是我见过的最大的配置文件了,配置非常 ”豪华“。
sudo vim /etc/gitlab/gitlab.rb
配置 “external_url” 这个参数为你的域名地址,然后执行:
sudo gitlab-ctl reconfigure
重新启动 Gitlab,你就可以登录Gitlab了:
首次登录需要修改root 用户的密码进去之后就可以创建 Group,创建 project,然后为用户设置 ssh 的 key,就可以作为中央仓库使用了,这个本文不做详细说明了,后面另些一篇文章详细说明吧。
· 配置 Https
如果想用 Https 来访问 Gitlab,还需要生成自己的证书,Ubuntu默认安装了openssl,可以直接使用:
#建立 ssl 目录
mkdir -p /home/michael/work/openssl
# 将原openssl目录下的ssl/misc/CA.sh拷贝到自己创建的测试目录下
cp /usr/lib/ssl/misc/CA.sh /home/michael/work/openssl
# 创建主证书,按照提示输入信息
./CA.sh -newca
# 拷贝成ca.crt
cp demoCA/cacert.pem ca.crt
#生成服务器私钥
openssl genrsa -des3 -out server.key 1024
#生成csr文件
openssl req -new -key server.key -out server.csr
# 签名并生成证书
openssl ca -in server.csr -out server.crt
# 下面是生成客户端证书,我们这个场景没有用到,感兴趣的童鞋可以试下
# 生成客户端私钥
openssl genrsa -des3 -out client.key 1024
# 生成csr文件
openssl req -new -key client.key -out client.csr
# 签名并生成证书
openssl ca -in client.csr -out client.crt
我们用到的是 server.key 和 server.crt 文件,这两个文件要复制到 /etc/gitlab/ssl 路径下,然后修改配置
sudo vim /etc/gitlab/gitlab.rb
修改url
# note the 'https' below
external_url "https://gitlab.example.com"
http 请求转 https
nginx['redirect_http_to_https'] = true
证书文件的路径:
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
此处有个问题一定要注意,如果在创建server.key 时,输入了密码,那么一定要回到我们openssl的目录,也就是上文中的 /home/michael/work/openssl,执行一条命令,重新生成一下server.key:
openssl rsa -in server_before.key -out server_after.key
这样就把密码去掉了,因为如果server.key 中有密码,那么https 模式下,gitlab 启动后不会提供服务,但也不会有任何提示,此处参考 官方文档。
至此就大功告成了。
网友评论