平时工作中经常用到Git做代码版本控制,但自己从来没有搭建过Git
服务,一直都是用现成的,这两天不算太忙,摸索了一下如何自己搭建Git
服务器,服务器系统选Ubuntu
,没别的原因,一个字:简单!
以下是我的摸索历程。因为我是摸索,加上没有额外的设备(只有一台Mac),所以我用的是虚拟机。。。
开始前下载了以下资源:
- 虚拟机下载 virtualbox: https://www.virtualbox.org/wiki/Downloads
- Ubuntu系统的的iso镜像文件: http://www.ubuntukylin.com/downloads/
下文中所有
服务器 --> Ubutun系统
客户端 --> Mac系统
1. 在虚拟机中创建服务器(有单独设备请跳过)
在VirtualBox新建虚拟电脑
名称:GITUBT
类型:Linux
版本:Ubuntu(64-bit)
启动虚拟机中的GITUBT,根据提示配置内存等,虚拟硬盘建议设置10GB
以上,最后根据提示选择之前下载的iso
镜像文件安装Ubuntu
操作系统
选择『安装 Ubuntu Kylin』
其中有一步需要配置超级用户,需要记住这里的密码,我这里配置 999999
另外在虚拟机外部的设置里选择网络链接方式
2. 服务器配置
-
在服务器安装
git
yyq@yyq-VirtualBox:~$ sudo apt-get install git
确认安装成功
yyq@yyq-VirtualBox:~$ git --version
-
查看服务器IP
yyq@yyq-VirtualBox:~$ ifconfig
-
在服务器根目录中创建
pub
文件夹,用来存放公钥,这个稍后会用到yyq@yyq-VirtualBox:~$ mkdir pub
-
添加新用户,设置新用户密码(888888)
yyq@yyq-VirtualBox:~$ sudo adduser gitUser
-
切换到gituser用户下,需要密码(888888)
yyq@yyq-VirtualBox:~$ su gituser
-
在gituser下创建
.ssh
文件夹,并在.ssh
下创建authorized_keys
文件,稍后用来存储公钥信息,ssh
免密登录注:本机第一次
ssh
远程登录服务器时会有这个提示,ssh
原理及应用见阮一峰老师的文章gituser@yyq-VirtualBox:~$ mkdir .ssh gituser@yyq-VirtualBox:~$ cd .ssh/ gituser@yyq-VirtualBox:~/.ssh$ touch authorized_keys
-
检查ssh是否安装,或通过下面命令安装
yyq@yyq-VirtualBox:~$ sudo apt-get install openssh-server
-
在客户端打开终端,拷贝公钥到服务器
$ scp .ssh/id_rsa.pub yyq@192.168.2.107:/pub
-
回到服务器,可以在pub文件夹下找到
id_rsa.pub
文件,这就是刚才拷贝过来的公钥,通过如下命令把公钥内容写进权限文件//拼接公钥到本地authorized_keys中 gituser@yyq-VirtualBox: ~$ cat /home/yyq/pub/id_rsa.pub >> /home/gituser/.ssh/authorized_keys
这样一来,再次从客户端远程登录gituser的时候就不需要再输入密码了
-
最后,在服务器端指定一个目录(codeRepo)作为Git远程仓库,初始化一个空 git 仓库 (--bare)
gituser@yyq-VirtualBox: ~$ mkdir codeRepo gituser@yyq-VirtualBox: ~$ cd codeRepo gituser@yyq-VirtualBox: ~/codeRepo$ git init --bare projectNO1.git
3. 客户端
在客户端通过git clone
命令拉取工程,做修改等操作,最后可以正常push到远程仓库
4. 权限
。。。待续