最近需要把写的个人网站文件同步到服务器上,经过查阅资料打算采用git来做,做法如下:
服务器端
创建和配置git用户
(在超级用户root下)
创建一个用户git
1 | sudo adduser git |
限制git用户的shell
1 | vim /etc/passwd |
在其中找到git用户,把最后的/bin/bash
改成 /usr/bin/git-shell
(你git-shell在的位置)。
修改git用户的密码(若需要)
1 | passwd git |
创建文件对应的git仓库
创建一个用来装仓库的文件夹
1 | mkdir /var/repo |
创建一个裸仓库
1 | git init --bare my_website.git |
配置一个钩子
1 | vim my_website.git/hooks/post-update |
在里面输入
1 | #!/bin/bash |
保存退出。这里 --work-tree=/var/www/my_website
这一项的地址就是你要同步到的文件夹地址。
赋予钩子可执行权限
1 | chmod +x post-update |
最后改变my_website.git
和要同步的文件夹/var/www/my_website
的拥有者为 git
1 | chown -R git:git my_website.git |
用户端
同使用github的操作,在你想要放仓库的地方右键 git bash here
,然后
1 | git clone git@服务器IP地址:/var/repo/my_website.git |
输入先前你给用户 git
设置的密码,就把仓库拷到本地了。
之后在这个仓库中增删改文件后,通过 git add
、git commit
、git push
等命令都会被同步到服务器 /var/www/my_website
文件夹下。
如果不想每次都输密码,只要使用自己的公钥到服务器ssh上配置一下即可,这里就不赘述了。