mohのAI正在绞尽脑汁想思路ING···
mohのAI摘要
mohのAI-Lite

如何将hexo部署到云服务器上面

服务器环境基础环境搭建

因为 Docker 容器能够提供一个相对独立、隔离的运行环境,本文选择在服务器上面拉取一个 Ubuntu的 Docker 容器内配置 Hexo 的部署环境。当然,如果你不想使用 Docker,直接在本地操作也是完全可以的。
本教程同样适用于不使用 Docker 的情况,你可以根据个人习惯灵活选择。

1、准备工作:创建一个 Ubuntu Docker 容器

我们将在一个独立的 Docker 容器中搭建环境。请执行以下命令:

1
docker run -p 4000:4000 -p20000:22  --name hexo_server -itd django_lesson:1.1

⚠️ 重要提示
如果本地没有现成的 Ubuntu 镜像,Docker 会自动从远程仓库拉取。上述命令会创建一个名为 hexo_server的容器,并将宿主的 4000 端口(用于 Hexo 预览)和 20000 端口(用于 SSH 访问)分别映射到容器内部。

2、检查并安装 Git 环境

进入容器后,首先确认是否已安装 Git:

1
git -v

如果显示“command not found”或未安装,请使用以下命令安装:

1
2
apt-get update
apt-get install git

安装完成后,可以再次运行 git —version来验证安装是否成功。

3、配置 Git 仓库与部署钩子(Hook)

我们将在容器中创建一个裸仓库,并设置一个 post-update钩子,以实现自动部署。

执行以下命令

1
2
3
4
5
mkdir /var/repo
mkdir /var/www/hexo
cd /var/repo #转到git仓库的文件夹
sudo git init --bare blog.git #创建一个名叫blog的仓库
sudo vim /var/repo/blog.git/hooks/post-update

post-update 的内容如下:

1
2
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

post-update进行授权

1
chmod +x post-update

4、设置容器 root 用户密码
由于这是一个全新的 Ubuntu 容器,默认的 root用户没有密码,建议你设置一个密码以便后续通过 SSH 管理。

1
passwd

本地环境搭建

1、进入博客的根目录下打开_config.yml 将deploy改成以下信息 hexoserver。对应的是服务器的ip地址

1
2
3
4
deploy:
type: git
repository: hexoserver:/var/repo/blog.git
branch: master

2、执行以下命令进行将本地推送到服务器上

1
2
3
npx hexo cl
npx hexo g
npx hexo d

配置 Nginx 服务器

在容器内安装 Nginx 后,需要将其配置为 Hexo 静态网站的服务端。

1、安装 Nginx(如果尚未安装)

1
apt-get update && apt-get install -y nginx

2、编辑 Nginx 主配置文件

我们将修改 Nginx 配置文件,使其监听 4000 端口并将根目录指向 Hexo 生成的静态文件。

1
vim /etc/nginx/nginx.conf

3、在 http块内添加 server 配置

找到配置文件的 http { … }部分,在结尾的 include指令之前,添加以下 server 块:

1
2
3
4
5
6
7
8
9
10
11
12
13
  # Hexo 博客站点配置 - 监听 4000 端口
server {
listen 4000 default_server;
listen [::]:4000 default_server;
server_name _;
root /var/www/hexo;

index index.html index.htm;

location / {
try_files $uri $uri/ =404;
}
}

4、完整配置文件示例(供参考)

以下是一个简洁的、包含 Hexo 站点配置的 nginx.conf示例:

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
37
38
39
40
41
42
43
44
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
worker_connections 768;
}

http {
# 基础设置
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# 日志设置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

# Gzip 压缩
gzip on;

# Hexo 博客站点配置
server {
listen 4000 default_server;
listen [::]:4000 default_server;
server_name _;
root /var/www/hexo;

index index.html index.htm;

location / {
try_files $uri $uri/ =404;
}
}

# 包含其他配置文件
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

5、测试配置并重启 Nginx

1
2
3
4
5
6
7
8
9
10
# 检查配置文件语法是否正确
nginx -t

# 如果显示 "syntax is ok",则重新加载 Nginx
nginx -s reload

# 如果 Nginx 未运行,则启动它
# systemctl start nginx # 如果使用 systemd
# 或直接运行
# nginx

6、验证部署
打开浏览器,访问IP:4000,应该能看到 Hexo 博客的首页。