在自己的云主机搭建git服务器
环境:
local: Windows10, git bash
remote: centOS7
这里是笔记迁移,大约是在半年前搭建的git server,故没有图示。
一、服务器端创建git用户
- 安装git
1
2yum -y install git # centOS
apt-get install git #ubuntu - 创建git用户并且赋予权限
会在/home目录下看到一个git用户目录
1
$ adduser git
- 给git用户分配一个密码 这个密码用在你后面提交代码的时候使用(然而并没有用到。。。)
1
$ passwd git 123456(你的密码)
二、本机创建ssh key
git-bash中创建一个新的 ssh key
参考GitHub ssh密钥问题
三、服务器上将ssh public key 添加到服务器
- cd /home/git/
git表示用户git - mkdir .ssh
没有该目录就创建 - 进入
.ssh
目录1
cd .ssh
- 新建文件
authorized_keys
1
vim authorized_keys
- 将public key串填入
如果有多个,则换行追加
保存退出 - 新建文件夹testgit测试
在其它目录,比如网站根目录,我的是 /usr/share/nginx/html/,新建文件夹testgit测试1
2
3$ cd /usr/share/nginx/html/
$ mkdir testgit
$ cd testgit
五、服务器端创建仓库(repository)测试
新建git仓库
1
git init --bare testgit.git
新建git仓库,一定要是空仓库,—bare参数不能省略
修改testgit目录权限
1
2$ cd ..
$ chmod -R 777 testgit修改testgit目录权限
也可以使用chown…自由发挥吧
如果不修改,那么push的时候会有写入错误
六、本机上使用仓库
- 创建空仓库在一个空目录里面创建一个空仓库
1
git init
添加远程仓库
1
2git remote add origin \
git@211.159.184.137:/usr/share/nginx/html/testgit/testgit.git其中211.159.184.137是云服务器的ip,可以在C:\Users\your_username.ssh\config里面配置
1
2
3
4
5#user for my cloud server
Host git_cloud
HostName 211.159.184.137
User git
IdentityFile ~/.ssh/id_cloude_server这时可以用git_cloud替代211.159.184.137
提交文件
1
2
3git add *
git commit -m "message" *
git push -u origin master提交文件,不出意外能成功
七、使服务器内容自动更新
- 进入创建的仓库目录进入创建的仓库目录,这时用ls看不到任何效果,
1
cd /usr/share/nginx/html/testgit/
但是确实已经提交了,要解决这个问题需要用到自动同步功能。 - 自动同步功能自动同步功能用到的是 git 的钩子功能
1
cd testgit.git/hooks
这里我们创建post-receive文件 - 新建post-receive文件新建
1
vim post-receive
post-receive
文件,填入:其中/usr/share/nginx/html/testgit 是自定义的,我放在网站里面可以直接访问1
2
git --work-tree=/usr/share/nginx/html/testgit checkout -f - 修改文件权限修改文件权限,该文件应该具有可执行权限
1
chmod a+x post-receive
- 再次push就可以在服务器/usr/share/nginx/html/testgit上看到提交的文件了
参考资料: