安装各种工具
Nginx
lrzsz
Git
新增git用户
1
| root@iZj6cgoyl5x6opizfwaukrZ:~# adduser git
|
修改Git权限
1 2 3
| visudo # User privilege specification root ALL=(ALL:ALL) ALL
|
在root ALL=(ALL:ALL) ALL这一行下面添加git ALL=(ALL:ALL) ALL
关闭git用户shell权限
执行:vim /etc/passwd
将最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
部署
初始化仓库
1 2 3 4
| cd /home/git //切换到git用户目录 mkdir blog.git //创建git仓库文件夹,以blog.git为例 cd blog.git //进入仓库目录 git init --bare //使用--
|
创建目录
1 2
| cd /var/www/ //切换目录 mkdir blog //创建网站目录,以blog为例
|
配置SSH
1 2 3 4
| cd /home/git //切换到git用户目录 mkdir .ssh //创建.ssh目录 cd .ssh vim authorized_keys
|
然后将本地的公钥复制到authorized_keys文件里(公钥即上文中本地执行cat ~/.ssh/id_rsa.pub查看的内容)
修改权限(重要)
修改 .ssh 目录的权限为 700
修改 .ssh/authorized_keys 文件的权限为 600
1 2 3 4 5
| sudo chmod 700 .ssh cd .ssh sudo chmod 600 authorized_keys cd .. sudo chown git:git -R .ssh
|
文件夹权限
1 2 3 4 5 6 7 8 9 10 11
| ll /home/git/ ll /var/www/ 确保blog.git、.ssh、blog目录的用户组权限为git:git 若不是,执行下列命令后再查看: sudo chown git:git -R /var/www/blog sudo chown git:git -R /home/git/blog.git 直接启用git-shell似乎有问题 cp /usr/share/doc/git/contrib/git-shell-commands /home/git -R $ chown git:developers /home/git/git-shell-commands/ -R $ sudo chmod +x /home/git/git-shell-commands/help $ sudo chmod +x /home/git/git-shell-commands/list
|
增加Hooks
配置Git Hooks
创建post-receive文件
git用户下执行:
cd /home/git/blog.git/hooks //切换到hooks目录下
vim post-receive //创建文件
复制下面的内容到post-receive文件中:
1 2 3 4 5 6 7 8
| #!/bin/bash -l GIT_REPO=/home/git/blog.git TMP_GIT_CLONE=/tmp/blog PUBLIC_WWW=/var/www/blog rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
|
保存退出后,执行:sudo chmod +x post-receive赋予可执行权限。
测试Git连接
3.Git服务器打开RSA认证
/etc/ssh/sshd_config中将RSA认证打开:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
1 2
| 在本地打开Git Bash: ssh git@VPS的ip
|