昌旭的博客


机器学习、编程和数学


使用Git部署网站

以前部署网站经常使用FTP或scp方式,但这两种方式不仅操作麻烦而且有无法进行版本控制、用户权限等诸多问题。
使用Git我们能方便的部署网站,何乐而不为呢。

一、安装Git与SSH

1
$ sudo yum install git git-core ssh

二、建立git用户

  1. 新建git用户并设置密码
1
2
$ sudo useradd git
$ passwd git
  1. 禁止git用户通过shell登录
1
$ sudo vim /etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash
修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

三、建立Git裸仓库

1
2
$ cd /path/to/your/git/repo
$ sudo git init --bare your_repo_name.git

并修改权限

1
$ sudo chown -R git:git your_repo_name.git

四、设置Git hook以实现自动部署

1
2
$ cd your_repo_name.git/hooks
$ sudo vim post-receive

写入以下内容

1
2
#!/bin/sh
GIT_WORK_TREE=/path/to/your/website git checkout -f

最后加上执行权限

1
$ chmod +x post-receive

注意:/path/to/your/website目录需自己手动创建

五、在本地添加远程仓库

1
$ git remote add origin ssh://git@your_server:/path/to/your/repo.git

接下来就可以正常的git push origin

Extra、使用公钥进行SSH认证

每次登陆SSH都需要输入密码是一件非常麻烦的事情,所以我们使用公钥认证。

首先,在本地生成公钥——输入以下命令并按提示操作

1
$ ssh-keygen -t rsa -C "your_email@youremail.com"

然后,打开~/.ssh目录下的id_rsa.pub文件,复制里面的内容,

最后,将刚才复制的内容粘贴至服务器上的/home/git/.ssh/authorized_keys文件里(没有则新建)