2019独角兽企业重金招聘Python工程师标准>>> hot3.png

22.13 搭建git服务器

22.14/22.15 安装gitlab

22.16 使用gitlab

22.17 gitlab备份和恢复

svn的钩子  http://coolnull.com/1716.html

gitlab修改端口  http://blog.csdn.net/arybd/article/details/54635295

修改主机名 http://www.mamicode.com/info-detail-1316828.html

第三方邮件 http://blog.csdn.net/liuruiqun/article/details/50000213

server ssh 端口并不是22   http://www.cnblogs.com/limx/p/5709101.html   http://www.linuxidc.com/Linux/2017-02/141043.htm

应该修改  /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

# If you use non-standard ssh port you need to specify it

ssh_port: xxxxx

gitlab的钩子相关配置 http://fighter.blog.51cto.com/1318618/1670667

22.13 搭建git服务器(私有仓库)

1.github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。

#git虽然是分布式的,可以在自己的电脑上工作,但还是需要有一个中心的控制服务器。那这台git服务器就是作为我们中心

#但是没有办法更多的去控制用户的权限,和很快捷很高效的管理用户名和密码或者租之类的东西

#应用场景在开发人员很少的情况下(比如一两个)或者项目代码量不是很大的。平时维护成本很容易,这时候可以选择这种方案去做。

在介绍它之前,先讲述一下命令行的git服务器

2.找一台服务器,首先要安装git,yum install git

3.添加git用户,并且设置shell为/usr/bin/git-shell,目的是为了不让git用户远程登陆

#也就是不需要他登录我们的系统

useradd -s /usr/bin/git-shell git

cd /home/git

4.创建authorized_keys文件,并更改属主、属组和权限,用来存客户端机器上的公钥

#也就是让另外一台机器能和他通信。通过ssh秘钥的形式

mkdir .ssh

touch .ssh/authorized_keys

chown -R git.git .ssh

chmod 600 .ssh/authorized_keys

5.定好存储git仓库的目录,比如 /data/gitroot

mkdir /data/gitroot

cd /data/gitroot

6.git init --bare sample.git

// 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾

#不需要做git add或commit的操作

chown -R git.git sample.git

以上操作是在git服务器上做的,平时git服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像github一样,平时操作都是在我们自己的pc上做的

首先要把客户端上的公钥放到git服务器上/home/git/.ssh/authorized_keys文件里

在客户端上(自己pc)克隆远程仓库

git clone git@ip:/data/gitroot/sample.git

此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后push到远程。

实例:

在开一台虚拟机作为我们的这台服务器

[root@axinlinux-02 ~]# yum install -y git #也要安装git

[root@axinlinux-02 ~]# useradd -s /usr/bin/git-shell git #创建git用户。不需药他远程登录

[root@axinlinux-02 ~]# cd /home/git/ #进入家目录的git目录

[root@axinlinux-02 git]# ls

[root@axinlinux-02 git]# mkdir .ssh #创建.ssh目录

[root@axinlinux-02 git]# touch .ssh/authorized_keys #在.ssh目录下创建authorized_keys文件

[root@axinlinux-02 git]# chmod 600 .ssh/authorized_keys #赋予这个文件600的权限

[root@axinlinux-02 git]# chown -R git:git .ssh #.ssh目录下所有的属主属组为git

以上的目的是让另外一台机器能和他通信,通过ssh秘钥的形式

[root@axinlinux-01 ~]# cat .ssh/id_rsa.pub #把01机器上的公钥复制下来(此处为上一张在github添加秘钥认证时生成的公钥)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXXjoeyXRbpHSwxJa8kvnGev9HV7xqHfQxxVL711ypsMMaKGlpcRVGhRWNkfzS37W0jAfnVZJX3/nSD2BEcrmqmPAxRG48+OZMBhEqh6g6KeCe0JgOA0azm/gpujrrcRNLxbVsT6dTGiRzxfvAG2OPqwOCWN/a3QMPXpdd2IDVTSAw0GMDBYUpr+tHu1DzeVogt5wvdkcBAtb9+caDAAWM0uZLLlG/mZ+Zm2FqX7j8J9LPpy2LIeJF0OBbzeFHMHT1zdUkpLBL5FQSmQ2hrwweT3iqcBXB/A7MNQNan7SFAW4vj7LiUWuxA301RBHuY8e9sS74nLb9lJZds1yle5Hz root@axinlinux-01

[root@axinlinux-02 git]# vim .ssh/authorized_keys #复制的公钥放到这个刚创建的文件里来。其实这一步操作给在github上添加公钥是一个道理

[root@axinlinux-01 ~]# ssh git@192.168.208.130 #在客户端测试一下,看能否登录服务端

fatal: Interactive git shell is not enabled. #出现这样的提示则没问题,验证成功。只不过不允许你直接登录

hint: ~/git-shell-commands should exist and have read and execute access.

Connection to 192.168.208.130 closed.

[root@axinlinux-02 git]# cd /data/

[root@axinlinux-02 data]# mkdir gitroot

[root@axinlinux-02 data]# cd gitroot/

[root@axinlinux-02 gitroot]# ls

[root@axinlinux-02 gitroot]# git init --bare sample.git #初始化,产生sample的文件

初始化空的 Git 版本库于 /data/gitroot/sample.git/

[root@axinlinux-02 gitroot]# chown -R git:git sample.git #属主属组

[root@axinlinux-01 ~]# git clone git@192.168.208.130:/data/gitroot/sample.git #把这个项目克隆到本地

正克隆到 'sample'...

warning: 您似乎克隆了一个空版本库。

[root@axinlinux-01 ~]# cd sample/

[root@axinlinux-01 sample]# cp /etc/init.d/mysqld ./ #做一个文件,推到远程

[root@axinlinux-01 sample]# git add mysqld

[root@axinlinux-01 sample]# git commit -m "add mysql"

[root@axinlinux-01 sample]# git push #推到远程,阿铭做的时候要origin master(指定分支),阿鑫做的时候没有提示。可能是版本的问题

Counting objects: 3, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 3.84 KiB | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To git@192.168.208.130:/data/gitroot/sample.git

* [new branch] master -> master

[root@axinlinux-01 sample]# echo "asfsasafsafasf" > 22.txt #可以多推几个

[root@axinlinux-01 sample]# git add 22.txt

[root@axinlinux-01 sample]# git commit -m "add 22.txt"

[root@axinlinux-01 sample]# git push

caec0d6..f3ff75c master -> master

[root@axinlinux-01 sample]# cd /tmp/ #我们cd到tmp下。将远程的这个项目在把它克隆到新的目录下(假装另一台服务器)

[root@axinlinux-01 tmp]# git clone git@192.168.208.130:/data/gitroot/sample.git #直接克隆服务器下的sample文件(项目)

正克隆到 'sample'...

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 6 (delta 0), reused 0 (delta 0)

接收对象中: 100% (6/6), 4.08 KiB | 0 bytes/s, done.

[root@axinlinux-01 tmp]# cd sample/

[root@axinlinux-01 sample]# ls #就有了

22.txt mysqld

[root@axinlinux-01 sample]# pwd #我们也可以做pull(拉取的动作)

/tmp/sample

[root@axinlinux-01 sample]# vim 22.txt #重新变更一些文件,在提交,在push

[root@axinlinux-01 sample]# git add 22.txt

[root@axinlinux-01 sample]# git commit -m "again 22.txt"

[root@axinlinux-01 sample]# cd /root/sample/ #可以回到刚才的目录下

[root@axinlinux-01 sample]# git pull #直接拉取

[root@axinlinux-01 sample]# ls

22.txt mysqld

[root@axinlinux-01 sample]# cat 22.txt #可以看到我们刚才对22.txt做的变更

asfsasafsafasf

243141341231231

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

22.14/22.15 安装gitlab

1.以上我们使用了自建服务器。本节我们将gitlab这种解决方案(算是比较完美的)

我们可以使用在线的托管的管理平台。比如给github,但是github在美国有点慢。

也可以使用国内的coding.net,还有一个付费的码市,还有一个码云

我们可以把我们的代码放到他们那里,比较省心不用维护

2.除了以上这种方案,还可以自检一个lab界面浏览管理控制的代码管理平台。首先方案就是gitlab软件。我们可以去下载这个软件,在我们自己的服务器上搭建这样的平台出来

3.这台跑gitlab的服务器尽量不要放其他的东西。使用官方的一些备份工具,能备份全部的数据

1.gitlab官网 https://about.gitlab.com/gitlab-com/

2.官方安装文档 https://about.gitlab.com/installation/?version=ce#centos-7 (ce/ee)

#详见实例

3.要求服务器内存不少于2g

4.vim /etc/yum.repos.d/gitlab.repo//加入如下内容 (官方提供的源比较慢,我们使用另一个镜像)

!!!这种方式执行起来并不成功(gpgkey验证起来不成功)。只能按照官方文档去安装,有几部不需要体现,详细见实例!!!

[gitlab-ce]

name=gitlab-ce

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7

Repo_gpgcheck=0

Enabled=1

Gpgkey=https://packages.gitlab.com/gpg.key

5.yum install -y gitlab-ce(ce为社区版本免费)

6.gitlab-ctl reconfigure

#gitlab的核心命令

7.netstat -lnpt //查看监听端口

8.gitlab-ctl stop/restart/start/status

#gitlab-ctl 这个命令可以停止/重启/开启/状态

9.浏览器访问gitlab,输入ip即可

默认管理员root,无密码,它会让我们去定义一个密码

实例:

按照官方文档那个来安装的

[root@axinlinux-01 ~]# yum install -y curl policycoreutils-python openssh-server openssh-clients

[root@axinlinux-01 ~]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash #生成yum的仓库

[root@axinlinux-01 ~]# EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce #yum安装ce版本(社区版本)

[root@axinlinux-01 ~]# gitlab-ctl reconfigure

Running handlers:

Running handlers complete

Chef Client finished, 454/648 resources updated in 04 minutes 59 seconds

gitlab Reconfigured! #最后会告诉你讲gitla先关的服务给你启动起来

[root@axinlinux-01 ~]# ps aux |grep gitlab #可以看到有很多gitlab相关的服务。可以说这个系统很复杂

他会内置一个nginx。如果机器上有安装过nginx,在安装gitlab之前先把nginx关掉,以免冲突

[root@axinlinux-01 ~]# gitlab-ctl stop

[root@axinlinux-01 ~]# killall redis-server #redis如果安装了,也要关掉

redis-server: no process found

[root@axinlinux-01 ~]# gitlab-ctl start

ok: run: alertmanager: (pid 6407) 0s

ok: run: gitaly: (pid 6418) 0s

ok: run: gitlab-monitor: (pid 6428) 0s

ok: run: gitlab-workhorse: (pid 6432) 1s

ok: run: logrotate: (pid 6452) 0s

ok: run: nginx: (pid 6462) 1s

ok: run: node-exporter: (pid 6470) 0s

ok: run: postgres-exporter: (pid 6475) 1s

ok: run: postgresql: (pid 6481) 0s #他用的是这个数据库。

ok: run: prometheus: (pid 6483) 0s

ok: run: redis: (pid 6499) 0s #他也会内置一个redis。所以也要将之前的redis关掉

ok: run: redis-exporter: (pid 6503) 0s

ok: run: sidekiq: (pid 6509) 1s

ok: run: unicorn: (pid 6516) 0s

然后登陆即可,默认为root用户

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

22.16 使用gitlab

nginx相关:

因为在内网里,直接输入内网ip就可以了。

如果想用公网去访问他,那么在公网服务器上用nginx做个代理就可以了,也可以设置域名去访问他

1./var/opt/gitlab/nginx/conf/nginx.conf #主配置文件

2./var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab相关的配置文件。修改端口或绑定域名可以在这里更改

server {

listen *:80; #更改端口

server_name gitlab.example.com; #更改域名

如果这台服务器不需要跑别的服务,仅仅一个gitlab。那就不用动他

进入gitlab:

gitlab常用命令 https://www.cnyunwei.cc/archives/1204

实例:

建一个新的项目

我们在创建新的项目之前先在创建一个新的组

接下来,我们在组里面创建用户>project

接下来添加ssh key

接下来我们在创建一个用户

新的密码为 wx123456789

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

22.17 gitlab备份和恢复

1.gitlab备份 gitlab-rake gitlab:backup:create

#如果数据量很大的话,肯定会耗费不短的时间。在线备份,服务要是开启的状态

#会备份你创建的project(项目)、group、user、当然还有project里的代码

2.备份目录在/var/opt/gitlab/backups

#1543236441_2018_11_26_11.5.0_gitlab_backup.tar,#11.5.0为版本号。

#假如你用的是9.几的gitlab做的备份,想把9.几的tar文件恢复到10.几版本的gitlab里边去,那么就会遇到问题:

要么装一个9.几的版本。

要么就把老的版本升级,然后再做本分。完成之后,在把它搞到10.几版本的gitlab上来。也就是只要是版本一致就能恢复过来

3.gitlab 恢复 先停服务 gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq

#停掉这两个数据的目的是暂时不要变更数据了

gitlab-rake gitlab:backup:restore BACKUP=xxxxx (这里是一个编号,即备份文件的前缀)

#1543236441_2018_11_26_11.5.0_gitlab_backup.tar。红色部分就是BACKUP=后面的编号

再启动服务 gitlab-ctl start

转载于:https://my.oschina.net/u/3866149/blog/3030840

88.搭建git服务器 安装与使用gitlab gitlab备份与恢复相关推荐

  1. Ubuntu20.4搭建git服务器

    Ubuntu20.4搭建git服务器 安装git(客户端+服务器) sudo apt-get install git 创建一个新用户,管理git服务 sudo adduser git 在Linux中创 ...

  2. linux 使用gitblit搭建git服务器

    linux使用gitblit搭建git服务器 安装的过程不是很复杂,首先在官网下载gitblit的安装包,下载版本为gitblit-1.8.0. 解压文件到当前路径 tar -zxvf gitblit ...

  3. Windows下Git的安装和基本使用、搭建Git服务器

    1 Git的安装和基本使用 安装完成桌面有个Git Bash图标: 弹出Git Bash:用 git init 在目录中创建新的 Git 仓库:下面在G:/git2/test1目录创建: 创建完成会有 ...

  4. CentOS7搭建Git服务器

    CentOS7搭建Git服务器 文章目录 CentOS7搭建Git服务器 前言 搭建步骤 参考链接 前言 现有一台操作系统为CentOS 7的服务器,要将其作为代码库服务器使用,要求使用Git进行代码 ...

  5. 使用 Gitolite 搭建 Git 服务器

    Gitolite 是在 Git 之上的一个授权层,依托 sshd 或者 httpd 来进行认证.(认证是确定用户是谁,授权是决定该用户是否被允许做他想做的事情). 通过 Gitolite 你可以设置访 ...

  6. 如何搭建Git服务器

      本文将介绍如何在Linux系统上搭建Git服务器以及查看Git提交记录. 搭建Git服务器   首先,我们需要一台Linux服务器,作为Git服务部署的机器,一般选用Ubuntu或者Debian, ...

  7. 使用gitblit在Windows上搭建git服务器

    使用gitblit在Windows上搭建git服务器 概述 工具准备 安装流程 安装jre-7 测试java环境 解压并配置gitblit 修改data目录下的defaults.properties文 ...

  8. 使用Gitolite搭建Git服务器

    Git服务的管理工具,主要有如下几种. Gitosis- 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制.目前项目已经停止开发,不再维护. Gitolite - 轻量级,开源项目,使用 ...

  9. git服务器文件同步,使用gitolite搭建git服务器并实现文件的自动备份

    现在搭建git服务器是一件比较简单的事情,有很多现成的工具,个人感觉比较好的是使用GitLab搭建git服务器,搭建完成了只有在电脑的浏览器中输入对应的网址就能看到图形界面,图形界面和github很像 ...

最新文章

  1. 技术分享连载(六十九)
  2. 《中国人工智能学会通讯》——10.10 结束语
  3. Java Stringbuilder简单介绍
  4. Linux命令行上执行操作,不退回命令行的解决方法
  5. (一)vue 数据更新 试图不更新 解决办法
  6. ETL异构数据源Datax_图形化数据同步_11
  7. 被问哭了,一位小姐姐的阿里面经!(附部分答案)
  8. java servlet 获取mac地址_Java开发网 - 请教大家几个关于servlet取ip和mac地址的问题~~!...
  9. 【华为云技术分享】云图说 | 华为云AnyStack on BMS解决方案:助力线下虚拟化业务迁移上云
  10. 概率图模型的d-separation概念
  11. SQL中的模糊范围查询特殊符号应用
  12. linux内核网络基础,linux网络内核基础.doc
  13. 系统学习深度学习(四十二)--从AE到VAE
  14. 微信小程序:调用API接口
  15. 训练集和测试集样本分布一致性的判断方法
  16. 推荐10本大数据领域必读的经典好书(火速收藏)
  17. html标签img是什么意思,html中img标签属性是什么意思
  18. web开发必看:你的网站支持https吗?
  19. RCF—用于C++的进程间通讯(4)
  20. python3网络爬虫系列(一)Redis库安装原来只需这样简单三步

热门文章

  1. 每天看了哪些技术点,都记录在该文章下面,时常回过头来看看。
  2. xyntservice
  3. proxmox超融合自动迁移
  4. 查看ftp创建的用户
  5. @NotBlank注解地正确使用
  6. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
  7. osip2 代码分析
  8. javascript expando
  9. 卖程序的小女孩(转)
  10. 不合理的指标【转载】