建站过程
本文并非专业教程,请谨慎参考!
1. 博客本地部署
1.1. 安装 git
Git 客户端:
作用:把本地的 hexo 内容提交到 github
安装过程无脑下一步,出现下面的选项就是安装成功。
1.2. Node.js 环境安装
Hexo 是基于 node.js 编写的,所以需要安装一下 nodeJs 和里面的 npm 工具。
Windows:官网下载安装即可
Linux:
1 | # Debian/Ubuntu等系统 |
Mac OS:
1 | brew install npm |
安装完成后打开 cmd,输入
1 | node -v |
如果出现版本号代表安装成功
1.3. 安装 hexo
安装之前在电脑一个位置新建一个文件夹,进入文件夹右键点击 git bash here,
打开 hexo 官网复制下面的命令
1 | npm install hexo-cli -g |
1.4. 博客的目录结构
1 | . |
1.5. 博客内容更新
1 | hexo new [post] new_paper # 创建一篇新的文章,会在/source/_posts中生成new_paper.md |
浏览器中输入 http://localhost:4000
即可访问刚刚建好的博客,当然,现在这个博客是破破烂烂的,还需要下面进行添砖加瓦。
提示:在Bash窗口中Ctrl+鼠标单击该网站即可前往
1.6. 博客主题选择
默认的模板是 landscape
,看起来 low low 的,有必要自定义一个定制化的主题。官方的主题库中有不少精美的模板,可以根据喜好挑选一个。
2. 主题安装
2.1. 主题安装(建议参考主题自带的安装教程)
可以采用两种方式进行安装
注:以下方式可能并不适用于所有主题
1.npm(示例)
1 | npm install hexo-theme-redefine@latest |
2.git bash(示例)
1 | git clone git@github.com:blinkfox/hexo-theme-matery.git themes/matery |
2.1.1. 切换主题
修改 Hexo 根目录下的 _config.yml
的 theme
的值:theme: 你的主题名称
2.1.1.1. _config.yml 文件的其它修改建议:
- 请修改
_config.yml
的url
的值为你的网站主URL
(如:http://xxx.github.io
)。 - 建议修改两个
per_page
的分页条数值为6
的倍数,如:12
、18
等,这样文章列表在各个屏幕下都能较好的显示。 - 如果你是中文用户,则建议修改
language
的值为zh-CN
。
2.2. 主题目录的文件结构
1 | themes |
在主题文件的根目录下,也是有一份 _config.yml
文件,博客根目录下的 _config.yml
是全局配置,优先级较高,主题的配置文件是全局配置的补充。
2.3. 主题项配置
菜单栏中已有默认的页面有 Index
, Tags
, Categories
, Archives
, About
, Contact
, Friends
,但这些页面都是还没有被初始化的,需要手动初始化,当然你也可以自定义自己的页面
1 | hexo new page "categories" |
2.4. 图片上传
转换图片格式
使用 Convertio 将 jpg/png 格式的图片转换成 webp 格式。
另:也可以使用
ffmpeg
完成格式转换:1
ffmpeg -i input.jpg output.webp
转换格式的目的在于压缩图片大小,加快网站加载速度。
上传图片至图床
- 我使用的是 sm.ms 图床。
- 图片上传完成后需修改主题配置文件,将背景图片链接由本地路径改为图床提供的外链。
标签页图标和头像同理。
3. 博客插件安装
原生态的 hexo 功能比较少,需要安装一些插件才能更好地运行。安装插件的指令为
1 | npm install plugins-name --save |
其中 --save
会把依赖项添加进 package.json
文件中,新安装的插件源文件在 /node_modules/plugins-name
,插件安装其实就是下载了一套模板,这些模板大多是一些 js 文件。其运行机制就是在生成网站的静态文件时,会根据 /_config.yml
中设置的参数,生成对应的 js 文件,在指定的位置插入或替换这些 js 文件。
当你觉得这个插件满足不了你的功能时,可以直接到该插件的资源目录中修改其模板。
这里有一个官方的插件库,下面介绍几个比较有用的插件。其实有不少插件已经默认在选择的主题中安装了,譬如下面的 valine 的评论插件,已经有的插件就不用重复安装了。
3.1. 静态文件部署到远端 Git 服务器
deployer-git
可以在你使用 hexo d
指令时,自动把静态文件部署到 Git 服务器上。一般来说,只要你想要把你的博客发布到外网中,这个插件是必备,当然你也可以手动 git push
部署
1 | npm install hexo-deployer-git --save |
然后在 _config.yml
文件中修改
1 | deploy:type: git |
3.2. 站点地图生成
SEO 策略时需要用到的插件,生成网站的站点地图(sitemap),可以通过 sitemap 推送推送网站链接到搜索引擎中
1 | npm install hexo-generator-sitemap --save |
然后在 _config.yml
文件中添加
1 | sitemap:path: sitemap.xml |
然后就会生成 sitemap.xml
和 baidusitemap.xml
这两个站点地图。
3.3. 非中文链接生成
当我们使用中文生成文章的时候,例如 hexo new 测试
,生成 测试.md
文件,hexo d
命令后,生成 测试.html
文件,对应的访问地址就是 http://xxxx/.../测试.html
,这显然对搜索引擎不友好,这需要把中文地址自动转为数字或英文地址,当然这篇博文提到的方法可以参考一下。
这里也可以安装abbrlink插件来自动生成非中文链接
bash
1 | npm install hexo-abbrlink --save |
然后在 _config.yml
文件中添加
yaml
1 | abbrlink:alg: crc16 # 算法:crc16(default) and crc32rep: hex # 进制:dec(default) and hex: dec #输出进制:十进制和十六进制,默认为10进制。丨dec为十进制,hex为十六进制# permalink配置修改改为下面这个permalink: posts/:abbrlink.html |
3.4. 外部链接跳转
hexo-external-link是一个跳转外链相关插件。自动为所有 html 文件中外链的 a 标签生成对应的属性。 比如 设置 target=’_blank’, rel=’external nofollow noopener noreferrer’
告诉搜索引擎这是外部链接,不要将该链接计入权重。 同时自动生成外链跳转页面,默认在根目录下 go.html;
bash
1 | npm install hexo-external-link --save |
然后在 _config.yml
文件中添加
yaml
1 | hexo_external_link:enable: <strong>true</strong>enable_base64_encode: <strong>true</strong>url_param_name: 'u'html_file_name: 'go.html'target_blank: <strong>true</strong>link_rel: 'external nofollow noopener noreferrer'domain: 'your_domain' # 如果开启了防盗链safety_chain: <strong>true</strong> |
3.5. 文章搜索
generator-search插件可以提供博客的内容搜索
bash
1 | npm install hexo-generator-search --save |
然后在 _config.yml
文件中添加
bash
1 | search: |
3.6. 字数统计
wordcount插件可以统计文章中的字符,根据字数估算阅读时间。
bash
1 | npm install hexo-wordcount --save |
然后在 _config.yml
文件中添加
yaml
1 | post_wordcount:item_text: <strong>true</strong> # 是否显示“字数统计”及“阅读分钟”的文字wordcount: <strong>true</strong> # 是否显示字数统计min2read: <strong>true</strong> # 是否显示估算阅读分钟totalcount: <strong>true</strong> # 是否在网站底部显示所有文章字数之和separated_meta: <strong>true</strong> |
4. 博客发布
现在都还只是本地部署,要想通过外网访问,就得部署到远程的服务器上。
4.1. Git 环境配置
Git 是一个分布式版本控制系统,一般来说,本地仓库为客户端,远端仓库为服务端。
GitHub、gitee 等都是一些服务端 Git 代码托管平台。下面以 GitHub 为例,其他 gitee 等平台操作是差不多的,具体操作可以自行百度。
gitee 不能使用自定义域名(我不用的理由),github 百度爬虫不能爬取(但可以主动提交站点链接)
4.1.1. 注册账号
GitHub 官网按照指引创建一个账号。
4.1.2. 创建 ssh key
由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,可以通过密码的形式确认身份。如果不想每次连接时都要输入密码,可以通过公私钥鉴权的方式确认身份。
所以首先通过下面指令在本地创建一个 ssh key
1 | ssh-keygen -t rsa -C "your_email_address" |
然后一直回车即可。
指令操作成功后,会在用户文件夹(类 Unix 操作系统为 ~
,Windows 操作系统为 %HOMEPATH%
)下生成 .ssh
文件夹,其文件结构如下:
1 | .ssh |
Windows 中系统路径含义系统路径(不区分大小写)对应的绝对路径:
- 当前系统盘符:
C:
、%systemdrive%
、%HOMEDRIVE%
- 当前系统目录:
C:\WINDOWS
、%systemroot%
、%Windir%
- 当前用户文件夹:
C:\Administrator
、%UserProfile%
、%HOMEPATH%
- 所有用户文件夹:
C:\ProgramData
、%AllUsersProfile%
- 临时文件夹 1:
C:\WINDOWS\Temp
、%temp%
- 临时文件夹 2:
%SystemRoot%\TEMP
- 程序文件夹:
C:\Program Files
、%ProgramFiles%
- 程序快速启动设置文件夹:
C:\Administrator\AppData\Roaming
、%AppData%
4.1.3. 在 GitHub 中添加我们的公钥
打开 GitHub -> Account -> Settings -> SSH and GPG keys -> New SSH key -> Key 输入框中输入 id_rsa.pub
中的公钥,如果有多行,取一行就可以 -> Add SSH key -> 添加成功
4.1.4. 验证鉴权结果
本地输入以下指令
1 | ssh -T git@github.com |
如果出现 Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
,说明本地 Git 仓库和 GitHub 仓库已经成功通信
4.1.5. 个人用户设置
这一步是必要的,否则后面无法创建 GitHub page
1 | git config --global user.name "account" # 用户名称 |
4.2. 部署到远端服务器
下面还是以 GitHub 为例。
打开你的 GitHub,新建一个仓库,Repository name 命名为 xxx.github.io(xxx 是你 GitHub 账号,以免给自己后面添麻烦,一定要以这种格式命名,否则建好的博客根目录是 https://xxx.github.io/yyy,博客的排版会乱掉或者直接就是 404 了)。
这里一定要选 Public 自己的仓库,不然无法使用 github page
创建后,点击仓库的 setting—-pages,在 Build and deployment 中 Source 选择 deploy from a branch ,branch 中选择 main root ,这时候会发现提示需要在仓库中写一些东西才行。在 bash 中写入:
1 | echo "# ronghao" >> README.md |
这时在打开看见仓库里面有东西了,GitHub Pages 创建成功
你可以在新建仓库的 setting 的 GitHub Pages 一栏中看到 Your site is published at https://xxx.github.io/
信息时,说明你的博客主页已经成功开通了。
接下来就是 hexo g -d
(前提是 Git 环境和 hexo-deployer-git
插件已经配置好)把你的博客更新上传。
最后,浏览器中输入 https://xxx.github.io
即可访问你的博客了。