Hexo博客迁移到云服务器

本文涉及的产品
.cn 域名,1个 12个月
简介: Hexo博客迁移到云服务器

一开始博客在github pages上,速度比较慢。后来在网上发现许多人说托管到Netify很快,还自带CDN加速。但我迁移过去,发现国内的网根本就登不上,又检测了一下在大陆访问博客的速度,惨不忍睹。最终老老实实买台腾讯云服务器,把博客迁移过去。顺手写篇文章记录一下。


必备环境

服务器(作者用的是腾讯云的),域名www.xiaoniuhululu.com(需要备案)

云主机 安全组需开放22、80、443端口,腾讯云默认开放所有端口

22 :ssh访问

80 :http访问

443 :https访问

本地:装好 git, 一个能正常在本地运行的hexo 博客

我们先将服务器的环境 配置一下:

  1. 安装git
sudo yum install git
  1. 安装docker

为什么使用docker,通过 docker 拉取 nginx 镜像,将该镜像运行的容器作为代理服务器和反向代理.

我们通过 daocloud 加速安装,这样方便快捷

curl -sSL https://get.daocloud.io/docker | sh

查看docker版本

docker -v

Docker version 20.10.5, build 55c4c88

设置docker自启动

sudo systemctl enable docker

启动docker

sudo systemctl start docker
  1. 拉取nginx镜像

搜索nginx镜像

docker search nginx

拉取最新 nginx 镜像到云主机

docker pull nginx:latest

查看镜像

docker images

查看nginx镜像版本

docker image inspect nginx:latest | grep -i version
  1. 运行nginx容器

运行一个名为 nginx-web 的容器

docker run -d \
--name nginx-web \
-p 80:80 \
-p 443:443 \
--restart always \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/ssl:/etc/nginx/ssl \
nginx:latest
其中:
-d :在分离模式下(后台)运行
--name :给运行的容器取一个名字,这里是 nginx-web
-p :docker宿主机端口映射nginx-web容器端口,即80映射80,443映射443
--restart :将 nginx-web 容器设为自启动
-v :将docker宿主机的目录路径绑定装载到nginx-web容器的目录路径,即两者路径下的数据会自动同步且保持一致,目录不存在自动创建
/usr/share/zoneinfo/Asia/Shanghai :将宿主机时间同步到容器,因为容器与宿主机时间相差8小时
/home/nginx/conf.d :存放站点配置文件
/home/nginx/html :存放hexo部署目录
/home/nginx/log :存放nginx-web容器运行日志
/home/nginx/ssl :存放ssl证书,用于https访问
nginx:latest :使用标签为 latest 的 nginx 镜像,即上面拉取的nginx镜像

查看所以容器:

docker ps -a

出现下面代表容器创建并运行成功

  1. 拷贝default.conf文件 nginx-web 容器在 /etc/nginx/conf.d/ 目录下有一个 default.conf 文件,因为该目录与宿主机上的 /home/nginx/conf.d 目录挂载时被删除了。没有该文件,浏览器访问报错 502 Bad Gateway 。因此下面要运行一个新nginx容器,然后拷贝该容器上的 default.conf 文件到挂载目录就解决了

首先,运行一个名为ceshi的新容器

docker run -d --name=ceshi nginx:latest

将ceshi容器内的default.conf文件拷贝到宿主机

docker cp ceshi:/etc/nginx/conf.d/default.conf /home/nginx/conf.d/default.conf

还有ceshi容器的 50x.html 文件(其实新建一个也可以)

docker cp ceshi:/usr/share/nginx/html/50x.html /home/nginx/html/50x.html

这时可以删除ceshi容器

首先停止容器

docker stop ceshi

然后删除容器

docker rm ceshi
  1. 创建git用户
useradd git

会自动在宿主机上创建 /home/git 用户目录

更改文件权限

chmod 740 /etc/sudoers

配置git用户权限

vim /etc/sudoers

按 i 键进入输入模式,在 root ALL=(ALL) ALL 下一行添加

git ALL=(ALL) ALL

按 ESC 键退出输入模式,输入 :wq 保存

改回文件权限

chmod 400 /etc/sudoers

更改git密码

sudo passwd git

创建 /home/nginx/html/hexo 部署目录

与nginx-web容器的/usr/share/nginx/html/hexo目录挂载

mkdir /home/nginx/html/hexo

切换到git用户(下面都是用git用户)

su git
  1. 创建hexo.git仓库

hexo.git 仓库用来存放hexo博客部署文件

创建hexo.git仓库

$ cd ~
$ git init --bare hexo.git

配置 post-receive 钩子文件实现从 hexo.git 仓库克隆新的博客静态文件到 /home/nginx/html/hexo (需root用户手动创建hexo文件夹,上面已经创建过了)目录下。这样以后部署博客时只需要本地 git push 就好,无需在云主机操作

编辑hexo.git钩子文件

vim ~/hexo.git/hooks/post-receive

按 i 键进入输入模式,写入:

git --work-tree=/home/nginx/html/hexo --git-dir=/home/git/hexo.git checkout -f

按 ESC 键退出输入模式,按 :wq 保存

授予钩子文件可执行权限

$ chmod +x ~/hexo.git/hooks/post-receive
$ cd ~
$ sudo chmod -R 777 /home/nginx/html/hexo

可能提示要输入git密码

如果再添加一个网站,只需 root用户下创建一个 ceshi 文件夹

mkdir /home/nginx/html/ceshi
su git

除了只需要更改仓库名和目录路径,其它同上,nginx-web容器可以代理多个网站

本地

  1. 域名绑定服务器+ 申请ssl证书

笔者用的是 阿里云的域名,去阿里云控制台把域名与服务器绑在一起,这部分很简单,就省略了 申请ssl证书,用的腾讯的,下载下来后注意:

如果使用 www.xiaoniuhululu.com 访问博客,则证书绑定域名必须是 www.xiaoniuhululu.com ,两者保持一致

下载的ssl证书是一个压缩包,解压后其中有一个 Nginx 文件夹,重命名该文件夹为www.xiaoniuhululu.com

  1. 推送ssl证书和nginx 配置文件至 服务器中

笔者 使用的是winscp工具上传的,上传好后

ssl证书 上传至服务器 /home/nginx/ssl

如果觉得文章对你有帮助,欢迎关注微信公众号:小牛呼噜噜

nginx 配置文件,先在本地写好,然后上传至服务器 /home/nginx/conf.d

配置文件:xiaoniuhululu.com.conf

###https访问
server {
    listen       80 default_server;
    listen  [::]:80;
    server_name  xiaoniuhululu.com;
    location / {
        root   /usr/share/nginx/html/hexo;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        proxy_pass   http://172.17.0.2:80; 
    }
    rewrite ^(.*) https://xiaoniuhululu.com$1 permanent;
}
server {
    listen       443 ssl;
    server_name  xiaoniuhululu.com;
    ssl_certificate      /etc/nginx/ssl/www.xiaoniuhululu.com/1_xiaoniuhululu.com_bundle.crt;
    ssl_certificate_key  /etc/nginx/ssl/www.xiaoniuhululu.com/2_xiaoniuhululu.com.key;
    # ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    ssl_prefer_server_ciphers  on;
    location / {
        root /usr/share/nginx/html/hexo;
        index  index.html index.htm;
        }
}

注意:路径一定要一一对应,可以自定义

  1. 推送本地hexo博客

修改hexo博客的配置文件hexo/_config.yml:

deploy:
  type: git
  repository: git@111.11.1.11:/home/git/hexo.git
  branch: master

注意前面和冒号 : 后的空格

推送到云主机 hexo.git 仓库 hexo目录下右键 Git bash Here

执行部署命令,文件会自动部署到服务器的hexo.git仓库中,静态文件会上传到nginx/html/hexo中

hexo clean
hexo g
hexo d

启动nginx容器

docker restart 容器的id

如果没启动成功,或者页面不正常,可以查看nginx的日志 在/home/nginx/log中,

把问题一一解决后,浏览器访问 www.xiaoniuhululu.com

参考:https://www.gaoyuanqi.cn/hexo-tenxunyun-xin/


本篇文章到这里就结束啦,如果喜欢的话,多多支持,欢迎关注!

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
弹性计算 Linux Windows
跨账号和同账号的ECS云服务器之间迁移教程
跨账号和同账号的ECS云服务器之间迁移教程
|
2月前
|
域名解析 弹性计算 程序员
想要轻松地搭建一个即开即用的WordPress博客吗?借助宝塔面板镜像+阿里云ECS,迅速拥有自己的个人博客
拥有个人博客是每位程序员的梦想,但对服务器不熟悉的初学者而言,搭建博客颇具挑战。本文介绍利用阿里云市场的宝塔面板镜像与ECS云服务器,轻松搭建WordPress博客的方法,让您快速拥有专属博客空间。通过简单的操作步骤,即使是新手也能轻松上手,实现从零到有的博客搭建过程。
217 3
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
68 3
|
2月前
|
弹性计算 Linux 数据库
阿里云国际版如何迁移Linux云服务器系统盘中的数据
阿里云国际版如何迁移Linux云服务器系统盘中的数据
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
弹性计算 网络协议 Linux
云服务器评估迁移时间与测试传输速度
云服务器评估迁移时间与测试传输速度
|
5月前
|
弹性计算 Linux 网络安全
使用阿里云服务器迁移中心SMC将其他云平台业务迁移至阿里云教程参考
现在越来越多的个人和企业用户选择将其他云平台或者服务商的业务迁移到阿里云,但是如何快速且安全完成迁移是很多用户比较关注的问题,我们可以选择使用阿里云提供的服务器迁移中心(Server Migration Center,简称SMC),这个产品是阿里云提供给您的迁移平台,专注于提供能力普惠、体验一致、效率至上的迁移服务,满足您在阿里云的迁移需求。本文为大家展示使用阿里云服务器迁移中心SMC将其他云平台业务迁移至阿里云的教程,以供参考。
使用阿里云服务器迁移中心SMC将其他云平台业务迁移至阿里云教程参考
|
5月前
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之如何从Linux迁移存档到Windows
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
5月前
|
弹性计算 Linux 数据安全/隐私保护
云服务器 ECS产品使用问题之如何迁移游戏数据
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
7月前
|
安全 Linux 网络安全
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介
越来越多的个人和企业希望将部署在其他云平台或者IDC企业的业务迁移到阿里云上,对于这部分用户来说,最为关注的问题就是迁移到阿里云有没有什么优惠,迁移过程是否麻烦,针对这部分用户的需求,阿里云推出了5亿算力补贴,针对迁移用户做出补贴优惠,在迁移过程中,用户可以自行做数据传输迁移,也可以使用阿里云的服务器迁移中心,快速完成迁移。本文为大家介绍其他云服务商的业务迁移到阿里云最新优惠政策,以及使用服务器迁移中心实现快速迁移的方法。
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介