准备工作

  1. 安装 Node.js

点击Node官方下载链接下载LTS版 Node.js,并安装。如果npm安装速度过慢,可以参考国内镜像源配置

  1. 安装 Git

点击Git官方下载链接选择对应版本 git,下载并安装。

Github 设置

  1. 注册 Github 账号;
  2. 新建仓库,设置项目信息;
  3. 开启 Github Pages。

本地安装 Hexo 框架

  1. 选择一个合适的目录,新建一个文件夹,用于存放博客文件;
  2. 在该文件夹下打开 Windows Terminal;
  3. 输入下述命令安装 Hexo 框架:
1
npm i hexo-cli -g

安装完成后输入hexo v,若出现版本号则说明安装成功。

  1. 输入 hexo init 初始化该文件夹;
  2. 输入下述命令新建文章:
1
hexo new "hello world"
  1. 输入hexo g生成静态网页,再输入hexo s打开本地服务器,然后在浏览器中打开localhost:4000可以预览博客效果。

链接 Github 仓库

经过上述步骤,博客在本地已经搭建成功。如果需要将博客发布到 Github 上,则需要将本地的 Git 与 Github 仓库进行链接,

  1. 打开 Terminal,设置本地 Git 的用户名和邮箱:
1
2
git config --global user.name "GitHub用户名"
git config --global user.email "GitHub注册邮箱"
  1. 输入下述命令生成 ssh 密钥:
1
ssh-keygen -t rsa -C "GitHub注册邮箱"
  1. 在路径 C:\Users\agedcat\.ssh 下打开id_rsa.pub,复制里面的内容,将其添加到 Github 中的 SHH Key 中;

  2. 输入 ssh git@github.com 验证 Github 公钥是否设置成功。

发布网站

  1. 打开该文件夹下的站点配置文件 _config.yml,修改最后一行配置并保存:
1
2
3
4
deploy:
type: git
repository: https://github.com/agedcat/agedcat.github.io
branch: master
  1. 输入下述命令安装Git部署插件:
1
npm install hexo-deployer-git --save
  1. 输入下述命令发布博客到 Github 仓库:
1
2
3
hexo clean //清除缓存,若是网页正常情况下可以忽略这条命令
hexo g //生成静态网页
hexo d //部署

然后打开浏览器,输入博客网址 https://agedcat.github.io/,就能看到你发布的博客了。

云服务器部署

登录到vps,开始部署。

  • 安装git,并配置git用户:
1
2
3
4
5
6
7
8
9
10
11
12
# root用户
# 安装Git
apt install git

# 创建git用户
adduser git
passwd git

# 修改sudoers文件,将git加入sudo组
chmod 740 /etc/sudoers
echo "git ALL=(ALL) ALL" >> /etc/sudoers
chmod 400 /etc/sudoers
  • 配置SSH
1
2
# 修改ssh配置文件
vim /etc/ssh/sshd_config

sshd_config配置内容如下:

1
2
3
4
5
...
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
...
1
2
# 重启SSH
systemctl restart sshd.service
  • 配置git账号免密登录
1
2
3
4
5
6
7
# 配置git账号免密登录
su git
mkdir ~/.ssh
vi ~/.ssh/authorized_keys
## 复制本地ssh公钥到`~/.ssh/authorized_keys`文件中
chmod 600 ~/.ssh/authorized_keys

  • 创建git仓库并部署网站
1
2
3
4
5
6
7
8
9
# 创建git仓库和网站部署
su git
mkdir -p ~/Hexo
cd ~
## 默认是创建在home/git/目录下
git config --global init.defaultBranch master
git init --bare blog.git
chown git:git -R blog.git
vim blog.git/hooks/post-receive

post-receive配置内容如下:

1
git --work-tree=/home/git/Hexo --git-dir=/home/git/blog.git checkout -f
1
chmod +x /home/git/blog.git/hooks/post-receive
  • 修改本地Hexo的_Config.yml配置:
1
2
3
4
5
deploy:
type: git
repository:
git@你网站地址:/home/git/blog.git
branch: master #这个是服务器上的仓库的分支名,我的是main

本地执行:

1
Hexo clean && Hexo g && hexo d
  • 安装并配置nginx
1
2
3
apt install nginx
vim /etc/nginx/conf.d/hexo.conf
systemctl restart nginx

Nginx 配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 如果需要https则把注释打开
server {
listen 443 ssl;
server_name www.agedcat.com; #填写自己域名

ssl_certificate /home/ssl/agedcat.com.crt;
ssl_certificate_key /home/ssl/agedcat.com.key;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
ssl_stapling on;
ssl_stapling_verify on;

index index.html index.htm index.php;
root /home/git/Hexo; #站点目录
}

PS:
如果发生 error: RPC failed; curl 56 OpenSSL SSL_read: error:140943FC:SSL routines:ssl3_read_bytes:sslv3 alert bad record mac, errno 0 错误,输入下述命令:

1
2
git config --global http.sslVersion tlsv1.2
git config --global https.postBuffer = 1048576000

强制跳转配置

将域名 agedcat.com 强制跳转为 www.agedcat.com,Nginx 配置内容如下:

1
2
3
4
5
6
7
8
9
10
server {
listen 443 ssl;
server_name agedcat.com; #填写自己域名

ssl_certificate /home/lighthouse/cert/agedcat.com_nginx/agedcat.com_bundle.pem;
ssl_certificate_key /home/lighthouse/cert/agedcat.com_nginx/agedcat.com.key;

return 301 https://www.agedcat.com$request_uri;
}

参考资料