使用sftp方式上传hexo网站到ubuntu

昨天今天弄了一晚上,总算搞定,今天把过程给大家说一下。

博主本人原来的博客使用wordpress搭建,使用为知笔记编写,通过发布插件发布到wordpress。最近发现wordpress字体渲染异常缓慢而且体积量太大,所以萌生了换一个博客框架的想法。hexo以前就接触过。所以就在网上搜索了一些相关教程,开搞..

关于从wordpress把以前的博客导出到新的hexo网站的就不提了。只是博主在使用hexo-migrator-wordpress工具转换从wordpress转换markdown文件的时候报错。

wordpress hexo undefined migrator plugin is not installed. 

百度、google了一圈才发现是工具有问题,解决方案直接使用npm从hexo-migrator-wordpressgithub安装:

1
npm install https://github.com/hexojs/hexo-migrator-wordpress.git --save

再次运行转换工具即可

对于生成的md文件,博主检查后发现,因为以前使用wordpress的代码高亮使得md文件中各种乱七八糟的html标签。要是一一手工删除,那是要累死的节奏。博主是做Android开发的。正好以前用过去除文本中html标签又恰逢正在学习kotlin,用idea写了一段kotlin代码批量去除。之后内容就清爽了许多。然后md文件中的代码加了一下高亮标签,对各种图片调整了下布局。准备工作完成。

生成了一下文档hexo d,又本地运行了一遍hexo s,查看了下效果。嗯,还不错!

下一步,就是要上传到我的网站上了。这时候网上的教程就帮不上忙了。因为我要上传到自己的ubuntu服务器。而网上都教程都是以上传到github为目的的。这时候只能去hexo的官方查文档了。在https://hexo.io/docs/deployment.html这里列举了所有的发布方案。找到了适用于我的服务器的sftp发布方案。有办法就好办了。

  1. 下载插件
1
npm install hexo-deployer-sftp --save
  1. 在ubuntu服务器上创建目录

  2. 使用ssh-keygen生成公钥与私钥,并添加公钥到ubutnu

生成方式其它教程都有就不再详细说,提交公钥的时候与github不同的是:github有指定位置填写公钥的字符串,而ubuntu服务器需要手动配置,放置到/{user_home}/.ssh/目录下authorized_keys这个文件中。注意这个.ssh目录与你使用的用户名要相匹配。例如我使用的是root账户,那我的路径应该是/root/.ssh/。如果没有这个目录,请使用你的当前账户执行

1
ssh-keygen -t rsa

生成此路径,如果没有authorized_keys这个文件,手动新建此文件亦可。然后将本机生成的id_rsa.pub中的文本复制到此文件中。

  1. 配置_config.yml,deploy节点如下:
1
2
3
4
5
6
7
deploy:
type: sftp
host: 23.xxx.xxx.112 #ip地址
user: root #用户名
port: 27452 #端口号
remotePath: /var/www/blog
privateKey: C:/Users/lin/.ssh/id_rsa #指定私钥路径

此时使用hexo d即可发布到远程的ubuntu服务器中了。

配置deploy节点的时候有些需要注意的地方,privateKey需要填入的路径必须是反斜杠。
还有如果在发布的出现

hexo No such directory /var/www/blog/categories

这样的提示注意清空一下你的remotePath文件夹下的文件。

另外deploy不仅可以使用加入公钥的方式。也可以使用用户名匹配密码的方式,配置如下:

1
2
3
4
5
6
7
deploy:
type: sftp
host: 23.xxx.xxx.112 #ip地址
user: root #用户名
pass: xxxxxxxxxx #密码
port: 27452 #端口号
remotePath: /var/www/blog

好了,今天就到这里。