本篇环境使用阿里云服务器,操作系统是 Ubuntu 22.04。会从 Hexo 安装开始,到最终浏览器通过域名访问博客,如有遗漏,欢迎指出。

# 环境准备

  • 一台服务器
  • 一个域名指向服务器

# 安装 Hexo

Hexo 官网地址点这里

# 安装 Node.js

如需升级可以参考 node 升级,其他安装方式参考如何在 Ubuntu 20.04 上安装 Node.js 和 npm

  1. 安装 nodejs 和 npm
sudo apt update
sudo apt install nodejs npm
  1. 检查版本
nodejs --version
npm --version

# 安装 Hexo

  1. 全局安装
npm install -g hexo-cli
  1. 检查版本
hexo --version

# 建站

  1. 初始化目录
hexo init blog
  1. 进入目录
cd blog
  1. 安装依赖
npm install
  1. 生成静态文件
hexo clean && hexo g

# 简单访问

  1. 如果没装 Nginx,请先安装。
sudo apt install nginx
  1. 配置 Nginx,映射目录为 blog 下的 public 目录。
vi /etc/nginx/nginx.conf

http 中增加 server:

server {
  listen 80;
  root /data/hh/blog/public;
  server_name demo.couplecoders.tech;
  location / {
    try_files $uri $uri/ =404;
  }
}
  1. 重启 Nginx
sudo service nginx restart
  1. 访问
    访问域名,出现 Hello World 页面,说明一切正常。接下来就看下如何使用 shoka 主题。

# 切换 shoka 主题

shoka 官方文档参考 Hexo shoka 主题使用说明
主题的安装与配置,官方文档已经很详细了,这里不再说明了。如果是想自己从头安装,参照官方文档即可。
为了本人下次切换服务器能够快速配置好主题,以及给我的小伙伴分享教程,这里记录下步骤。

  1. 拷贝旧资源
# 复制主题
cp -r /data/hh/repo/blog/themes/shoka /data/hh/blog/themes/
# 覆盖根目录下的配置
cp /data/hh/repo/blog/_config.yml /data/hh/blog/_config.yml
# 删掉 hello world
rm /data/hh/repo/blog/source/_posts/hello-world.md
# 复制根目录下的资源
cp -r /data/hh/repo/blog/source/* /data/hh/blog/source
  1. 安装插件
npm un hexo-renderer-marked --save
npm i hexo-renderer-multi-markdown-it --save
npm i hexo-autoprefixer --save
npm i hexo-algoliasearch --save
npm i hexo-symbols-count-time --save
npm i hexo-feed --save
npm i hexo-enhancer --save
  1. 搜索功能
    这一步骤是写给我的小伙伴,记得重新配置下自己的搜索,不要和我的弄一起了。具体参考官方文档。

  2. 生成静态文件

hexo clean && hexo g && hexo algolia
  1. 成功
    大功告成!之前每次搞好久,发现记录一下,只需要两个步骤即可。

# 部署

一般情况下会在本地写博客,然后提交到服务器。当然也可以使用 VSCode 等远程写博客,不过这样就要手动部署了。

# 手动部署

hexo clean && hexo g && hexo algolia

# 自动部署

  1. 初始化仓库
    需要进入 blog 目录下,注意这里创建的是一个普通库,普通库与裸库的区别见:git 普通库与裸库
git init
# 必须配置,否则本地无法提交代码
git config receive.denyCurrentBranch ignore
  1. 创建钩子
vi .git/hooks/post-update
#! /bin/bash
read mes mes ref
if [ "$ref" == "refs/heads/master" ]; then
        cd ..
        unset GIT_DIR
        git reset --hard
        cd hexo
        hexo clean
        hexo g
        hexo algolia
fi