实现自动化部署Hexo到Linux服务器
又懒了好久没写博客...
最近忽然发现百度居然不会爬取部署在github上的博客文章,所以准备把原来的博客移到我自己的VPS上。
服务器信息:
- 国外的VPS - Vultr
- Linux - CentOS 7
关于国外VPS,推荐Vultr吧,我用的新加坡机房,速度还是挺快。还有原来用的搬瓦工也不错。
这里不讲NodeJs环境的配置了,网上教程很多。本文主要内容:
SSH免密码登陆Linux
服务器端:
CentOS 7 默认是已经启动了 ssh 服务的。可以通过如下命令查看 ssh 服务是否启动
# systemctl status sshd.service
本地客户端:
执行如下命令,生成公钥。
$ ssh-keygen -t rsa
然后执行如下命令,把生成的公钥发送到服务器上去。
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器地址
需要输入用户名密码,然后回车回车。。。就好了
成功之后,通过
$ ssh root@服务器地址
无需密码就可以连接服务器了。
CentOS 7下安装Hexo
默认已经安装好 NodeJs 环境。安装 Hexo 只要以下三步。
# hexo init <folder> // 初始化hexo目录,<folder>=文件夹名,不存在会创建该文件夹 # cd <folder> // 进入hexo目录 # npm install // 安装模块依赖包
CentOS 7下安装Git
1.安装 Git :
# sudo yum install git
2.创建一个 git 用户,用来运行 git 服务:
# sudo adduser git
3.初始化 Git 仓库,将其放在 /var/repo/blog.git (或者其他任意目录)下的:
# sudo mkdir /var/repo # cd /var/repo # sudo git init --bare blog.git
使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
4.配置 git hooks,这里使用 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。
在 blog.git/hooks 目录下新建一个 post-receive 文件:
# cd /var/repo/blog.git/hooks # vi post-receive
在 post-receive 文件中写入如下内容:
#!/bin/sh git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
注意,/var/www/hexo 要换成你自己的部署目录。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。
不要忘记设置这个文件的可执行权限:
chmod +x post-receive
5.改变 blog.git 目录的拥有者为 git 用户:
# sudo chown -R git:git blog.git
ok,到此服务器端配置完成。
实现本地Git方式部署网站到服务器
本地必须安装 hexo-deploy-git 模块
$ npm install hexo-deployer-git --save
然后修改根目录下的 _config.yml
deploy: type: git repo: <repository url> branch: [branch] message: [message]
最后提交
$ hexo clean $ hexo d
Over.
Comments