在Ubuntu中搭建Gitlab环境

· 起因

    项目的版本库要从 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 :

sudo apt-get install openssh-server


安装 ssh 

    查看ssh服务是否启动

sudo ps -e |grep ssh #有显示ssh服务代表已启动

sudo service ssh start   #启动ssh服务


启动 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  

    

配置 postfix ,选择Internet,简单输入一个email地址就ok

· 解决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 启动后不会提供服务,但也不会有任何提示,此处参考 官方文档

至此就大功告成了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 一、文件/文件夹管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls...
    小杰的简书阅读 2,455评论 0 45
  • 一、文件/文件夹管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls...
    会飞的鱼Coo阅读 4,374评论 1 23
  • Ubuntu 常用命令大全 查看软件 xxx 安装内容 #dpkg -L xxx 查找软件 #apt-cache ...
    guiwuzhe阅读 2,451评论 0 14
  • 《坟墓》 ——坟墓 坟墓 不是留给死人的 而是留给活人的 让活人可以思念 思念回去的地方
    瘦桶阅读 565评论 1 61
  • 数据库(database):存储数据的容器。 数据库管理系统(DBMS - Database Management...
    JooYip阅读 404评论 0 0