docker安装hexo
前言
博客一年多了,最开始是将服务部署到github页面,而github在全国各地的访问速度是天差地别,有的地方可访问,有的直接访问不了,为了解决网站访问速度问题,后面又将服务同步部署到Vercel[和Netlify。Netlify目前还在使用没有出问题,而vercel近年来IP屡次被墙,需要解析到自定义域名才能正常访问,即使这样在国庆节风控期间,解析到vercel的域名也出现了问题,域名应该是被劫持了总是跳江苏反诈页面,严重的时候所有地方的流量访问网站都直接跳转江苏反诈,后面稳定为只有江苏流量访问才会出问现跳转,尤其是wifi访问,手机流量访问好像不会出现跳转。对于江苏反诈页面的跳转,可以自行了解,并非跳转了就一定是有问题的网站。对于我这种情况,问题多数还是出在了把服务部署到被封的vercel上,vercel由于是免费的,可能和我同一节点的邻居在干啥坏事,部署了不好的服务,所以导致我这个邻站也被搞了。很久之前找到了比较简单的方法即使用docker把博客部署到服务器,只是一直有个问题(如何继续使用魔改后的样式)不知道如何解决。刚好乘vercel出问题的机会就尝试折腾下迁移。
前提条件:
- 已经部署过hexo博客,在本地电脑端有hexo博客根目录。
- 一台安装好docker和docker-compose以及nginx proxy manage、hexo的VPS
- 一枚域名并解析到服务器
大致步骤:
- 使用docker在vps上安装好hexo博客
- 把hexo博客本地根目录的
_config.butterfly.yml
,config.yml
,db.json
,package.json
,`package-lock.json
,.gitignore
这几个文件及source
和themes
这两个文件夹上传到服务器hexo目录下的blog文件夹下。(这里是butterfly主题,其他主题类似应该) - 进入docker容器里面操作
1 | docker exec -it hexo bash #进入hexo容器里面 |
- 重启服务
1 | docker-compose restart |
到这里就迁移成功了,其实和本地的操作差不多,只不过对于docker,若想主题生效需要到docker容器里面进行操作。虽然有后台,但是非常简陋,很多样式都无法正常在后台显示,可以简单使用下。后续写文章可以在本地上使用typora写,写好后再上传到服务器的网站根目录\source\_posts
文件夹下,再执行docker-compose restart即可更新不需要执行docker-compose restarat,程序会自动判断文件是否发生变化,如果变化便会自动渲染.md文件即更新操作。
与网上很多其他的迁移方法不同,网上很多方法可以实现同步推送更新文章到github和服务器。而这里使用的docker方法是分开的。
目前使用的博客站点:
- githubpage:https://yilanbk.com
- netlifly页面:https://blog.yilan.uk
- 服务器端(此次部署):https://blog.yilanbk.com
被劫持的域名:tjyll.com
详细教程
VPS配置(debian系统)
如果是新系统,先配置下基础环境
- 系统软件包更新及安装常用软件
1 | sudo -i # 切换到 root 用户 |
- 安装docker
1 | # 非大陆服务器安装命令 |
- 安装docker-compose
1 | # 非大陆服务器安装命令 |
安装Nginx Proxy Manager(用来反向代理)
1 | sudo -i |
- npm的docker-compose.yml文件
1 | version: '3' |
如果使用的是finalshell sshl连接工具,就像操作windows那样在目录找到这个文件,把上面的复制进docker-compose.yml文件里面,自由更改后保存退出。
也可以使用vi编辑工具
- 运行并访问Nginx proxy manage
1 | cd /root/data/docker_data/npm # 来到 dockercompose 文件所在的文件夹下 |
理论上就可以输入 http://ip:81
访问了。
1 | Email: admin@example.com |
安装hexo
1 | sudo -i |
理论上就可以输入 http://ip:8080
访问了。
hexo 的后台地址就是 http://ip:8080/admin
如果无法访问,是否防火墙端口未打开,或者服务器不支持ip+端口访问,那就必须配置好域名再访问。npm反代看下面的参考资料寻找教程。
上传文件
把hexo博客本地根目录的_config.butterfly.yml
,config.yml
,db.json
,package.json
,`package-lock.json
,.gitignore
这几个文件及source
和themes
这两个文件夹上传到服务器hexo目录下的blog文件夹下。(这里是butterfly主题,其他主题类似应该)
重要!!!
上传package.json到vps之后,打开package.json在"dependencies"
下添加"hexo-admin": "^2.3.0",
实际上,对于vps和本地相同的文件,把本地的文件覆盖上传到vps上就可以了。node_modules无需上传,后面npm install就是安装模块的操作。public也不用上传,每次hexo g就会生成。
容器内操作
1 | docker exec -it hexo bash #进入hexo容器里面 |
1 | cd /root/data/docker_data/hexo # 来到 dockercompose 文件所在的文件夹下 |