在阿里云服务器(ubuntu)上搭建属于自己的git服务器
目录
- 需求描述
- 所需工具
- 服务器端
- 客户端
- 工具安装
- 阿里云服务器安装 git-core
- 阿里云服务器安装gitosis
- 客服端安装git软件
- git服务端的配置
- 新建git服务器ssh的系统账户mygit
- 新建git服务器的管理账户并初始化git服务器
- 添加新git管理员
- 新建git仓库
需求描述
github等git服务器虽好,但是始终是别人的服务器,且以前是不支持私有仓库的。自己搭建git服务器,我认为最主要是放一些私人的资料和笔记,及时备份;或者还平时使用多台主机,一些资料通过U盘等手段来回复制也很抓狂,就可以考虑自己建议git服务器。
所需工具
服务器端
- 阿里云ECS:运行的是Ubuntu系统
- git服务器:git-core包
- git的管理配置工具:gitosis(基于python2)
客户端
- git for windows等git软件
工具安装
阿里云服务器安装 git-core
由于git服务器是使用的ssh协议,所以安装git的时候,需要openssh-server以及openssh-client,安装命令如下:
sudo apt-get install git-core openssh-server openssh-client
阿里云服务器安装gitosis
- 服务器合适的位置(一般我选择/home/目录下),从gituhb上下载gitosis的源码:
git clone https://github.com/res0nat0r/gitosis.git
gitosis是用Python编写的,需要python安装支持,在实际使用过程中,发现python3会报错
[OSError]
类似的错误。故需要确定服务器是否已经安装python2,一般都会默认安装python2,但并没有建立python的默认连接为python2。查看安装的python版本,改变python命令的默认连接查看已安装的python版本
ls /usr/bin/python*
查看python命令指向的python版本
python --version
移除当前python的链接,并建立新的链接
sudo rm /usr/bin/pythonsudo ln -s /usr/bin/python2.xx /usr/bin/python
进入下载好的gitosis文件夹里,安装gitosis:
cd /home/gitosissudo python setup.py install
客服端安装git软件
点击安装即可,很简单那。
git服务端的配置
新建git服务器ssh的系统账户mygit
由于git通过ssh协议运行,首先我们需要建立一个新的linux帐号来专门进行git服务器和客服端的ssh通讯,并给予其
sudo
运行权限。默认当前登录阿里云服务器的账户有sudo权限,使用useradd
新建用于git管理的账户——mygit,加-m
使得在home目录下自动创建一个mygit的文件夹,-s
指定shell版本,一般默认的shell为/bin/sh
,在终端中,命令输入行前有一个“$”符号,操作十分也不友好,建议换成bash:sudo useradd -m mygit -s /bin/bash
给与其sudo的权限:
sudo usermod -aG sudo yuesigit
查看/etc/group,
vi /etc/group
如下便是成功添加:
切换到刚才建立的mygit的账户下:`su - mygit`,按照提示输入密码,切换账户。在这里可以初始化git的用户信息用户名和邮箱:```shellgit config --global user.name "xxx"git config --global user.email "xxx@qq.com"
```
新建git服务器的管理账户并初始化git服务器
进行gitosis以及git服务器的初始化。初始化时需要指定一个git管理员。这个git管理员和上文建立的linux用户mygit要区分开来,mygit仅仅是ssh时用到,以及仓库初始化后会默认的在/home/mygit下生成repositories仓库文件夹,而我们可以通过权限管理,而使得该账户只能进行git相关的操作,而不能作为用户登录到服务器当中,提高安全性。而git管理员是真正的可以配置管理git服务器仓库的用户,仅能通过git指令与git服务器通讯。git管理员本质上是git的有新增、删除仓库权限的客户机,即使我们将服务器的账户作为git管理员的时候,跟git服务器的通讯,也仅是通过git指令来的。git管理员的建立与gitosis是紧密相关的。现在演示以一个非本服务器的客户端PC(windows)建立git管理员。
- 首先一定要将linux的登录账户切换到专门给git创建的linux账户去,使用
su - 用户名
,然后按提示输入密码
- 首先一定要将linux的登录账户切换到专门给git创建的linux账户去,使用
在PC上安装git软件。
在你即将建立git项目的文件夹中,右键,选择
Git bash here
。然后输入ssh-keygen -t rsa
,生成公钥文件。(关于公钥文件,以及通过公钥与git通讯相关原理自行查阅)
可以看到生成的公钥文件在c盘的用户文件夹下。现在需要把公钥传到服务器的tmp文件夹中,可以用以下的命令,当然也可以用ssh工具辅助:
scp /c/Users/yuesi/.ssh/id_rsa.pub 服务器用户名@服务器IP地址:/tmp/
使用上面的公钥文件来初始化仓库,在服务器端运行:
sudo -H -u git(你在服务器上为git建立的专门的账户名) gitosis-init < /tmp/id_rsa.pub
当你完成初始化的时候,会在你初始化用户的用户文件下生成两个文件夹:gitosis以及repositories
**而repositories中只有gitosis-admin.git这个仓库,gitosis-admin.git是今后你用来管理项目的主要操作的对象。**主要操作的时其下的gitosis.conf文件,打开有,
而`members = yuesi@YUESI-PC`中的yuesi@YUESI-PC是创建公钥PC的用户名以及主机名。而我们初始化后,该PC的公钥自动的从tmp文件夹复制到/gitosis-export/keydir/文件夹中,并自动命名为yuesi@YUESI-PC.pub。
- 最后,查看一下gitosis-admin.git下的hooks文件夹权限是不是755,不是755,便要改成755。
添加新git管理员
- 如何添加新的git管理账户(管理PC机)
步骤与上面的相似,依然是先生成PC机的公钥文件,然后改名为用户名@主机名
,这个名称可以看git bash的提示:
但是公钥文件不能再上传到服务器的/tmp文件夹,也不能直接放在服务器的/gitosis-export/keydir/文件夹里。还是要借助已经设置的管理员用户机。
- 将gitosis-admin.git clone到本地:
git clone XXX(服务器上为git建立的专门的账户名)@XXX(服务器IP地址):gitosis-admin.git
clone后的仓库如下,可见只有一个keydir文件夹和gitosis.conf配置文件。
初始化git的用户信息:
git config --global user.name "xxx" git config --global user.email "xxx@qq.com"
将上面改名后的公钥文件,放在管理员用户机已经clone后的gitosis-admin.git的keydir文件夹下,并且,将新的用户添加在gitosis.conf中,如下:
- push仓库到服务器上,在gitosis-admin.git文件夹里,右键并选择git bash here,再依次输入以下命令:
git add .git commit -am "some words"git push origin master
新建git仓库
- 新建git仓库,一样需要在有git管理权限的客户机上进行,修改gitosis.conf配置文件,添加新的仓库project1。可以发现新建仓库很简单,只要给出仓库名,以及可以写仓库的成员即可:
在具有project1写权限的的客户机上,新建一个文件夹,并重名为project1,进入该文件夹并使用git bash here,然后进行仓库的初始化,然后再新加一个文件,然后push到服务器上,命令如下:
git inittouch readme.txtgit add .git commit -am "some words"git remote add origin XXX(服务器上为git建立的专门的账户名)@XXX(服务器IP地址):project1.gitgit push origin master
再进入服务器查看是否有新的仓库出现:
至此完成git的创建。
当然,这样建设的git服务器,仅仅是适合自己用的。其实要想完成像github或者gitee一样的git服务器,其实最简单的就是自己再搭建一个https服务器,把gitosis-admin.git的管理权限仅保留在服务器主机上,然后就可以让用户注册你的git账号,然后再进行仓库的上传下载了…这仅仅是一个想法,不一定这么做。
甚至可以在客户机上写一个脚本,进行一些资料的定时推送到git服务器也不一定是不可能的。
在阿里云服务器(ubuntu)上搭建属于自己的git服务器相关推荐
- [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)
作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...
- 在阿里云的ubuntu上部署个人服务
为什么80%的码农都做不了架构师?>>> 作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然 ...
- http协议 git服务器,利用Nginx搭建HTTP访问的Git服务器
利用Nginx搭建HTTP访问的Git服务器过程记录.搭建 Git 仓库,实现 SSH 协议.配合 Nginx 实现 HTTP 协议拉取.推送代码.利用 Nginx 实现 Gitweb 在线浏览代码, ...
- Linux学习总结(13)——在阿里云的ubuntu上部署个人服务
作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...
- 在阿里云的Ubuntu ECS instance 使用Apt-get安装git
高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器.APT可以自动下载,配置,安装二进制或者源代码格式的 ...
- Ubuntu系统搭建PPPoE服务器,Ubuntu上架设PPPoE Server
一.安裝 PPPoE Server Software 1)sudo apt-get install ppp 2)rp-pppoe(非apt套件) wget -c http://www.roaringp ...
- 阿里云ECS CentOS6.5搭建iRedMail邮件服务器
阿里云ECS CentOS6.5搭建iRedMail邮件服务器 0 . 注册域名:例:geekds.com 然后:进入你申请域名的网站(如万网或新网),域名管理–>我的域名–>管理–> ...
- Ubuntu上搭建自己的ngrok服务器
Ubuntu上搭建自己的ngrok服务器 参考网站:http://www.sunnyos.com/article-show-48.html 上面的内容似乎是sunny大神本人写的,了解的越多,发现自己 ...
- 【mongodb环境】在ubuntu上搭建mongodb,并且开启远程连接
[mongodb环境]在ubuntu上搭建mongodb,并且开启远程连接 标签(空格分隔): mongodb 参考资料 mongodb 官方文档 安装mongodb 第一步:设置 public ke ...
最新文章
- .NET程序性能的基本要领
- mysql 主主+ Keepalived 高可用
- OpenCASCADE绘制测试线束:拓扑命令之曲线和曲面拓扑
- 【教程】jQuery打造动态下滑菜单
- LINUN 网络连接小记
- MYSQL的函数有哪些?(4.3时间与日期函数)
- python开源流程图软件_Dia
- Mybatis源码阅读(一):Mybatis初始化1.2 —— 解析别名、插件、对象工厂、反射工具箱、环境
- UVa 12169 - Disgruntled Judge(拓展欧几里德)
- Java- String类概述
- wangEditor富文本编辑器的简单使用
- Vue使用JsBarcode生成条形码
- 部分免费开放的电子图书馆
- 四旋翼无人机学习第5节--STM32最小系统外围电路分析
- 计算机硬盘显示在右边,电脑中出现一个系统保留磁盘分区怎么解决
- 树莓派的GPIO等接口
- linux lib文件夹,Linux下的lib文件故障解决实例
- 做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看?
- 01-基于C++的简易技能系统实现
- Android 5.1 长按power键流程分析
热门文章
- 从勒索软件攻击中恢复 sql server 数据库 mdf文件
- 计算机网络与船舶,船舶计算机网络系统和网络安全管理.doc
- tinyproxy代理服务器配置
- [Realtek sdk-4.4.1] RTL8198D指定任意口作为wan及切回lan方法实现
- oracle rac和ha对比,双机热备(HA),dg和RAC区别
- Fira Code:适合程序员的编程字体
- NNI中实现的Tuner分析
- HP F388经常卡纸
- Nginx 常见漏洞解决方式
- if ...if和if...elif区别