如何配置hexo的deploy同时发布到GitHub和rsync
配置
deploy
快速发布,免去手动上传的烦恼。配置多个
deploy
同时发布,作镜像备份。
配置deploy到GitHub
新建一个仓库
- 登录到GitHub页面,没有账号的话就注册一个。点击加号新建一个仓库
仓库名称按你自己喜欢填,如果你想访问的时候不带子目录的话,这里仓库名称应设置为 username.github.io
,将 username
替换成你的 github
用户名。然后其他保持默认,点绿色的按钮创建。
- 将刚刚创建的
仓库
的HTTPS地址
复制下来并保存。
hexo配置
安装
deploy
插件1
npm install hexo-deployer-git --save
打开
hexo
项目根目录,打开并编辑_config.yml
文件请直接找到的底部,填入如下几个信息,注意缩进保持一致!
1
2
3
4
5deploy:
- type: git #类型
repo: https://github.com/sevth-developer/sevth-developer.github.io.git #仓库地址,即刚刚复制的那个链接
branch: master #默认分支,写一样就好
message: 'update article' #默认提交信息,自己随意写输入命令
hexo g -d
提交一次,不出意外的话,系统会弹出提示框让你输入github
的账号密码,记得点保存。如果没有提示,那么检查系统内git
是否安装。(文末附windows版下载地址,其他系统请用命令行安装)如果发布成功,命令行最后应该会显示
deploy git done
字样。进入
github
仓库检查是否有数据。
配置 GitHub page
进入仓库页面,点击顶栏的
Settings
按钮进入仓库设置。页面往下拉找到
github page
选项一般配置的如果是这种域名仓库的形式,会自动打开这个配置选项。如果没有打开,手动打开一下就行了。
自定义域名设置
如果你有自己的域名,可以在
Custom domain
里面填入自己的域名。github
将在你的页面仓库根目录创建一个CNAME
文件,你可以将这个文件下载下来,或者参照里面的内容自己写一个。在你自己的 域名DNS提供商,创建一条
cname
记录,指向地址为<user>.github.io
(你的仓库github page域名)等待解析生效,即可使用自定义域名访问。
如何避免每次发布时
CNAME
文件丢失- 将
CNAME
放到对应主题目录下的source
文件夹内。
这样每次
hexo
解析的时候都会将CNMAE
文件带上,deploy
也不成问题了。安装 插件
1
npm install hexo-generator-cname --save
之后在
_config.yml
文件中Plugins
添加一条记录:1
2Plugins:
- hexo-generator-cnameTips: 记得在配置文件中设置一下网站的
url
,否则生成的文件域名可能有误,导致无法使用自定义域名访问。
配置deploy到rsync
服务器配置
安装rsync服务
1
sudo apt-get install rsync
编辑配置文件 (根据别人博客上的参考,hexo集成的rsync仅仅是使用了ssh底层传输)
1
sudo vim /etc/rsymcd.conf
配置文件输入如下内容:
1
2
3
4
5
6
7
8uid = nobody
gid = nobody
port = 873 #不会使用到这个端口号,防火墙可以屏蔽它
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log启动服务
1
sudo rsync --daemon
hexo配置
安装集成插件
1
npm install hexo-deployer-rsync --save
编辑
_config.yml
配置文件,填入如下类似信息:1
2
3
4
5
6
7
8
9deploy:
type: rsync
host: 服务器host
user: ssh用户名
root: 你的站点根目录
port: 22 #ssh端口号
delete: true #发布时是否删除旧文件
verbose: true #发布时显示详细的信息
ignore_errors: false #发布时忽略错误测试一下,使用
hexo d
看看是否能够发布成功。
使用SSH公钥,免输入密码
服务器配置秘钥连接
SSH
参考 参考阅读将能够正确连接
SSH
的秘钥写入系统默认配置中。默认系统秘钥文件地址在~/.ssh/id_rsa
你可以手动复制秘钥内容至该文件内,或者使用如下方式:
1
2cat /path/to/private_rsa > ~/.ssh/id_rsa #将前面修改为你自己的秘钥文件保存地址,该操作将覆盖id_rsa文件内容,如果你在此步骤之前已经存在该文件,请注意备份保存
chmod go-rwx ~/.ssh/id_rsa #设置权限好了,全部配置完成后,你可以试验一下看看是否正常。
修改 hexo
的 deploy
插件,自定义秘钥文件位置
进入
hexo
项目根目录,找到deployer.js
文件 (文件位于node_modules/hexo-deployer-rsync/lib/deployer.js
)修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18... 省略其他代码
if (!Object.prototype.hasOwnProperty.call(args, 'delete')) args.delete = true;
if (!Object.prototype.hasOwnProperty.call(args, 'verbose')) args.verbose = true;
if (!Object.prototype.hasOwnProperty.call(args, 'ignore_errors')) args.ignore_errors = false;
if (!Object.prototype.hasOwnProperty.call(args, 'key')) args.key = false; //加入此条代码
... 省略一段代码
if (args.port && args.port > 0 && args.port < 65536) {
params.splice(params.length - 2, 0, '-e');
if (args.key) { //添加的代码
params.splice(params.length - 2, 0, `ssh -p ${args.port} -i ${args.key}`);
} else {
params.splice(params.length - 2, 0, 'ssh -p ' + args.port);
}
}
... 省略之后代码在项目的配置文件
deploy
添加一项key
后面填写私钥地址,如下:1
2
3
4
5
6
7
8
9
10deploy:
- type: rsync
host: ip
user: user
root: path
port: 22
delete: true/false
verbose: true/false
ignore_errors: true/false
key: ~/.ssh/web_rsa
Tips: 生成秘钥对的时候,不要输入私钥密码。可能会直接失败或者每次都要求输入密码。
配置同时发布
编辑 _config.yml
文件,按照如下格式填写:
1 | deploy: |
测试一下。
附件下载
参考阅读
- 本文标题:如何配置hexo的deploy同时发布到GitHub和rsync
- 本文作者:sevth
- 本文链接:https://sevth.com/technology/website/如何配置hexo的deploy同时发布到GitHub和rsync.html
- 发布日期:2020-04-16
- 最后更新:2020-05-04
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!