hexo一键部署到云服务器

写在前面

  之前折腾了好久,用Rsync,ftp,stfp都试过了,都没弄成,在网上看的教程很多也是基于git的,也就是在服务器建一个git的钩子,指定一个目录作为远程仓库地址,可以通过ssh连接,然后在本地可以直接上传,最后才选择的这个方案。在成功之前踩了好多坑,配sftp的时候用百度上的坑爹教程,导致服务器都连不上,最后还是选择则了用git做仓库的方式来上传,这个教程很简单,相对于其他的同样的方法,只是不知道会不会有安全问题。

正式开始

1. 配置Git hooks

  1. 创建Git裸仓库

    blog.git作为远程Git仓库,Hexo在本地生成的博客静态文件可以通过push与其同步。

    1
    2
    mkdir ~/blog.git && cd ~/blog.git
    git init --bare
  2. 在hooks目录下新建一个脚本文件post-receive

    1
    touch hooks/post-receive

    post-receive脚本将在blog.git仓库接收到push时执行

    脚本非常简单,就是删除原有的/var/www/html/blog目录,然后从blog.git仓库clone新的博客静态文件

    vim hooks/post-receive 将下面内容写入post-receive文件

    1
    2
    3
    4
    #!/bin/bash

    rm -rf /var/www/html/blog
    git clone /root/blog.git /var/www/html/blog
  3. 给post-receive脚本执行权限

    1
    chmod +x hooks/post-receive
  4. 配置好之后可以测试一下,就在本地clone那个远程仓库

2.修改hexo配置文件

修改hexo根目录下的_config.yml文件

1
2
3
deploy:
type: 'git'
repo: 'root@服务器IP:blog.git'

补充一点

如果之前有在同一台服务器上配置过git的裸库,需要在用户目录的.ssh目录下,将known_hosts文件中的主机记录删除掉,否则可能会报错。

image.png

总结

  这个方法和其他复杂一点的方法区别就是,没有专门建一个git的用户用来上传,就直接用root用户上传,就自己用的话应该问题也不大🤔