热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GitLab在centos7上安装和使用

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

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

    [gitlab-ce]
    name=Gitlab CE Repository
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1

注意:每行前面不能有空格

安装依赖

    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

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

再执行

    sudo yum makecache
    sudo yum install gitlab-ce
    sudo gitlab-ctl reconfigure  #Configure and start GitLab

注:
sudo yum makecache 将服务器上的软件包信息 先在本地缓存,以提高 搜索 安装软件的速度

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

    # 外网访问的端口,如果服务器已经有服务器占用了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其实不需要自定义的。

修改密码

    gitlab-rails console production user = User.where(id:1).first user.password='12345678' user.save!
quit

注:一行一行执行,密码只是8位

GitLab备份和恢复

备份

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

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

恢复

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

GitLab配置文件修改

    vim /etc/gitlab/gitlab.rb

gitlab基本配置:

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

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端口)

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

配置生效

    #使配置生效 gitlab-ctl reconfigure #重新启动GitLab gitlab-ctl restart 

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-rake gitlab:check SANITIZE=true --trace # 检查gitlab; gitlab-ctl tail # 查看日志; gitlab-ctl tail nginx/gitlab_access.log 

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

常用目录

    日志地址:/var/log/gitlab/ # 对应各服务的打印日志 服务地址:/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文件:

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

汉化

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

 

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

以下跟安装步骤无关

 

gitlab的使用

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

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

1.登录

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

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

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

    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连接

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

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

    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

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

命令行环境下初始化项目

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
    ssh://git@gitlab.domain.com:55725/huangdc/test.git 
  1. 在本地初始化仓库、提交代码、推送到远程 master 分支。
    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 

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

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
    #注意:已存在代码的旧项目只能推送到空的远程代码仓库 ssh://git@gitlab.domain.com:55725/dev/memberApi.git 
  1. 本地初始化项目、关联远程仓库、推送到远程仓库
 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的安装和打开

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

Git Flow

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




推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
  • SVN自动化正文共:5007 字预计阅读时间: 13 分钟平时自己多用Git来做版本控制,但很多公司内部依旧使用SVN,核心原因其实就是SVN够用了,懒得换,虽然自己用git,但对 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 第九章  Spring Cloud Config
    9-1.SpringCloudConfig是什么?​ 在分布式的系统中,尤其是当我们的分布式项目越来越多,每个项目都有自己的配置文件&# ... [详细]
  • ps:本文转载于:https:www.ibm.comdeveloperworkscnjavaj-lo-git-mangeindex.htmlGit是目前最流行的源代码管理工具。大量 ... [详细]
  • docker+gitlab+gitlab-runner环境怎么部署
    本篇内容介绍了“docker+gitlab+gitlab-runner环境怎么部署”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带 ... [详细]
  • 我们正在合并到公司的Git中。我们有这种特定的情况,其中我们的主分支是我们 ... [详细]
  • Permissiondenied(publickey).fatal:Couldnotreadfromremoterepository.没有权限(publickey)。致命:无法从远 ... [详细]
  • 公司里的git从一家小公司跳到了大公司,技术没变,但是开发工具可谓是鸟枪换大炮,首要的问题是从svn换到了git,git大家肯定都玩过,但是git多人协同操作,估计只有在公司才有机 ... [详细]
  • 1找现有的镜像dockerhub上搜索到一个,其在github上公布了镜像构建的dockerfile,并且支持http和svn两种协议,就这个吧。https:github.come ... [详细]
  • 新的功能分支完成后要把分支和并到主干1查看新旧版本号使用svnlog--stop-on-copy2使用合并命令svnmerge-r旧版本号:新版本号source[即来自版本的svn ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
  • Objective C接入Sonar代码扫描
    目录技术方案环境准备扫描器配置项目配置SonarQube配置jenkins接入一些坑技术方案Sonar本身有对OC的代码扫描插件——SonarCFamily,但是是收费的。出于成本 ... [详细]
author-avatar
总是被姨妈折磨的吕孩纸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有