由于之前已经在Windows上有搭建好Hexo项目,并已发布到Github Pages。现在想把项目发布到云服务器上,此文记录整个过程。
环境搭建
安装git
1 | yum install git |
创建git用户
1 | adduser git |
找到以下内容
1 | ## Allow root to run any commands anywhere |
在下面添加一行
1 | git ALL=(ALL) ALL |
保存退出后改回权限
1 | chmod 400 /etc/sudoers |
随后设置Git用户的密码,
1 | #需要root权限 |
window生成公钥:
1 | ssh-keygen -t rsa -C greenovia@qq.com(换成你的邮箱地址) |
接着出现的一些步骤都可以回车跳过,公钥文件生成位置为C:\Users\a6929.ssh\id_rsa.pub。
切换至git用户,创建 ~/.ssh
文件夹和 ~/.ssh/authorized_keys
文件,并赋予相应的权限
1 | su git |
Windows本地测试连接,是否可以免密登录
1 | ssh -v git@你的服务器IP |
至此,Git用户添加完成
自动化部署
服务器上建立git裸库
创建一个裸仓库,裸仓库就是只保存git
信息的Repository
, 首先切换到git
用户确保git
用户拥有仓库所有权,一定要加 --bare
,这样才是一个裸库。
1 | su git |
使用 git-hooks 同步网站根目录
在这里我们使用的是 post-receive
这个钩子,当git有收发的时候就会调用这个钩子。 在 ~/blog.git
裸库的 hooks
文件夹中,新建post-receive
文件。
1 | # 新建文件 |
保存后,要赋予这个文件可执行权限
1 | chmod +x post-receive |
创建–work-tree对应的文件夹
1 | su root |
修改文件夹权限
1 | su root |
配置_config.yml
,完成自动化部署
1 | deploy: |
保存后,测试自动部署到服务器
1 | hexo clean |