云服务器搭建git仓库

前言:代码平台托管安全吗?

看这则新闻:

云服务器搭建git仓库_第1张图片

最近代码托管平台代码泄露火了一下,经理赶紧让我们未雨绸缪,把托管在开源中国的项目弄到本地来,哈哈,其实项目都捏在自己手里确实安全多了,但是毕竟建立本地仓库还是约束性太大,于是决定在自己的服务器里搭建git仓库(多少心里安全点哈)狗头保命

总的来说就是如何项目不开源?那就是搭建自己的git服务器

好了开整:

一、安装git

【我们的服务器是CentOS7】供参考。

1.服务器安装git

sudo apt-get install git  (适合Debian系列linux系统,例如:Ubuntu,安装deb包的命令是“dpkg -参数” )

或者:

yum install  git  (适合RedHat系列linux系统,例如:Centos ,安装rpm包的命令是“rpm -参数” )

二、创建git用户

1.创建git用户:(用来运行git服务)

adduser git 

2.设置密码:(尽量简短而不失复杂)

passwd git 

3.切换到git用户 

su 命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

su git

三、初始化公库

1.确定仓库位置

这里选择了/home/git/ 创建名为warehouse的仓库 运行:

sudo git init --bare warehouse.git

此时warehouse.git是一个裸区,不工作,作纯粹的代码共享,用户也不鞥更改仓库的工作区

2.配置公钥

2.1生成公钥

SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录,查看一下:

cd  ~/.ssh

如果没有xxx.ras或者xxx.pub文件,生成一下:

ssh-keygen -t rsa

这里生成的.pub文件内容就是公钥。

选择一下密钥存储位置,以及查看密钥的密码(可以不设置),按enter结束

云服务器搭建git仓库_第2张图片

查看密钥命令:

$ cat ~/.ssh/id_rsa.pub

2.2配置密钥

切换到git用户:

su git

打开git位置:

cd /home/git 

ls -a 

首先确认是否有ssh密钥:若有.ssh文件夹,进入查看是否有authorized_keys文件,如果都没有

创建.ssh文件夹

mkdir  .ssh

创建authorized_keys文件:

touch authorized_keys

编辑authorized_keys文件,将生成的公钥粘贴到文件内

项目肯定不止一个开发者,把所有的git账号的密钥诸葛追加到authorized_keys尾部即可。

四、禁用shell登录

这一步是防止使用git用户使用普通的bash

vim /etc/passwd

最后一行看到类似的:

更改为:

当试图使用git用户登录的是时候,报错:

五、远程仓库权限问题

进入仓库目录执行:

chown  -R  git:git  warehouse.git (warehouse是自己起的仓库名)

 

至此,服务器git仓库就已经搭建完毕了

接下来进行项目迁移

六、数据仓库迁移

以上warehouse.git是我自建的空库

因为原来已经有在使用的仓库,所以要把项目迁移到新仓库

1.把本地仓库的项目变为纯仓库:

示例(我的项目名叫mySpider):

git  clone --bare  mySpider mySpider.git

2.将纯仓库放到git服务器上:

scp -r mySpider.git [email protected]:/home/git/

云服务器搭建git仓库_第3张图片

3.j继续进入本地仓库的项目内,查看当前项目的远程仓库:

示例(我的项目名叫mySpider):

cd mySpider

git remote - v

4.移除远程仓库:

git  remote  rm  origin  

5.添加远程仓库

git  remote  add  origin  [email protected]:/home/git/mySpider.git

6.设置本地分支关联远程分支:

git push --set-upstream origin master

云服务器搭建git仓库_第4张图片

七、结尾

仓库搭建完成,数据也迁移完成,最后克隆仓库项目:

git clone username@仓库地址:/项目.git

克隆项目之后修改然后提交:git push

出现bug:

remote: error: insufficient permission for adding an object to repository database ./objects remote:

远程:错误:权限不足,无法将对象添加到存储库数据库中。/对象远程:

 

解决:

1、修改仓库目录所属用户为 root,用户组为 root

chown -R 创建仓库时创建的用户名:所属组(云服务器用户名) /home/git

2、修改仓库目录为可写权限

chmod -R 777 /tmp (所有用户都有读、写、执行权限)

你可能感兴趣的:(服务器,git)