博客的架构
先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。
整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。
搭建流程
第一步: 安装node.js
以及本地Hexo
初始化
第二步: 服务器环境搭建,包括安装 Git
、Nginx
配置 、创建 git
用户
第三步: 使用Git自动化部署发布博客
本地环境
本地环境我就不介绍了查看下面两篇文章
- 使用Github搭建Hexo技术博客--安装教程
- 使用Github搭建Hexo技术博客--增强教程
服务器环境搭建
安装nginx
- 因为我们是拿nginx做Web服务器,所以我们需要安装部署好nginx,如果没有安装,推荐使用LNMP一键安装包,不过我使用的是宝塔的主机面板管理主机。
- 我们可以专门为hexo创建一个部署目录,比如我创建了/home/www/hexo文件夹,并把nginx的配置文件nginx.conf中的部署目录改为/home/www/hexo,
配置文件一般在/usr/local/nginx/conf里;同样可以使用默认目录,nginx的默认目录为/var/www/html,如果使用宝塔的主机面板,则默认的部署目录为/www/wwwroot/hexo
安装Git
yum install git
- 检查安装信息:
git --version
创建git用户
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
找到以下内容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面添加一行
git ALL=(ALL) ALL
保存退出后改回权限:chmod 400 /etc/sudoers
- 然后给新加的用户git设置权限,编辑/etc/passwd将:
git:x:1003:1003:,,,:/home/git:/bin/bash
改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell
这样git就只能使用git-shell而不能使用bash。 -
git服务器打开RSA认证
vim /etc/ssh/sshd_config
在sshd_config中开启以下几项:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
- 随后设置Git用户的密码
#需要root权限
sudo passwd git
配置ssh
切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后将电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
- 然后就可以执行ssh 命令测试是否可以免密登录
ssh -v git@SERVER
至此,Git用户添加完成
创建仓库
执行命令:sudo git init --bare hexo.git
使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
改变 hexo.git 目录的拥有者为git用户:sudo chown -R git:git hexo.git
配置钩子
在 hexo.git/hooks
目录下新建一个 post-receive
文件,进入cd /home/git/hexo.git/hooks/
,编辑这个文件vim post-receive
在 post-receive
文件中写入如下内容:
#!/bin/bash
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/hexo.git checkout -f
- 设置这个文件的可执行权限:
chmod +x post-receive
- 注意,
/www/wwwroot/hexo
要换成你自己的部署目录,正如上文所说,我是的配置目录是/www/wwwroot/hexo
。其中/home/git/hexo.git
是git仓库的位置。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。
下面这种方式我也试过总是提示删除文件夹没有权限
#!/bin/sh
rm -rf /www/wwwroot/hexo
git clone /home/git/hexo.git/ /www/wwwroot/hexo/
还尝试改变权限:chown -R git:git /www/wwwroot/hexo/
但是就是没有成功也许是我的方法不对,再此记录下。
参考资料
安装Git
在Linux上安装Git:https://www.cnblogs.com/lhbryant/p/6928894.html
部署教程
阿里云VPS搭建自己的的Hexo博客:https://segmentfault.com/a/1190000005723321
Hexo个人博客部署到CentOS个人服务器:https://segmentfault.com/a/1190000010680022
部署Hexo到个人服务器:https://www.huangtengxq.com/2017/08/19/BuildHexoOnVps/
HEXO部署到unbuntu服务器详细指南:http://www.laoyuyu.me/2017/10/10/hexo_deploy_vps/
服务器部署Hexo博客:https://dogorgod.github.io/2017/03/24/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2Hexo%E5%8D%9A%E5%AE%A2/
Hexo博客部署到服务器:https://i.jakeyu.top/2016/12/06/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2/
通过Git将Hexo博客部署到服务器:https://www.jianshu.com/p/e03e363713f9
部署Hexo博客到linux云主机并实现自动发布:https://ghui.me/post/2016/07/host-hexo-vps/
将Hexo博客部署到云主机:https://blog.fundebug.com/2017/05/18/deploy-hexo-on-cloud/
配合Travis CI,将Hexo博客自动部署到你的服务器上:https://blog.keep.moe/2015/11/06/hexo-and-travis-ci/
使用Git Hook自动部署Hexo到个人VPS:http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/
VPS Centos7安装Git服务器,部署Hexo静态博客:https://www.micronbot.com/blog/8.html
在Ubuntu 14.04服务器上部署Hexo博客:https://cloud.tencent.com/developer/article/1004587
阿里云ubuntu部署hexo,并与本地同步,实现自动部署:http://blog.csdn.net/nghuyong/article/details/54430093
阿里云搭建Git服务,实现Hexo自动部署:https://imys.net/20160303/hexo-nginx-auto-deploy.html
hexo博客部署到linux服务器上:https://lvshen9.github.io/2018/01/08/Hexo%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2%E5%88%B0Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A/
点击数:89