这篇博客记录了在linux系统下,安装hexo
及所需必要工具,并创建local博客,最终部署到远端如github的整个过程。
1. 安装必要工具
使用root权限
1 | $ root -s |
1.1 下载node.js (root)
下载node.js安装包到我的Applications目录,
解压并设置软连接
1 | $ tar -xvf node-v10.16.0-linux-x64.tar.xz |
检查是否安装好
1 | $ node -v |
若无误,进行下一步。
1.2 安装hexo (root)
使用npm安装hexo
1 | $ npm install -g hexo-cli |
如果终端提示平台不兼容,忽略它。可以转到nodejs
的bin
目录下,hexo
存在表示hexo
已经下载好了。
建立软连接,后检查。
1 | $ ln -s /home/YOURNAME/Applications/node-v10.16.0-linux-x64/bin/hexo /usr/local/bin/ |
当不能正常下载时,用cnpm
下载,先下载cnpm
:
1 | npm install -g cnpm --registry=https://registry.npm.taobao.org |
只需将npm
换为cnpm
若无误, 进行下一步。
2. 生成本地静态博客
初始化博客 (root)
在目录中新建一个存放所有blogs的目录, 并进入该目录,之后的所有操作都在其中。
1 | $ mkdir blogs |
第一次安装使用hexo需要初始化。初始化后该目录中回生成_config.yml, source 等文件。
开启本地服务。本地服务是用来显示blog的最终效果,并且可以及时修正。
1 | $ hexo init |
使用终端给出的端口登录,可以看到hexo为我们创建的默认博客: Hello World
。
当关闭本地端口后,用下面命令清理。尤其在页面显示不正常时
1 | $ hexo clean |
建立第一篇本地静态博客 (所有用户)
确保现在仍在blogs/目录中, 使用如下命令新建博客
1 | $ hexo new "My_first_blog" |
此时就可以在nvim(或vim)使用markdown写博客了
1 | $ nvim source/_post/My_first_blog.md |
当然可以转到My_first_blog.md
所在目录用其他编辑器写内容,但记得编辑结束后一定退回到blogs/目录。
确保仍在blogs/目录中,使用如下命令生成静态博客。
1 | $ hexo generate |
后开启本地服务。
1 | $ hexo server |
打开给出端口,可以显示所创建的静态博客。目前会有两篇博客: Hello World
和 My_first_blog
。到此为止,本地静态博客已经成功初始化,并创建了自己的第一篇博客。
静态博客只是便于检查,修改博客。我们的目的是要把博客部署到服务上。
3. 部署到github (root)
这部分假设你已经有github账户,本地已经安装github,并可以熟练使用github。
如果未安装,安装
1 | $ sudo apt-get install git-core |
3.1. 为静态博客新建repository
新建repository并命名。个人博客的repo名是有规定的:OWNER.github.io
,OWNER
一定是你的github账户名。点击create repository
。此时一个空的repo建好了。不要关闭此页面。
3.2. 本地安装git插件并配置 (root)
确保现在仍在blogs/目录中, 如下命令安装插件,并忽略warning
1 | $ npm install --save hexo-deployer-git |
在_config.yml
配置文件中添加第3.1步所建立空repo的信息。具体是在_config.yml
的文件尾的# Deplotment
下添加repo
和branch
两行。注意冒号后有一空格。
更多细节参考官方主页
1 | # Deployment |
其中https://github.com/OWNER/OWNER.github.io.git
是第3.1步空repo的地址。OWNER
是你的github账户名。
3.3. 部署本地静态博客 (root)
用下面命令执行部署(blogs/目录中)
1 | $ hexo deploy |
在终端提示处输入github
的username
和password
此时刷新第3.1步的页面,repo不再是空的了。
3.4. 访问
在浏览器输入OWNER.github.io
即可从远端访问。
可能无法马上访问,稍等,刷新页面即可。
4. 部署后对博客的修改或新建 (root)
确保仍在blogs/目录中,创建新的博客后生成对应的.md
文件。
对相应的.md
文件添加或修改内容。
后在本地检查。
1 | $ hexo server |
本地检查无误后生成并部署到github
1 | $ hexo generate |
或一条命令完成
1 | $ hexo generate --deploy |
5. 插入图片
- 修改配置文件
_config.yml
中post_asset_folder:
的值设置为true
。 - 回到blog/目录中,安装插件
cnpm install https://github.com/7ym0n/hexo-asset-image --save
。这个asset管理插件是没有bug的。 - 新建博客
hexo new "xxx"
。在/source/_posts
文件夹内会生成xxx.md
和同名的xxx文件夹
。 - 把在
xxx.md
中要引用的图片放到xxx文件夹
中。 - 在写博客过程中引入图片:
<div align=center><img src="xxx/resnet.png" width=500></div>
:在你的md编辑器中图片可以正常显示,但4000端口和github上不能显示。<div align=center><img src="resnet.png" width=500></div>
:相反的,md编辑器中不能显示,远端可以。
后者才是正确的引用。 - 回到blog/目录中,生成及部署
hexo g --d
。
6. 更改当前主题属性 (root)
以更改背景图片为例,保证当前目录为blog
目录,图片存在于blog下的blog/themes/landscape/source/css/images/
中,名为banner.jpg
,选择自己喜欢的图片命名为banner.jpg
并替换原来图片。在blog目录中开启服务hexo server
。在localhost就可以看到变化。
若果要更改主题其他参数,回到上一级目录即blog/themes/landscape/source/css/
编辑器打开目录中的_variables.styl
文件。内容类似:
1 | 35 // Header |
修改对应参数值,后刷新localhost,就可以看到及时变化。
最后,回到blog/目录,执行一下命令保证github远端也得到更新:
1 | $ hexo clean |
完成!
7. 添加“分类”和“tags” (root)
进入blog目录
在
source
中生成categories
文件夹:tags
是默认就含有的,不用添加。1
$ hexo new page categories
编辑
blog/source/categories
中index.md
。添加type: categories
于末行。保存并退出1
2
3
4
5---
title: categories
date: 2020-01-11 17:48:47
type: categories
---
给每一篇blog添加
categories
,如下。注意:hexo一篇文章只能属于一个分类,即如果在“- web前端”下方添加“-xxx”,hexo不会产生两个分类,而是把分类嵌套(即该文章属于 “- web前端”下的 “-xxx ”分类)。1
2
3
4
5
6
7
8---
title: Linux(ubuntu)下使用hexo创建静态博客并部署到github
date: 2019-07-28 12:36:32
tags:
- hahaha
categories:
- utility
---最终blog每一页都会出现
categories
,tags
和tag cloud
三个标签。
8. 修改页面显示博客数 (root)
获取
sudo
权限并安装hexo
的三个插件,archive的,tag的category的:1
2
3
4$ sudo -s
$ cnpm install hexo-generator-archive --save
$ cnpm install hexo-generator-tag --save
$ cnpm install hexo-generator-category --save在目录
/media/junhui/DATA/blog/
下,编辑_config.yml
,添加如下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15archive_generator:
enabled: true
per_page: 0
yearly: true
monthly: true
daily: false
order_by: -date
tag_generator:
per_page: 0
order_by: -date
category_generator:
per_page: 0
order_by: -date自定义对应的
per_page
数值。其中0
表示显示所有blog,就是说,不分页。
9. Trouble Shooting
- 如果需要更改blog文件明,直接在源文件中修改即可。
- 对于已有的blog文件,只需要将源文件和其图片文件夹复制到
blogs
目录下。 - 当生成及部署完毕后,远端不会马上生效,不慌张,稍等。