Hexo博客迁移到腾讯云
一开始博客在github pages上,速度比较慢。后来在网上发现许多人说托管到Netify很快,还自带CDN加速。但我迁移过去,发现国内的网根本就登不上,又检测了一下在大陆访问博客的速度,惨不忍睹。最终老老实实买台腾讯云服务器,把博客迁移过去。顺手写篇文章记录一下。
必备环境
服务器(作者用的是腾讯云的),域名www.xiaoniuhululu.com(需要备案)
云主机 安全组需开放22、80、443端口,腾讯云默认开放所有端口
22 :ssh访问
80 :http访问
443 :https访问
本地:装好 git, 一个能正常在本地运行的hexo 博客
我们先将服务器的环境 配置一下:
- 安装git
1 | sudo yum install git |
- 安装docker
为什么使用docker,通过 docker 拉取 nginx 镜像,将该镜像运行的容器作为代理服务器和反向代理.
我们通过 daocloud 加速安装,这样方便快捷
1 | curl -sSL https://get.daocloud.io/docker | sh |
查看docker版本
1 | docker -v |
Docker version 20.10.5, build 55c4c88
设置docker自启动
1 | sudo systemctl enable docker |
启动docker
1 | sudo systemctl start docker |
- 拉取nginx镜像
搜索nginx镜像
1 | docker search nginx |
拉取最新 nginx 镜像到云主机
1 | docker pull nginx:latest |
查看镜像
1 | docker images |
查看nginx镜像版本
1 | docker image inspect nginx:latest | grep -i version |
- 运行nginx容器
运行一个名为 nginx-web 的容器
1 | docker run -d \ |
1 | 其中: |
查看所以容器:
1 | docker ps -a |
出现下面代表容器创建并运行成功
- 拷贝default.conf文件
nginx-web 容器在 /etc/nginx/conf.d/ 目录下有一个 default.conf 文件,因为该目录与宿主机上的 /home/nginx/conf.d 目录挂载时被删除了。没有该文件,浏览器访问报错 502 Bad Gateway 。因此下面要运行一个新nginx容器,然后拷贝该容器上的 default.conf 文件到挂载目录就解决了
首先,运行一个名为ceshi的新容器
1 | docker run -d --name=ceshi nginx:latest |
将ceshi容器内的default.conf文件拷贝到宿主机
1 | docker cp ceshi:/etc/nginx/conf.d/default.conf /home/nginx/conf.d/default.conf |
还有ceshi容器的 50x.html 文件(其实新建一个也可以)
1 | docker cp ceshi:/usr/share/nginx/html/50x.html /home/nginx/html/50x.html |
这时可以删除ceshi容器
首先停止容器
1 | docker stop ceshi |
然后删除容器
1 | docker rm ceshi |
- 创建git用户
1 | useradd git |
会自动在宿主机上创建 /home/git 用户目录
更改文件权限
1 | chmod 740 /etc/sudoers |
配置git用户权限
1 | vim /etc/sudoers |
按 i 键进入输入模式,在 root ALL=(ALL) ALL 下一行添加
1 | git ALL=(ALL) ALL |
按 ESC 键退出输入模式,输入 :wq 保存
改回文件权限
1 | chmod 400 /etc/sudoers |
更改git密码
1 | sudo passwd git |
创建 /home/nginx/html/hexo 部署目录
与nginx-web容器的/usr/share/nginx/html/hexo目录挂载
1 | mkdir /home/nginx/html/hexo |
切换到git用户(下面都是用git用户)
1 | su git |
- 创建hexo.git仓库
hexo.git 仓库用来存放hexo博客部署文件
创建hexo.git仓库
1 | $ cd ~ |
配置 post-receive 钩子文件实现从 hexo.git 仓库克隆新的博客静态文件到 /home/nginx/html/hexo (需root用户手动创建hexo文件夹,上面已经创建过了)目录下。这样以后部署博客时只需要本地 git push 就好,无需在云主机操作
编辑hexo.git钩子文件
1 | vim ~/hexo.git/hooks/post-receive |
按 i 键进入输入模式,写入:
1 | git --work-tree=/home/nginx/html/hexo --git-dir=/home/git/hexo.git checkout -f |
按 ESC 键退出输入模式,按 :wq 保存
授予钩子文件可执行权限
1 | $ chmod +x ~/hexo.git/hooks/post-receive |
可能提示要输入git密码
如果再添加一个网站,只需
root用户下创建一个 ceshi 文件夹
1 | mkdir /home/nginx/html/ceshi |
除了只需要更改仓库名和目录路径,其它同上,nginx-web容器可以代理多个网站
本地
- 域名绑定服务器+ 申请ssl证书
笔者用的是 阿里云的域名,去阿里云控制台把域名与服务器绑在一起,这部分很简单,就省略了
申请ssl证书,用的腾讯的,下载下来后注意:
如果使用 www.xiaoniuhululu.com 访问博客,则证书绑定域名必须是 www.xiaoniuhululu.com ,两者保持一致
下载的ssl证书是一个压缩包,解压后其中有一个 Nginx 文件夹,重命名该文件夹为www.xiaoniuhululu.com
- 推送ssl证书和nginx 配置文件至 服务器中
笔者 使用的是winscp工具上传的,上传好后
ssl证书 上传至服务器 /home/nginx/ssl
nginx 配置文件,先在本地写好,然后上传至服务器 /home/nginx/conf.d
中
配置文件:xiaoniuhululu.com.conf
1 | ###https访问 |
注意:路径一定要一一对应,可以自定义
- 推送本地hexo博客
修改hexo博客的配置文件hexo/_config.yml:
1 | deploy: |
注意前面和冒号 : 后的空格
推送到云主机 hexo.git 仓库
hexo目录下右键 Git bash Here
执行部署命令,文件会自动部署到服务器的hexo.git仓库中,静态文件会上传到nginx/html/hexo中
1 | hexo clean |
启动nginx容器
1 | docker restart 容器的id |
如果没启动成功,或者页面不正常,可以查看nginx的日志 在/home/nginx/log
中,
把问题一一解决后,浏览器访问 www.xiaoniuhululu.com
参考:https://www.gaoyuanqi.cn/hexo-tenxunyun-xin/
本篇文章到这里就结束啦,如果喜欢的话,多多支持,欢迎关注!