[转贴]手把手教你 GitLab 的安装及使用
https://www.jianshu.com/p/b04356e014fa
前言
新入职公司,发现公司还在使用落后生产工具 svn,由于重度使用过 svn 和 git ,知道这两个工具之间的差异,已经在使用 git 的路上越走越远。
于是,跟上级强烈建议让我在公司推行 git 和他的私有仓库 gitlab,多次安利“磨刀不误砍柴工”的理念,终于被我说服。
以下是我边安装和边记录的详细笔记,务求安装好之后分享给同事直接就能看懂,降低团队的学习成本。
git的优点
- git是分布式的,svn不是
git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。 - GIT分支和SVN的分支不同
分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。 - git有一个强大的代码仓库管理系统 - gitlab
可以很方便的管理权限、代码review,创建、管理project
GitLab介绍
GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理非常重要。
版本:GitLab 分为社区版(CE) 和企业版(EE)。
配置:建议CPU2核,内存2G以上。
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安装
1.源码安装
2.yum安装
官方源地址:https://about.gitlab.com/downloads/#centos6
清华大学镜像源:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce
新建 /etc/yum.repos.d/gitlab_gitlab-ce.repo,内容为:
sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
#这句是用来做防火墙的,避免用户通过ssh方式和http来访问。
sudo lokkit -s http -s ssh
再执行
# 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
listen *:8888;
server_name gitlab.test.domain.com;
set $http_host_with_default "gitlab.test.domain.com:8888";
补充说明:因为编译gitlab的配置 /etc/gitlab/gitlab.rb 时会重新生成这个自定义nginx 配置,所以只要 gitlab 的配置配得好,上面的nginx其实不需要自定义的。
修改密码
# 可以将此命令写入crontab,以实现定时备份
/usr/bin/gitlab-rake gitlab:backup:create
备份的数据会存储在/var/opt/gitlab/backups,用户通过自定义参数 gitlab_rails['backup_path'],改变默认值。
恢复
vim /etc/gitlab/gitlab.rb
gitlab基本配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = “smtp.exmail.qq.com”
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = “huangdc@domain.com“
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_authentication']= “plain"
gitlab_rails['smtp_enable_starttls_auto']= true
gitlab_rails['gitlab_email_from']= 'huangdc@domain.com'
gitlab_rails['gitlab_email_reply_to']= ‘noreply@domain.com'
服务器修改过ssh端口的坑(需要修改配置ssh端口)
#使配置生效
gitlab-ctl reconfigure
#重新启动GitLab
gitlab-ctl restart
GitLab常用命令
日志地址:/var/log/gitlab/ # 对应各服务的打印日志
服务地址:/var/opt/gitlab/ # 对应各服务的主目录
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
新建项目
使用root用户登录进gitlab会后,点击“new project“创建一个项目,比如项目命名为“kuaijiFirstProject”。
然后会发现,硬盘上已经生成了一个git文件:
ssh -T -p 55725 git@gitlab.domain.com
注意:
1.登录
管理员会为使用者开通账号并设置权限。
2.使用者在客户端生成ssh key
参考文章: http://www.jianshu.com/p/142b3dc8ae15
#标准测试代码:ssh -T git@gitlab.com
ssh -T -p 55725 git@gitlab.domain.com #修改过端口号的测试代码
如果连接成功的话,会出现以下信息:
Host gitlab.domain.com
IdentityFile /Users/david/.ssh/id_rsa
命令行环境下初始化项目
- 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
git clone ssh://git@gitlab.domain.com:55725/huangdc/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
命令行环境下迁移旧的项目
- 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
cd /Users/david/work_www/memberApi
git init
git remote add origin ssh://git@gitlab.domain.com:55725/dev/memberApi.git
git push -u origin master
SourceTree的安装和打开
- 官网下载链接:https://www.sourcetreeapp.com/
- 打开SourceTree之后,需要登录Atlassian账号来激活SourceTree。可以使用Google账号直接关联登录。
- 登录后还需要一些设置,以最简单的方式跳过就行。
Git Flow
http://flc.ren/2015/12/381.html
备注
这篇文章主要记录如何安装和使用 GitLab ,晚点再分享一篇讲解分支模型策略的文章。