当前位置 : 首页 » 文章分类 :  开发  »  Hexo博客(02)生成博客并部署到GitHub

Hexo博客(02)生成博客并部署到GitHub


1、安装Git

Windows系统中,从Git官网https://git-scm.com/downloads 或 msysgit(Git for Windows) https://git-for-windows.github.io 下载并安装Git for Windows。安装后就有了Git Bash命令行工具。

2、安装Node.js

从Node.js官网https://nodejs.org/en/ 下载并安装Windows版。安装Node.js之后Git Bash中就有了npm命令。

npm设置代理(不需要可跳过)

由于公司上网需要挂代理,不设置npm代理无法下载hexo安装包,注意http代理和https代理都要设
Git Bash命令:
npm config set proxy=http://172.17.18.80:8080
npm config set https-proxy=http://172.17.18.80:8080
查看代理设置是否成功:
npm config get https-proxy


3、安装Hexo

Git Bash命令:
npm install -g hexo-cli
安装结束后提示:

npm WARN optional Skipping failed optional dependency /hexo-cli/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.1.2

原因是fsevent是在macOS下的依赖包,当前是64位win系统,因此只报warning信息,无影响。

升级Hexo版本

使用npm包管理工具来升级hexo版本:npm update hexo
例如:

MaSi@MaSi-Dell MINGW64 /d/git/madaimeng_backup (master)
$ npm update hexo
- jsonify@0.0.0 node_modules\jsonify
- nan@2.7.0 node_modules\nan
- dtrace-provider@0.8.5 node_modules\dtrace-provider
- bunyan@1.8.12 node_modules\bunyan
- json-stable-stringify@1.0.1 node_modules\json-stable-stringify
hexo-site@0.0.0 D:\git\madaimeng_backup
`-- hexo@3.4.4

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.1.3

升级后再次执行hexo g时,会自动将更新后的hexo版本号写入package.json文件。


4、初始化Hexo并安装依赖

建立一个存放Hexo文件的文件夹(如D:\Files\Hexo)
Git Bash进入此文件夹:
cd /d/Files/Hexo/
初始化Hexo:
hexo init
根据package.json安装依赖:
npm install
初始化完成后Hexo文件夹中的层次为:

.
├── _config.yml
├── package.json
├── scaffolds
├── source
|   ├── _drafts
|   └── _posts
└── themes
  • _config.yml:网站的 配置 信息,您可以在此配置大部分的参数。
  • package.json:应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。
  • scaffolds:模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。
  • source:资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件/文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
  • themes:主题 文件夹。Hexo 会根据主题来生成静态页面。

5、修改博客配置_config.yml

站点配置

# Site
title: masikkk's blog
subtitle:
description:
author: masikkk
language: zh-CN
timezone:

URL配置

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://masikkk.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

部署配置

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: ssh://git@github.com/masikkk/masikkk.github.io.git
  branch: master

配置问题

  • 注意:repo要使用ssh协议地址,否则部署出错。
  • 配置项冒号后要加一个空格,否则generate时会出错:
    $ hexo g
    FATAL end of the stream or a document separator is expected at line 11, column 9:
      timezone:
              ^
    YAMLException: end of the stream or a document separator is expected at line 11, column 9:
      timezone:
    

6、生成博客

生成博客,Git Bash:
hexo ghexo generate
此命令会将_posts文件夹下的.md文章根据配置的主题渲染为html静态网页,当然只有变动的文件会被重新渲染,渲染完成后拷贝到根目录的public文件夹中。

错误:TypeError: Cannot set property ‘lastIndex’ of undefined
hexo g生成博客时遇到错误:

TypeError: Cannot set property 'lastIndex' of undefined

刚开始上百度查,总是查不到点上,后来用了新出的搜狗英文搜索,一击命中。
解决方法是在配置文件_config.yml中将highlight选项的auto_detect设为false,完美解决。参考Hexo 3.2.0-beta.2 test result report #1627


7、本地预览

启动hexo本地服务器

$ hexo s
INFO  Start processing
INFO  Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.

在浏览器输入 http://localhost:4000/ 进行预览,回到Git Bash输入Ctrl+C关闭本地服务器退出预览。


8、部署

简单说一下部署到底是个什么操作,其实很简单,就是将第6步hexo g生成的public文件夹下的全部内容上传到远程仓库,就这么简单。public文件夹内都是生成的静态html页面和需要的资源,所以如果想在自主服务器的容器(比如jboss或tomcat)中部署,只需要将public文件夹下的全部内容拷贝到容器的部署目录中(比如tomcat的webapps目录)即可。

1、在_config.yml中添加部署配置

例如配置GitHub的Pages仓库:

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: ssh://git@github.com/masikkk/masikkk.github.io.git
  branch: master

2、安装Git部署器

Git Bash:npm install hexo-deployer-git --save
如果不安装相应的部署器,部署时提示:

$ hexo d
ERROR Deployer not found: git

3、部署到GitHub pages

Git Bash:hexo dhexo deploy

$ hexo d
INFO  Deploying: git
INFO  Clearing .deploy_git folder...
INFO  Copying files from public folder...
[master 6c43d52] Site updated: 2016-03-30 14:56:56
2 files changed, 2 insertions(+), 2 deletions(-)
Branch master set up to track remote branch master from ssh://git@github.com/masikkk/masikkk.github.io.git.
To ssh://git@github.com/masikkk/masikkk.github.io.git
   8a230a0..6c43d52  HEAD -> master
INFO  Deploy done: git

Git部署失败

出了一堆错误提示,核心的一句是:

fatal: could not read Username for 'https://github.com': Invalid argument

解决:当时使用git push已经可以成功向GitHub提交代码,但是hexo deploy还是出错,直到在_config.yml中将repo仓库地址改为ssh协议,才部署成功

部署后原来的CNAME文件被覆盖

解决:CNAME,README,404.html都可以放在Hexo/source文件夹下,hexo g生成博客时会被原封不动的拷贝到public文件夹中,部署后自然就到了项目的根目录。


参考


上一篇 SSH

下一篇 Hexo博客(01)GitHub Pages创建博客并绑定域名

阅读
1,498
阅读预计7分钟
创建日期 2016-03-22
修改日期 2018-01-08
类别
百度推荐