14_Linux环境搭建GitLab服务器

近期想学习Git,公司目前都是使用的SVN,以下是学习搭建一个GitLab服务器的记录总结。
转载自https://www.jianshu.com/p/b04356e014fa,稍作整理而来。

@Author Jacky Wang ,
转载请注明出处 https://www.jianshu.com/p/e51204f935c6

一、Git及GitLab的介绍

1.1 Git的优点

  • Git是分布式的,SVN不是

    Git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log
    
  • GIT分支和SVN的分支不同

    分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。
    如下图。
    
1.png
  • Git有一个强大的代码仓库管理系统 - GitLab
可以很方便的管理权限、代码review,创建、管理project

1.2 GitLab与GitHub的区别

GitLabGitHub一样属于第三方基于Git开发的作品,免费且开源。

不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发。简单来说可把GitLab看作个人版的GitHub

1.3 GitLab的介绍

GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理非常重要。
版本:GitLab 分为社区版(CE) 和企业版(EE)。
配置:建议CPU2核,内存2G以上。

1.3.1 Gitlab的服务构成:

Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 轻量级的反向代理服务器。(go)

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。

logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)

二、GitLab服务器的搭建

2.1 环境配置

  1. 系统:此次使用的是CentOS 7
  2. CPU:建议双核以上
  3. 内存:2GB(官方建议4GB以上)


    2.jpg

2.2 GitLab服务的安装

2.2.1 使用yum安装GitLab所需依赖

清华大学镜像源:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce

  1. 添加GitLab所需依赖库
vim /etc/yum.repos.d/gitlab_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
  1. 安装GitLab所需依赖

    sudo yum -y install curl openssh-server openssh-clients postfix cronie
    sudo service postfix start
    sudo chkconfig postfix on
    sudo yum -y install lokkit
    #这句是用来做防火墙的,避免用户通过ssh方式和http来访问。
    sudo lokkit -s http -s ssh
    
  2. 安装GitLab

    sudo yum makecache
    sudo yum -y install gitlab-ce
    sudo gitlab-ctl reconfigure  #Configure and start GitLab
    
3.png
  1. GitLab配置文件修改

    vim /etc/gitlab/gitlab.rb
    
    #外部访问url(经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
    external_url 'http://192.168.5.124'
    #默认值就是8080。如果端口被占用,可将8080修改为其它(例如:9090)
    unicorn['port'] = 8080
    
    ps:external_url就是最后也就是git资源的路径,如:
     git@192.168.5.124:root/repo1.git
     http://192.168.5.124/root/repo1.git
    
  2. 配置域名(经过第4步的配置这一步可省略,在gitlab-ctl reconfigure时会自动配置完毕)

    vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
    
    内容:
    # 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
    listen *:80;
    server_name http://192.168.5.124;
        
    set $http_host_with_default "http://192.168.5.124";
    
    ps: 这里的server_name填写服务器对应的域名即可
    
  1. 修改密码
gitlab-rails console production
user = User.where(id:1).first
user.password='12345678'
user.save!
exit
  1. 使修改的配置生效

    #使配置生效
    gitlab-ctl reconfigure
    #重新启动GitLab 
    gitlab-ctl restart
    
4.png
2.2.2 GitLab常用命令
gitlab-ctl start    # 启动所有 gitlab 组件;
gitlab-ctl stop        # 停止所有 gitlab 组件;
gitlab-ctl restart        # 重启所有 gitlab 组件;
gitlab-ctl status        # 查看服务状态;
vim /etc/gitlab/gitlab.rb        # 修改gitlab配置文件;
gitlab-ctl reconfigure        # 重新编译gitlab的配置;
gitlab-ctl show-config      #验证配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
gitlab-ctl tail        # 查看日志;
gitlab-ctl tail nginx/gitlab_access.log

gitlab-ctl uninstall    #删除gitlab(保留数据)
gitlab-ctl cleanse  #删除所有数据,从新开始
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION   #查看gitlab版本

注意:执行 reconfigure 命令会把gitlab的nginx组件的配置还原,导致自定义修改的端口以及域名等都没有了。
2.2.3 常用目录
日志地址:/var/log/gitlab/   # 对应各服务的打印日志 
服务地址:/var/opt/gitlab/   # 对应各服务的主目录

2.3 登陆GitLab后台管理页面

本机安装好Git程序,然后登录到GitLab后台:我这里的地址就是之前配置的http://192.168.1.124

测试能否成功连接步骤:

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