git的优点

  1. git是分布式的,svn不是
    git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码、查看log。
  2. GIT分支和SVN的分支不同
    分支在SVN中实际上是版本库中的一份copy,而git一个仓库是一个快照,所以git 切换、合并分支等操作更快速。
  3. git有一个强大的代码仓库管理系统 - gitlab
    可以很方便的管理权限、代码review,创建、管理project

GitLab介绍

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

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,内容为:

  1. [gitlab-ce]
  2. name=Gitlab CE Repository
  3. baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
  4. gpgcheck=0
  5. enabled=1
  6. 注意:每行前面不能有空格

安装依赖

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

  注:sudo lokkit -s http -s ssh 会提示无法找到lokkit命令,这个时候需要手动安装,安装的命令如下: yum install lokkit,lokkit 可以帮助我们设定iptables 打开http和ssh。

再执行

  1. sudo yum makecache
  2. sudo yum install gitlab-ce
  3. sudo gitlab-ctl reconfigure #Configure and start GitLab
  4. 注:sudo yum makecache 将服务器上的软件包信息 先在本地缓存,以提高 搜索 安装软件的速度

配置域名: vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

  1. # 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
  2. listen *:8888;
  3. server_name gitlab.test.domain.com;
  4. set $http_host_with_default "gitlab.test.domain.com:8888";

补充说明:因为编译gitlab的配置 /etc/gitlab/gitlab.rb 时会重新生成这个自定义nginx 配置,所以只要 gitlab 的配置配得好,上面的nginx其实不需要自定义的。

修改密码

  1. gitlab-rails console production
  2. user = User.where(id:1).first
  3. user.password='12345678'
  4. user.save!
    quit
  5. 注:一行一行执行,密码只是8

GitLab备份和恢复

备份

  1. # 可以将此命令写入crontab,以实现定时备份
  2. /usr/bin/gitlab-rake gitlab:backup:create

备份的数据会存储在/var/opt/gitlab/backups,用户通过自定义参数 gitlab_rails['backup_path'],改变默认值。

恢复

  1. # 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况
  2. sudo gitlab-ctl stop unicorn
  3. sudo gitlab-ctl stop sidekiq
  4. # 进入备份目录进行恢复,1476900742为备份文件的时间戳
  5. cd /var/opt/gitlab/backups
  6. gitlab-rake gitlab:backup:restore BACKUP=1476900742
  7. cd -
  8. # 启动unicorn和sidekiq
  9. sudo gitlab-ctl start unicorn
  10. sudo gitlab-ctl start sidekiq

GitLab配置文件修改

  1. vim /etc/gitlab/gitlab.rb

gitlab基本配置:

  1. #外部访问url(经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
  2. external_url 'http://gitlab.test.domain.com:8888'
  3. #默认值就是8080。如果端口被占用,可将8080修改为其它(例如:9090) 注:这里直接修改成8081吧,免得冲突
  4. unicorn['port'] = 8080

gitlab发送邮件配置

  1. gitlab_rails['smtp_enable'] = true
  2. gitlab_rails['smtp_address'] = smtp.exmail.qq.com
  3. gitlab_rails['smtp_port'] = 25
  4. gitlab_rails['smtp_user_name'] = huangdc@domain.com
  5. gitlab_rails['smtp_password'] = "smtp password"
  6. gitlab_rails['smtp_authentication']= plain"
  7. gitlab_rails['smtp_enable_starttls_auto']= true
  8. gitlab_rails['gitlab_email_from']= 'huangdc@domain.com'
  9. gitlab_rails['gitlab_email_reply_to']= ‘noreply@domain.com'

服务器修改过ssh端口的坑(需要修改配置ssh端口)

  1. #修改过ssh端口,gitlab中项目的的ssh地址,会在前面加上协议头和端口号“ssh://git@gitlab.domain.com:55725/huangdc/test.git”
  2. gitlab_rails['gitlab_shell_ssh_port'] = 55725

配置生效

  1. #使配置生效
  2. gitlab-ctl reconfigure
  3. #重新启动GitLab
  4. gitlab-ctl restart

GitLab常用命令

  1. gitlab-ctl start # 启动所有 gitlab 组件;
  2. gitlab-ctl stop # 停止所有 gitlab 组件;
  3. gitlab-ctl restart # 重启所有 gitlab 组件;
  4. gitlab-ctl status # 查看服务状态;
  5. vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
  6. gitlab-ctl reconfigure # 重新编译gitlab的配置;
  7. gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
  8. gitlab-ctl tail # 查看日志;
  9. gitlab-ctl tail nginx/gitlab_access.log

注意:执行 reconfigure 命令会把gitlab的nginx组件的配置还原,导致自定义修改的端口以及域名等都没有了。

常用目录

  1. 日志地址:/var/log/gitlab/ # 对应各服务的打印日志
  2. 服务地址:/var/opt/gitlab/ # 对应各服务的主目录

查看gitlab版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

新建项目

浏览器访问: http://gitlab.test.domain.com:8888    root 密码:12345678

使用root用户登录进gitlab会后,点击“new project“创建一个项目,比如项目命名为“kuaijiFirstProject”。
然后会发现,硬盘上已经生成了一个git文件:

  1. /var/opt/gitlab/git-data/repositories/root/kuaijiFirstProject.git

汉化

https://gitlab.com/xhang/gitlab.git

---------------------------------------------------------------------------------------------

以下跟安装步骤无关

gitlab的使用

  1. ssh -T -p 55725 git@gitlab.domain.com

注意:<fornt style="color:red">以上这条 ssh 命令测试通过,未必代表就能 git clone 代码,git clone 代码需要执行命令的账户有写权限,如果是普通用户用 sudo git clone 那么 git 就会使用的 root 账号的 Private Key。 </fornt>

1.登录

管理员会为使用者开通账号并设置权限。

2.使用者在客户端生成ssh key

参考文章: http://www.jianshu.com/p/142b3dc8ae15

  1. ssh-keygen -t rsa -C "huangdc@domain.com"

3.将公钥的内容copy到gitlab用户设置里面的“SSH Keys”

Windows: clip < ~/.ssh/id_rsa.pub
Mac: pbcopy < ~/.ssh/id_rsa.pub
GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub

4.测试ssh连接

  1. #标准测试代码:ssh -T git@gitlab.com
  2. ssh -T -p 55725 git@gitlab.domain.com #修改过端口号的测试代码

如果连接成功的话,会出现以下信息:

  1. Welcome to GitLab, huangdc!

说明:实际上执行这条ssh命令,所使用的远程服务器的用户是git,这个用户是在安装gitlab的时候生成的,所有使用gitlab服务器的ssh客户端,都是使用git这个用户。在这里的用户“huangdc”是通过gitlab创建的,是用于gitlab的权限管理,也用作标识提交代码的开发者信息,不要跟ssh的用户混淆了。

如何使用多个SSH公钥(自己电脑在使用多个代码仓库)

原理其实是:因为每个仓库都需要 ssh 连接,而 ssh 命令默认是使用 .ssh 目录下面的私钥去连接代码仓库,所以我们可以在 .ssh/config 目录里面针对不同的仓库域名重定义它的私钥。

例子如下:

编辑文件: vim /Users/david/.ssh/config

  1. Host gitlab.domain.com
  2. IdentityFile /Users/david/.ssh/id_rsa

命令行环境下初始化项目

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
  1. ssh://git@gitlab.domain.com:55725/huangdc/test.git
  1. 在本地初始化仓库、提交代码、推送到远程 master 分支。
  1. git clone ssh://git@gitlab.domain.com:55725/huangdc/test.git
  2. cd test
  3. touch README.md
  4. git add README.md
  5. git commit -m "add README"
  6. git push -u origin master

命令行环境下迁移旧的项目

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
  1. #注意:已存在代码的旧项目只能推送到空的远程代码仓库
  2. ssh://git@gitlab.domain.com:55725/dev/memberApi.git
  1. 本地初始化项目、关联远程仓库、推送到远程仓库
  1. cd /Users/david/work_www/memberApi
  2. git init
  3. git remote add origin ssh://git@gitlab.domain.com:55725/dev/memberApi.git
  4. git push -u origin master

SourceTree的安装和打开

  1. 官网下载链接:https://www.sourcetreeapp.com/
  2. 打开SourceTree之后,需要登录Atlassian账号来激活SourceTree。可以使用Google账号直接关联登录。
  3. 登录后还需要一些设置,以最简单的方式跳过就行。

Git Flow

http://flc.ren/2015/12/381.html

GitLab在centos7上安装和使用的更多相关文章

  1. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  2. 在 CentOS7 上安装 zookeeper-3.4.9 服务

    在 CentOS7 上安装 zookeeper-3.4.9 服务 1.创建 /usr/local/services/zookeeper 文件夹: mkdir -p /usr/local/service ...

  3. 在 CentOS7 上安装 MongoDB

    在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 ...

  4. 在 CentOS7 上安装 MySQL5.7

    在 CentOS7 上安装 MySQL5.7 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建 ...

  5. 在 CentOS7 上安装 Tomcat9

    在 CentOS7 上安装 Tomcat9 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目 ...

  6. 在CentOS7上安装JDK1.8

    在CentOS7上安装JDK1.8 1 通过 SecureCRT 连接到阿里云 CentOS7 服务器: 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 to ...

  7. 在Centos7上安装漏洞扫描软件Nessus

    本文摘要:简单叙述了在Centos7上安装Nessus扫描器的过程   Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件,Nessus的用户界面是基于Web界面来访问Nessus漏洞扫描器 ...

  8. 如何在centos7上安装源码包

    在我们使用linux的过程中,有很多程序是通过红帽官网给的系统中安装的,但是一般来说,系统更新的速度比较慢,如果这个时候我们又想用最新版的该怎么办呢?总不能一直等系统升级吧╮(╯﹏╰)╭所以,我们可以 ...

  9. centos7上安装0penStack

    centos7上安装0penStack author:headsen chen 2017-10-09  20:41:54 个人原创,欢迎转载,请注明作者,出去,否则依法追究责任 一,准备工作(配置ip ...

随机推荐

  1. 最近面试被问到一个问题,AtomicInteger如何保证线程安全?

    最近面试被问到一个问题,AtomicInteger如何保证线程安全?我查阅了资料 发现还可以引申到 乐观锁/悲观锁的概念,觉得值得一记. 众所周知,JDK提供了AtomicInteger保证对数字的操 ...

  2. python - Excel表格

    from openpyxl import load_workbook wb = load_workbook(r'C:\Users\admin\Desktop\数据筛选.xlsx') # print(w ...

  3. php 进行跨域操作

    本地配置两个域名: http://www.concent.com   主域名 http://s.concent.com/       子域名 在主域名下添加跨域代码: ini_set('session ...

  4. 借助 LVS + Keepalived 实现负载均衡

    虽然现在云手段很高明了.但是这个lvs + keepalive 还是需要了解下的. 今天就整理了下lvs和keepalive的东西.做下总结留作以后怀念 在实际应用中,在Web服务器集群之前总会有一台 ...

  5. java学习笔记11-static关键字

    如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...

  6. kubenetes_V1.14.0 安装部署

    k8s的安装有多种方式,如yum安装,kubeadm安装,kubemini安装,二进制安装(生产环境多采用此方式精确控制安装)等.本文是入门系列验证,之前进行过yum安装,可以查看文章<k8s入 ...

  7. Spring中@Component注解,@Controller注解详解

    在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式,只需要添加几行自动注入的的配置,便可以完成 Service层,Controll ...

  8. 使用element-ui遇到的各种小问题

    一.Dialog对话框 1.在使用嵌套Dialog的时候,会出现遮罩层在内容的上方这种错乱情况 解决办法:http://element-cn.eleme.io/#/zh-CN/component/di ...

  9. Mac 与 windows eclipse 快捷键对照

      Mac windows 方法注释 option+command+j alt+shift+j 在方法里上右击,source -> Generate Element Comment 删除当前行 ...

  10. <!特别的一天>

    <!DOCTYPE html> <html> <head> <meta charset="gb2312/"> <title&g ...