使用Hexo发布博客(Windows环境)

知识点

命令行

  • CMD

生成密钥

1
ssh-keygen -t rsa

CMD 设置 UTF8 编码

1
chcp 65001

服务端

配置文件

1
vi /etc/rsyncd.conf

看看端口

1
netstat -ntpl

如果没有 873 端口的话,就肯定是没安装 xinetd!

1
yum -y install xinetd rsync

启动

1
2
service xinetd restart
service rsyncd restart

就好了!

发布博客

安装 HEXO

1
npm install hexo-cli -g

配置文件

_config.yml

1
2
3
4
5
6
7
8
9
10
11
# Deployment
# Docs: https://hexo.io/docs/deployment.html
deploy:
type: rsync
host: 119.3.212.206
user: root
root: /data/myblog/
port: 22
delete: true
verbose: true
ignore_errors: false

发布

1
2
hexo g
hexo d

如果在 Linux 上或 Mac 上这样就成功了

Windows上通过子系统发布博客

如果服务端不想配置Rsync服务,也就是说要通过SSH认证上传文件,直接使用Windows下的客户端一直不成功,不知道是不是BUG,所以这里使用曲线救国的方式,在Windows子系统中来执行发布命令。

安装 Linux

Win10 先更新到新版本

控制面板=>程序=>启动或关闭 Windows 功能=>勾选适用于 Linux 的 Windows 子系统

下载地址

https://aka.ms/wslstore

注意通过上面的连接下载的为新版本20.04
也可以搜索Ubuntu 18.04 LTS下载旧版本
建议安装Ubuntu 18.04 LTS

安装 Ubuntu

报错

WslRegisterDistribution failed with error: 0x8007019e
The Windows Subsystem for Linux optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.

1.win+x,选择 Windows PowerShell(管理员) 2.输入:

1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

3.回车,输入 Y,重启! 4.重新打开已经安装的子系统,等几分钟,输入账户和密码。

安装后默认用 cmd 进入后输入 bash 即可进入

进入 Ubuntu

1
bash

切换为 root 用户

1
sudo su

安装 Node 和 NPM

更新 Ubuntu 软件源

1
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

安装 nodejs

1
sudo apt-get install -y nodejs

更新 npm 的包镜像源,方便快速下载

1
2
sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list

恢复

1
sudo npm config set registry https://registry.npmjs.org

解决下载慢问题

安装编译环境

1
2
sudo apt-get update
sudo apt-get install build-essential libssl-dev

设置 npm 镜像

1
npm config -g set registry https://registry.npm.taobao.org

Node 版本切换

注意

这个和 nvm 作用一样 安装其一就可以

全局安装 n 管理器(用于管理 nodejs 版本)

1
sudo npm install n -g

安装 nodejs12

1
sudo n 12

其它版本安装

1
2
3
sudo n latest
sudo n stable
sudo n lts

删除某个版本

1
sudo n rm 10.13.0

使用 n 切换版本(按上下键选择版本后,回车)

1
2
3
4
5
6
sudo n  # 回车后选择版本
node/10.13.0
ο node/10.15.3
node/11.0.0
node/11.8.0
node/12.2.0

查看安装的版本

1
2
sudo node -v
sudo npm -v

注意

不要安装新版,我安装的 14 就会导致生成页面全是空白。我这里推荐 12 版本。

安装 Rsync

系统一般自带,这步可跳过,没有再安装。

1
apt install rsync

测试 rsync 是否可用

进入项目后

1
cd /mnt/c/Users/Jian/Documents/project/myblog

发布

1
rsync -avz ./public/ root@110.110.110.110:/data/myblog/

安装 Hexo

安装 Hexo

1
npm install hexo-cli -g

部署

1
2
sudo hexo g
sudo hexo d

免密发布

Ubuntu 系统的路径

1
C:\Users\Jian\AppData\Local\Packages

里面找到类似于CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc这样的文件夹

.ssh 的目录在

1
C:\Users\Jian\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\root\.ssh

就可以把我们的公钥和私钥在这生成或者复制到这里

其他用户路径

1
C:\Users\Jian\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\psvmc\.ssh

还要设置文件的访问权限

1
chmod 700 ./*

这里不能给组和其它用户设置权限 否者也不行

Windows上直接发布博客

安装hexo

设置镜像

1
2
3
4
5
6
7
npm config set registry https://registry.npmmirror.com/
npm config set disturl https://npm.taobao.org/mirrors/node/
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set python_mirror https://npm.taobao.org/mirrors/python/
npm cache clean -f
npm config list

安装hexo

1
npm install hexo-cli -g

同步客户端配置

Windows客户端cwRsync

链接:https://pan.baidu.com/s/1UYohMerxywZ_1tYEUtA6Og
提取码:psvm

设置环境变量

1
D:\Program Files (x86)\cwRsync\bin

注意上面的最好放在%SYSTEMROOT%\System32\OpenSSH\后面

否则在使用ssh命令的时候查找的证书不是C:\Users\Administrator\.ssh

下载chown.exe放在客户端安装目录D:\Program Files (x86)\cwRsync\bin

创建认证文件

1
2
chmod -c 600 /cygdrive/d/auth.txt
chown administrator /cygdrive/d/auth.txt

注意

上面的执行要用管理员身份执行。

administrator改为实际的用户名

比如

chown DELL /cygdrive/d/auth.txt

测试

1
2
chmod -R 777 ./public
rsync -avz --delete --password-file=/cygdrive/d/auth.txt /cygdrive/d/Project/myblog/public/ zj@39.104.203.241::myblog

同步服务端配置

https://www.psvmc.cn/article/2022-11-21-rsync-config.html

博客发布脚本

SSH认证的方式不需要配置就能同步文件,在Linux和Linux之间完全没问题,但是从Windows向Linux同步文件就一直不成功。

这里就采用rsync-daemon 认证的方式来从从Windows向Linux同步文件。

fabu.bat

1
2
3
4
5
6
7
8
9
@echo off
call git add .
call git commit -m"Article Update"
call git pull
call git push
call hexo g
call chmod -R 777 ./public
call rsync -avz --delete --password-file=/cygdrive/d/auth.txt /cygdrive/d/Project/myblog/public/ zj@110.110.110.110::myblog
call del %cd%\public /s /q