how to build hexo on VPS

之前使用Duke写的博客框架。在我重新购买服务器后就放弃了,说到底还是想要傻瓜试的搭建博客。

前情提要

本人使用Ubuntu24.04LTS VPS

更新源

1
sudo apt update;sudo apt upgrade

一、下载git, nodejs, npm,certbort, python3-certbort-nginx

git(版本管理); nodejs(脚本); npm(有hexo的包管理工具); certbot(证书申请);python3-certbot-nginx(certbort的python库)

1
sudo apt install git nodejs npm nginx certbot python3-certbot-nginx

PS 一、 如果提示nodejs 版本太老 则下载最新的如果提示nodejs

  1. 卸载旧版Node.js
1
sudo apt remomve nodejs
  1. 访问 https://deb.nodesource.com/ 根据步骤下载最新的nodejs
1
2
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt-get install -y nodejs

二、安装hexo

1
sudo npm install -g hexo-cli

三、部署hexo

  1. 新建hexoblog文件夹,进入hexoblog文件夹,初始化hexo中,
1
2
3
mkdir hexoblog
cd hexoblog
hexo init
  1. 修改hexo配置文件(_config.yml),使生成的静态文件存放在/var/www/blog
1
public_dir: /var/www/blog
  1. 生成hexo 的静态文件
1
sudo hexo g
  1. 删除nginx default配置,没有请忽略
1
2
sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default
  1. 编写博客的nginx反向代理规则,我这里配置名为blog
1
sudo vim /etc/nginx/sites-available/blog
  1. 添加http访问配置到blog文件 填写自己的域名我这里是blog.mr-h.org
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
server {
server_name blog.mr-h.org;

# 配置访问日志和错误日志
access_log /var/log/nginx/blog_access.log;
error_log /var/log/nginx/blog_error.log;

# 指向 Hexo 生成的 public 目录
root /var/www/blog;
index index.html;

# 配置文件匹配
location / {
try_files $uri $uri/ /index.html;
}

# 限制访问隐藏文件
location ~ /\. {
deny all;
}

# 启用 Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_proxied any;
gzip_vary on;

# 缓存静态资源
location ~* \.(jpg|jpeg|png|gif|ico|css|js){
expires 30d;
add_header Cache-Control "public, no-transform";
}


listen 80; # managed by Certbot
}
  1. 链接blog配置
1
sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enable/
  1. 重载,重启nginx服务
1
sudo systemctl reload nginx.service && sudo systemctl restart nginx.service
  1. 在域名提供商处,将域名指向服务器ip

  2. 申请证书(输入邮箱, 然后一直yes)

1
sudo certbot --nginx -d blog.mr-h.org