[ubuntu]如何建立自己的 git 服务器
github 虽然有提供免费的 git 服务,但是有时候还是不能满足自己的需求。比如说有一些不适合公开的文件要想用 git 来管理就不适合上传到 github 了(不要问我是怎么知道的,手动一个哭)。
下面开始搭建了:
####1. 安装 openssh 服务器
sudo apt-get install openssh-server openssh-client
####2. 创建公钥和私钥
ssh-keygen -t rsa
直接三个回车,或者按照要求输入对应的值也行。完成之后 key 一般在/home/用户名/.ssh 下。
####3. 安装 git 服务器
sudo apt-get install git-core
####4. 配置 git 服务器
#####4.1 创建 git server 管理用户 git 以及设置密码
useradd -m git
passwd git
#####4.2 创建 git 仓库存储目录
sudo mkdir /home/git/repositories
#####4.3 设置仓库权限
sudo chown git:git /home/git/repositories
sudo chmod 755 /home/git/repositories
#####4.4 初始化全局配置
git config --global user.name "ruben"
git config --global user.email "lingyunzi09@gmail.com"
####5. 安装 gitosis
#####5.1 安装 python 的 setup tool
sudo apt-get install python-setuptools
#####5.2 安装 gitosis
cd /tmp
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
sudo python setup.py install
#####5.3 配置 gitosis
cp ~/.ssh/id_rsa.pub /tmp
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
#####5.4 配置 gitosis.conf
执行:
vim /home/git/repositories/gitosis-admin.git/gitosis.conf
按照下面的格式修改响应的内容:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = git@cpp.pub
[group developers]
writable = helloworld
members = a@server1 b@server2
[group test]
readonly = helloworld
members = c@server3
关于配置文件的含义,说明如下:
gitosis-admin 组 ---- 包含成员 a,他对仓库有 RW 权限
developers 组 ---- 包含成员 a/b, 他们对 helloworld 仓库有 RW 权限
test 组 ---- 包含成员 c,他对 helloworld 仓库有 R 权限
####6.创建一个 helloworld 仓库
#####6.1 server 端,就是远程服务器端
执行:
mkdir /home/git/repositories/helloworld.git
cd /home/git/repositories/helloworld.git
git --bare init
chmod 777 /home/git/repositories/helloworld.git
#####6.2 本地端,就是本地电脑
在本地端生成密钥文件:
git config --global user.name "ruben"
git config --global user.email "lingyunzi09@gmail.com"
ssh-keygen -t rsa
根据提示或者直接三个空格,这样就可以在~/.ssh 目录下看到生成的密钥文件了。
接着,在服务端执行:
vim /home/git/.ssh/authorized_keys
将客户端的 pubkey 拷贝进去保存就行了。
回到本地端执行:
git clone git@cpp.pub:/home/git/repositories/helloworld.git
touch hello.txt
git add .
git commit -m 'add file'
git push origin master
如果能够上传成功,说明配置成功了。这样就可以使用自己的 gi 服务器愉快的玩耍了.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于