使用 Hexo 搭建个人博客并部署到云服务器

使用 Hexo 搭建个人博客并部署到云服务器

服务器必须先安装git、hexo、nginx哈

1、服务器创建一个名为git的账户

# 创建git用户
adduser git

# 修改git用户的权限
chmod 740 /etc/sudoers

# 进入 sudo 命令文件
vim /etc/sudoers

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

image-20260328215134940

然后给权限

# 修改文件权限
chmod 400 /etc/sudoers

设置一下git账号的密码

# 设置 git 用户的密码
sudo passwd git

在git账户下

cd ~
git init --bare hexo.git

配置钩子文件,注意这里也是git账户下的哈.路径:sudo vim /home/git/hexo.git/hooks/post-receive

#!/bin/bash
{
echo "[$(date '+%F %T')] Deploy start"

# 强制删除旧文件(确保不会被权限锁死)
sudo -u git rm -rf /data/hexo/*

# Checkout 最新文件
git --work-tree=/data/hexo --git-dir=/home/git/hexo.git checkout -f HEAD

echo "[$(date '+%F %T')] Deploy end"
} >> /home/git/hexo.git/deploy.log 2>&1

给其权限

sudo setfacl -R -m u:git:rwx /data/hexo && sudo setfacl -d -m u:git:rwx /data/hexo

这里的/data/hexo就是后面生成文件的地方.

给钩子文件的执行权限

# 给 post-receive 钩子添加可执行权限
chmod +x post-receive

# 可选:查看权限确认
ls -l post-receive
# 正确的话应该看到类似 -rwxr-xr-x

2、确认hexo博客的配置正确

deploy:
type: git
repo: git@192.168.10.101:/home/git/hexo.git
branch: master
  • 路径必须和服务器 bare 仓库一致

然后本地的话执行一下

ssh-copy-id zxzlimitx@192.168.10.101

将其公钥复制到本地,避免每次都输入密码

本地推送验证

hexo clean && hexo g && hexo d

本地推送的话,远程就能接受到啦,然后对应会在/data/hexo生成相应文件啦.

如果有意外就看看钩子的日志

cat /home/git/hexo.git/deploy.log

然后就是nginx静态网站部署啦.

进入sudo vim /etc/nginx/sites-available/default编辑一个新的文件,或者就这个就可以,然后输入

server {
listen 8123;
listen [::]:8123;

root /data/hexo/public; # 指向生成目录
index index.html;

location / {
try_files $uri $uri/ /index.html;
}
}

给其对应权限

sudo chown -R www-data:www-data /data/hexo

重启nginx,登陆对应ip+端口即可访问

sudo systemctl restart nginx

这次我是迁移到我的本地服务器上面啦,需要先配置waline评论系统,这里就要注意一下

先是hexo当中的waline要改一下配置,在next主题下的config,改一下ip+端口就OK,这个端口是博客服务的端口

waline:
enable: true
serverURL: https://ip:8360/
pageview: true
pageSize: 10
meta: ['nick', 'mail', 'link']
requiredMeta: []
locale:
placeholder: 欢迎留言~
emoji:
- https://unpkg.com/@waline/emojis@1.1.0/weibo
- https://unpkg.com/@waline/emojis@1.1.0/bilibili

然后是docker-compose对应改一下


version: '3'

services:
waline:
container_name: waline
image: lizheming/waline:latest
restart: always
ports:
- 8360:8360
volumes:
- ${PWD}/data:/app/data
environment:
#数据库配置
MYSQL_HOST: '192.168.10.213'
MYSQL_PORT: '3306'
MYSQL_DB: 'waline'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '121313213'
MYSQL_PREFIX: 'wl_'
MYSQL_CHARSET: 'utf8mb4'
MYSQL_SSL: 'false'
TZ: Asia/Shanghai
#改一下MySQL连接地址、端口号、数据库、密码就行了,当开启SSL是MYSQL_SSL: 'false'这个要变,其他默认即可


# 站点与权限配置
SITE_URL: 'http://127.0.0.1:8360'
SITE_NAME: 'zxzlimitx'
SENDER_NAME: 'zxzlimitx'
SECURE_DOMAINS: '127.0.0.1,localhost,127.0.0.1:2313'
LEVELS: '0,10,20,50,100,200' # 50+ 为管理员权限
#SECURE_DOMAINS最好也把服务器的ip添加进去用英文逗号隔开放后面,域名也要写好


# 新增评论权限配置
ALLOW_ANONYMOUS: 'true' # 允许匿名发布
REVIEW: 'false' # 关闭审核,直接发布
AKISMET_KEY: '' # 关闭反垃圾拦截(避免正常评论被误判)

SECURE_DOMAINS必须添加对应ip+端口,否则打不开的

这里具体就参考一下,waline那篇博客好了.