简介
Hexo
:一个快速、简单且强大的博客框架。Hexo
的简单之处在于你可以用30
分钟,甚至更短的时间就可以生成一个属于你自己的博客。Hexo
的强大之处在于你对博客界面细节的调整,有可能用上1
天的时间。- 在进阶篇中,我着重介绍如何方便的部署博客及迁移博客。
起因
- 每次更换电脑以后,为了写博客就必须去安装
Hexo
,为避免繁琐的步骤,故封装了Docker
镜像。 - 使用
Docker
封装镜像后,可以很方便的利用Docker
跨平台的特性,《Linux上安装Docker》。 - 由于本文涉及的
Linux
及Docker
知识较多,建议量力而行。
备份博客
概要
- 如果想要很方便的迁移博客或者部署博客,需要我们将博客的原始文件进行远程备份,
GitHub
成为了我们的首选。 - 在《使用Hexo搭建博客之基础篇》中,我们了解了
Hexo
相关目录及文件的作用。 - 此处,我采用将博客的原始文件托管到
GitHub
管理,渲染后的文件放在云服务器上,以供他人访问。 - 其中需要备份的文件:
_config.yml
文件、source
目录、scaffolds
目录,而themes
目录则是在每次迁移博客后,重新拉取。 - 正如我的GitHub上一样,而
README.md
文件是为了方便自己迁移博客。
操作
- 在
GitHub
上新建一个仓库,例如:blog
。 - 在本地新建一个与
GitHub
仓库同名的目录:
1 | mkdir -p /blog |
- 拷贝我们需要备份的目录及文件到此目录:
1 | cp _config.yml /blog/ |
- 若你的主题自定义过多且不考虑升级,建议同时备份到
GitHub
上,注意删除对应主题下有关git
的目录及文件。
1 | cp -r themes/ /blog/ |
- 配置
Git
的基本信息:
1 | git init |
- 上传到
GitHub
仓库:
1 | git add --all |
- 以后更新博客内容以后,记得不仅要
deploy
,还要commit
到GitHub
上。
迁移博客
- 当换了新的环境以后,先配置好可以免密访问
GitHub
。 - 将备份的博客拉取到本地即可。
docker-hexo
- 其实,
Docker
的作用就是帮我们把hexo
及依赖插件与博客的原始文件进行了分离。
构建镜像
- 本地构建镜像, 先
clone
仓库到本地, 再构建镜像:
1 | git clone https://github.com/YuXiaoCoder/docker-hexo.git |
预览博客
此容器用于预览博客,类似
hexo server
,在本地运行:创建
Server
容器:
1 | docker run -d \ |
- 更新内容后,若发现内容未自动更新,可尝试重启容器:
1 | docker restart hexo-server |
部署博客
此容器用于部署博客,支持
rsync
和git
,使用git
时,需要传入NAME
和EMAIL
。在物理机上创建根目录:
1 | mkdir -p /data/www/ |
- 创建
Deploy
容器:
1 | # rsync |
- 更新博客后,预览检查无误后,部署博客:
1 | docker start hexo-deploy |
docker-nginx
- 若博客使用的是
GitHub Pages
,则无需阅读此部分的内容。 - 为了方便云服务器部署并升级
Nginx
, 故封装了docker-nginx
镜像。 - 本镜像仅开放了
80
端口及443
端口(若需要),请自行理解docker
的端口映射及目录映射。
构建镜像
- 本地构建镜像, 先
clone
仓库到本地, 再构建镜像:
1 | git clone https://github.com/YuXiaoCoder/docker-nginx.git |
- 本地构建镜像, 先
clone
仓库到本地, 再构建镜像:
1 | git clone https://github.com/YuXiaoCoder/docker-certbot.git |
申请证书
- 运行
nginx
,证明域名所有权:
1 | mkdir -p /etc/nginx/conf.d/ |
1 | server { |
1 | docker run -d \ |
- 申请证书:
1 | docker run -it \ |
- 加强
diffie-hellman
算法强度(耐心等待):
1 | openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048 |
- 删除
nginx
容器:
1 | docker stop nginx-server |
运行容器
- 创建配置文件:
1 | vim /etc/nginx/conf.d/blog.conf |
1 | server { |
- 运行
nginx
:
1 | docker run -d \ |
完成部署
- 创建续订证书的容器:
1 | docker run -d \ |
- 设置定时任务:
1 | crontab -e |
1 | 30 3 * * 6 docker restart certbot |