目前搭建博客的主流框架有 WordPress、VuePress、Hugo、Hexo 等等,我主要是感觉 Hexo 好看的主题比较多,所以就来折腾一下这个博客框架

1 整体流程

  1. 在本地运行 hexo deploy 命令,Hexo 会将生成的静态文件(hexo generate)推送到远程的 Git 仓库
  2. 在 Git 仓库中,配置一个钩子脚本,它会在接收到推送后执行——将最新的静态文件强制覆盖到指定的工作目录
  3. 在 Nginx 服务器中,配置访问根路径的请求指向该工作目录

2. 本地环境准备

2.1 安装 Node.js 和 Git

这两个我是很早就安装好了,网上也有大量的资料,我就不重复了,这里主要记录 Hexo 相关笔记

(1) 验证 Node.js是否安装成功,打开 cmd 输入node -v,出现版本信息,则 ok

  1. C:\Users\gzl>node -v
  2. v18.16.1

(2) 验证 Git 是否安装成功,打开 cmd 输入git --version,出现版本信息,则 ok

  1. C:\Users\gzl>git --version
  2. git version 2.39.0.windows.2

同时在文件夹中点击右键会出现 Git Bash Here

2.2 安装 Hexo

(1) 新建一个文件夹用来存储个人博客:E:\MyBlog

进入该文件夹,进入 Git Bash,输入npm install -g hexo-cli 将 Hexo 命令行工具安装到系统的全局环境中

  1. gzl@gzl MINGW64 /e/MyBlog
  2. $ npm install -g hexo-cli

(2) 待安装完毕,输入以下指令,将会新建一个 myblogs 文件夹,并且安装 Hexo 项目所需的依赖项

  1. # 创建一个新的 Hexo 项目
  2. $ hexo init myblogs
  3. $ cd myblogs
  4. # 安装 Hexo 项目所需的依赖项
  5. $ npm install

最后,会在 myblogs 文件中生成如下文件:

(3) 继续在 Git Bash 中执行指令hexo server

  1. $ hexo server

执行完毕后,打开本地浏览器,访问http://localhost:4000/,出现以下界面,说明第一步成功了

3. 服务端环境准备

3.1 Nginx 环境配置

3.1.1 安装 Nginx

依次执行以下指令

  1. # 安装 nginx 依赖环境,遇到 yes 选 yes
  2. yum install gcc-c++
  3. yum install -y pcre pcre-devel
  4. yum install -y zlib zlib-devel
  5. yum install -y openssl openssl-devel
  6. # 下载并解压 nginx 安装包
  7. wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
  8. tar -xvf nginx-1.10.1.tar.gz -C /usr/local
  9. # 执行配置文件
  10. cd /usr/local/nginx-1.10.1
  11. ./configure
  12. # 编译并安装 nginx
  13. make
  14. make install
  15. # 开放 80 端口
  16. cd /usr/local/nginx
  17. /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  18. # 启动 nginx
  19. cd sbin
  20. ./nginx

没有任何消息,代表启动成功,在浏览器访问公网ip:80就可以进入 nginx 页面了

如果需要停止 nginx 服务,执行./nginx -s stop

3.1.2 更改 Nginx 配置文件

需要将 Nginx 的配置文件中网站的根目录(root)指向 hexo 的部署目录,以及修改域名(server_name)为自己已备案的域名,如果没有,则填公网ip

所以,首先创建一个文件用来存放 hexo 的部署文件

  1. mkdir -p /data/hexo

然后修改 nginx 配置文件

  1. cd /usr/local/nginx/conf
  2. vim nginx.conf
  3. # 进入后,按 i 键进入编辑模式

修改server_nameroot即可

  1. server {
  2. listen 80;
  3. server_name www.cheyaoyao.cn;
  4. location / {
  5. root /data/hexo;
  6. }
  7. ...
  8. }

修改完毕后按 Esc 键进入命令模式,再输入 :wq 保存并退出

3.2 Node.js 环境配置

安装 node.js,依次执行以下命令:

  1. # 切换到根目录,安装 node.js
  2. cd ~
  3. curl -sL https://rpm.nodesource.com/setup_10.x | bash -
  4. yum install -y nodejs
  5. # 查看安装结果,打印对应版本号则安装成功
  6. node -v
  7. npm -v

3.3 Git 环境配置

3.3.1 安装 Git

依次执行以下命令:

  1. # 安装,遇到 yes 选 yes
  2. yum install git
  3. # 查看版本号
  4. git --version

3.3.2 创建 Git 用户

依次执行以下指令:

  1. # 创建git用户
  2. adduser git
  3. # 修改git用户的权限
  4. chmod 740 /etc/sudoers
  5. # 进入 sudo 命令文件
  6. vim /etc/sudoers

找到root ALL=(ALL) ALL,在下面添加git ALL=(ALL) ALL

继续执行以下指令

  1. # 修改文件权限
  2. chmod 400 /etc/sudoers
  3. # 设置 git 用户的密码
  4. sudo passwd git

3.3.3 配置 SSH 免密登录

由于是将本地的静态文件推送到服务器的 Git 仓库中,所以要配置 ssh 免密登录服务器

(1) 在服务端,依次执行以下指令:

  1. # 切换到 git 用户
  2. su git
  3. # 在根目录创建.ssh文件夹,存放公钥
  4. cd ~
  5. mkdir .ssh

(2) 在本地计算机打开 Git Bash,执行以下指令

  1. # 在本地生成公钥/私钥对
  2. $ cd ~
  3. $ cd .ssh
  4. $ ssh-keygen

遇到系统询问,就按回车键。最后生成的公钥和秘钥会自动保存在C:\Users\gzl\.ssh目录下

(3) 给私钥设置权限,执行以下指令:

  1. $ chmod 700 ~/.ssh
  2. $ chmod 600 ~/.ssh/id_rsa

(4) 将本地的公钥(id_rsa.pub)上传到服务器的/home/git/.ssh目录下

(5) 新建authorized_keys文件,并拷贝公钥的内容到该文件中,依次执行以下指令:

  1. cd ~/.ssh
  2. cp id_rsa.pub authorized_keys
  3. cat id_rsa.pub >> ~/.ssh/authorized_keys
  4. # 设置权限
  5. chmod 600 ~/.ssh/authorized_keys
  6. chmod 700 ~/.ssh
  7. # 确保 SSH 相关的文件和目录具有正确的 SELinux 安全标签
  8. restorecon -Rv ~/.ssh

(6) 测试本地免密登录服务器

进入本地计算机的 Git Bash,输入:

  1. $ ssh -v git@xxx.xxx.xxx.xxx(公网IP

最后面会出现:

3.3.4 配置 Git 仓库

(1) 在服务器新建一个 Git 仓库,同时新建一个钩子文件

  1. cd ~
  2. git init --bare hexo.git
  3. vi ~/hexo.git/hooks/post-receive

输入git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f,保存并退出

(2) 授予钩子文件可执行权限

  1. chmod +x ~/hexo.git/hooks/post-receive
  2. cd ~
  3. sudo chmod -R 777 /data/hexo

重启 ECS 实例,服务端配置完成

4. 部署 Hexo 博客到服务端 Git 仓库

(1) 在本地计算机打开 Hexo 项目,我用的 vscode,修改_config.yml文件中的deploy

  1. deploy:
  2. type: git
  3. repo: git@公网ip:/home/git/hexo.git
  4. branch: master

(2) 安装插件,hexo-deployer-git 和 hexo-server

  1. # 用于将 Hexo 生成的静态文件推送到指定的 Git 仓库
  2. npm install hexo-deployer-git --save
  3. # 用于在本地启动一个 Hexo 服务器,方便在本地预览博客
  4. npm install hexo-server

(3) 配置 Git 全局变量

回到 Git Bash,输入:

  1. # email 和 name 随便填一个也可以
  2. $ git config --global user.email "xxxxxxxxxx@xx.com"
  3. $ git config --global user.name "xxx"

(4) 生成静态文件和发布博客

在 vscode 的终端中输入:

  1. # 清除之前生成的静态文件
  2. hexo clean
  3. # 生成静态文件
  4. hexo generate
  5. # 部署到 Git 仓库
  6. hexo deploy

至此,已经全部配置完毕了

如果在 nginx 中配置了域名的话,可以通过域名访问博客了,没配置也可以用公网ip访问

下一篇就研究怎么美化博客吧

5. Hexo 写作新文章并发布

(1) 在 vscode 中打开 Hexo 项目,打开终端,使用如下命令创建新文章

  1. hexo new "title"

执行该命令,Hexo 会在/source/_posts目录下创建一篇新的文章

(2) Front-matter

Hexo 创建的文件中开头有一段配置信息:

这个叫做Front-matter,即前置信息,用于给 Hexo 渲染该 md 文档

配置项 意义
title 网页文章标题
date 文章创建如期
tags 文章标签

(3) 发布文章

随便编写点内容

在终端依次输入:

  1. # 清除之前生成的静态文件
  2. hexo clean
  3. # 生成静态文件,hexo generate 的简写
  4. hexo g
  5. # 本地启动,hexo server 的简写
  6. hexo s

可以在本地预览文章

最后部署到远程的 Git 仓库中

  1. # 部署到 Git 仓库,hexo deploy 的简写
  2. hexo d

稍微等一下,在浏览器访问域名,就可以看到了

使用 Hexo 搭建个人博客并部署到云服务器的更多相关文章

  1. Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages

    之前的这篇文章<Linux下使用 github+hexo 搭建个人博客01-hexo搭建>,相信大家都知道怎么搭建 hexo ,怎么切换主题,并且完成了一篇博文的创建,以及 MarkDow ...

  2. 使用Hexo搭建个人博客并部署到GitHub或码云上全过程

    一.前言 如上图所示:GitHub有Github Pages,而码云也有码云 Pages 1.Github Pages或Gitee Pages是什么呢? Github Pages或者Gitee Pag ...

  3. Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理

    这是搭建个人博客系统系列文章的最后一篇,如果你是从第一篇一路跟下来的,那么恭喜你,即将完成整个博客网站的搭建.OK,话不多说,开始我们的收官之战. 不知你想过没有,如果我们的文章少,一眼看完整个目录, ...

  4. Linux下使用 github+hexo 搭建个人博客06-next主题接入数据统计

    之前说了 next 主题的优化和接入评论系统.让我们完成了自己所需的页面风格和排版,也可让访问用户在每篇博文评论,完成博主和访问用户的交互. 本章我们继续讲解其他重要功能. 既然是一个网站,那么我们就 ...

  5. Linux下使用 github+hexo 搭建个人博客05-next主题接入评论系统

    静态站点拥有一定的局限性,因此我们需要借助于第三方服务来扩展我们站点的功能. 而评论系统是最常用于和网站用户交流的,因此本章讲解在 next 主题,如何接入评论系统. 参考网站:Next 使用文档,第 ...

  6. Linux下使用 github+hexo 搭建个人博客04-next主题优化

    上篇我们说了 hexo 的优化,针对的站点的优化. 本篇讲解 next 主题的优化,包括:使用语言.前端页面显示宽度.菜单.侧栏.头像.添加或取消动画效果.打赏功能等等. 让页面排版更符合我们所要的功 ...

  7. Linux下使用 github+hexo 搭建个人博客03-hexo配置优化

    上两张文章,我们说了 hexo 部署.主题的切换.博文的创建.MarkDown 简单使用和 hexo 部署到 GitHub Pages. 也说了我们会使用 next 主题做为我们后期博客的使用和维护. ...

  8. Linux下使用 github+hexo 搭建个人博客01-hexo搭建

    为什么要搭建自己的博客系统? 原因有好几个吧,归类如下:1.自己搭建博客系统很有成就感,可以自己选定页面风格和页面排版: 2.自己搭建博客系统可以根据自己的需要添加各种插件功能,因此整体上比网上的第三 ...

  9. 使用Hexo快速搭建一个博客,并部署到github

    本文旨在记录一下我在通过hexo搭建一个博客,并将其部署在github上面的过程,也供我自己在以后的使用过程中能够快速学习和参考.需要看更详细或者官方文档的可以点击Hexo官方文档进行查看. 安装前提 ...

  10. 利用Hexo搭建个人博客-博客发布篇

    通过 <利用Hexo搭建个人博客-环境搭建篇> 以及 <利用Hexo搭建个人博客-博客初始化篇>,我们了解到了利用Hexo搭建个人博客需要的环境以及配置,下面这篇文章将会介绍如 ...

随机推荐

  1. 可托拉拽的WPF选项卡控件,强大好用!

    推荐一个简单易用的WPF选项卡控件. 项目简介 这是一个基于WPF开发的,可扩展.高度可定制.轻量级的UI组件,支持拖拉拽功能,可以让开发人员快速实现需要选项卡窗口的系统. 特色功能 1.拖拉拽标签: ...

  2. Angular报错:Error: Unknown argument: spec

    解决方案 使用--skip-tests代替 效果展示 可以看到spec.ts消失了 参考链接 https://stackoverflow.com/questions/62228834/angular- ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (69)-- 算法导论6.5 8题

    八.HEAP-DELETE(A,i)操作能够将结点 i 从堆 A 中删除.对于一个包含 n个元素的堆,请设计一个能够在 O(lgn)时间内完成的 HEAP-DELETE 操作. 文心一言: 要在 O( ...

  4. 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度

    编写一个函数,返回两个数字的和.输入数字是字符串,函数必须返回一个字符串. 示例: 添加("123","321"):->"444" 添 ...

  5. [kubernetes]集群中部署CoreDNS服务

    前言 从k8s 1.11版本开始,k8s集群的dns服务由CoreDNS提供.之前已经使用二进制文件部署了一个三master三node的k8s集群,现在需要在集群内部部署DNS服务. 环境信息 IP ...

  6. ctfshow--web入门--文件上传

    ctfshow--web入门--文件上传 web151(前端校验) 题目中提示前端检验不可靠,应该对前端检验进行绕过 检查前端代码进行修改,使php文件可以通过前端校验,成功上传后进行命令执行,找到f ...

  7. B3612 【深进1.例1】求区间和(前缀和)

    [深进1.例1]求区间和 [深进1.例1]求区间和 题目描述 给定 \(n\) 个正整数组成的数列 \(a_1, a_2, \cdots, a_n\) 和 \(m\) 个区间 \([l_i,r_i]\ ...

  8. Linux查看磁盘空间,文件系统、挂载

    Linux磁盘空间,文件系统.挂载 概述 在使用以下命令查看磁盘使用情况时 df -h du -sh 目标路径 作为初级开发者,Linux入门级选手,可能不禁要问Linux系统的文件系统跟window ...

  9. Vue【原创】整合el-dialog,可拖动可全屏最大化弹出框

    项目中很多时候需要弹出框可以拖动并且可最大化,el-dialog是不满足的,这边采用指令的方式进行拓展. 先来个效果图: 首先来个v-darg指令: 1 import Vue from 'vue' 2 ...

  10. OpenLDAP服务器搭建

    一.关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl d ...