使用Hexo+GitHubPage+CodingMe搭建一个博客(已过时,博客介绍和前期工作可参考本篇,更新见新博文)
- 本人是Java后端开发,想找个地方记录一些有用有意思的东西,自己又比较喜欢搞事情,就在网上找到了这种利用静态文件搭建一个博客的方法。按照网上的教程自己也遇到了一些问题,所以希望文章能够帮助到一些人,如有错误之处请多多指教。
- 部分内容参考以下大佬博客
准备工作
安装 Node.js
作者主要是在Win10下办公,所以此处就介绍Win10下的安装方法。 页面中间就有下载按钮。下载之后按照向导一步步来即可。 安装完成之后检查PATH环境变量是否配置Node.js: 在CMD中运行返回安装的版本号说明安装成功!
1 | C:\Users\zm>node --version |
设置淘宝镜像
这里的淘宝不是那个淘宝:
淘宝 NPM 镜像:这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
官网上有详细的安装方式,这里就照搬一下。 > 使用说明: 你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
1 | $ npm install -g cnpm --registry=https://registry.npmmirror.com |
1 | alias cnpm="npm --registry=https://registry.npmmirror.com \ |
安装 Git
Git是用来做项目版本管理的,下载链接下载安装之后,以后的命令尽量在GitBash中输入。 如果不把源代码上传,那么后面自己用不到git命令,hexo deploy
命令会调用git上传到你配置的git仓库。但是如果自己有两台以上电脑,或者需要在本地两个地方存放的话(在配置网址时可能需要国内一个网站,国外一个网站,后面会说),就需要将博客的源代码上传git,保证各工作空间代码一致。
首先我们新建一个仓库如下: Repository name (仓库名称): BlogResources Description (描述,可填): MyBlogTest 可以选择为Public对所有人可见或者选择Private私有 勾选Initialize this repository with a README,生成一个描述文件 .gitignore是上传时的忽略文件,这个可以后面修改添加,不急 Add a license可以使用MIT License 创建完成之后先放着,后面再用。
###常用Git命令
这里可能就能用到这么多,还有有关分支、合并的一些操作这里就不展开。
1 | // 配置全局用户Name和E-mail |
安装 Hexo
搭建Hexo环境:
1 | npm install -g hexo-cli |
1 | hexo init <folder> |
这样就初始化完成了,以后所有的Hexo命令都在这里执行。_config.yml是站点配置文件,theme/下的_config.yml是主题的配置文件。 在路径下,命令行(即Git Bash)输入以下命令启动服务器:
1 | hexo server //或hexo s |
浏览器访问网址: http://localhost:4000/
至此你的最基本的博客在本地已经搭建好了。
开始搭建博客(其中Coding搭建参见新博文)
申请自己的域名(可选)、使用GithubPages+CodingPages搭建博客
1.在github上再新建一个仓库,仓库名为:<Github账号名称>.github.io
2.将本地Hexo博客推送到GithubPages 2.1 安装hexo-deployer-git插件。在命令行(即Git Bash)运行以下命令即可:
1 | npm install hexo-deployer-git --save |
2.2 添加SSH key 创建一个SSH key。在命令行(即Git Bash)输入以下命令, 回车三下即可:
1 | ssh-keygen -t rsa -C "邮箱地址" |
添加到Github。复制密钥文件内容(路径形如C:\Users\Administrator\.ssh\id_rsa.pub
),粘贴到Github网站Settings --> SSH and GPG keys --> New SSH Key即可。
测试是否添加成功。在命令行(即Git Bash)依次输入以下命令,返回“You’ve successfully authenticated”即成功:
1 | $ ssh -T [email protected] |
1 | # Deployment |
1 | $ hexo g |
https://<Github账号名称>.github.io
如果失败了,尝试把_config.yml中的repo即repository改为repository: https://github.com/zhaomin6666/zhaomin6666.github.io.git
,使用Https再次提交。这是会让你输账号密码,此处的密码在Settings --> Developer Settings --> Personal access tokens中生成。3.将本地Hexo博客推送到CodingPages (已过时,Coding已经使用新的模式部署静态页面) 和推送到Github差不多,都是使用托管平台的静态Pages。 3.1 创建Coding账号(腾讯云开发平台) 3.2 创建项目,项目名为:<项目名称>
3.3 进入项目里,左下角“项目设置”-->“功能开关”-->“持续部署” 开启 3.5 回到项目页面,点击 “持续部署”-->“静态网站” 中新建一个网站。名称随意取,勾选更新时自动部署,这样每次把静态文件推送到仓库的时候文件就会自动加载更新。点击确定,稍等片刻CodingPages即可部署成功。 3.4 将本地Hexo博客推送到CodingPages
推送成功之后,会自动生成一个访问地址:<用户名>.coding.me/<项目名称>
,点击这个地址就可以访问自己的博客了!
此时可能会发现在coding搭建的博客的js路径都是不对的,这时需要修改站点目录下的_config.yml。在使用GithubGages的时候# URL
这个标签是这样设置的:
1 | # URL |
1 | # URL |
4.申请域名 申请一个属于自己的域名应该不难,各大服务提供商的都有域名服务。申请完自己的域名之后需要做一下域名解析,也就是把你的域名指向你的博客网址。 比如我申请的域名为www.zm6666.top
,在做域名解析时配置说明如下: 主机记录:也就是你访问的网址,进行跳转。可以把www和@都做解析; 记录类型:因为Codeing已经为我们提供了可以访问的域名所以这里选择CNAME; 解析线路:选择默认即可; 记录值:填写生成的可以访问的地址https://3ycq0r.coding-pages.com
; TTL:默认5分钟即可。 做完了域名解析,在Coding静态页面的配置中也需要增加一下配置: 自定义域名:添加自己申请的域名。 此时,地址栏中敲入申请的域名,就可以成功访问博客了。当然站点目录下的_config.yml又要做修改了,修改网址为新的网址:
1 | # URL |
此时搭建好的博客就可以使用申请的域名访问并正确显示了。
主题优化(部分有更新,请参照新的博文)
选择主题
Hexo默认的主题为landscape,我这里使用的是Next(hexo-theme-next-master) 网上可以搜索到很多好看的主题。
hexo-theme-butterfly
界面预览:
hexo-theme-pure
界面预览:
hexo-theme-diaspora
界面预览:
更多的可以在github上搜一下:https://github.com/search?q=hexo-theme
具体主题优化
这里就把自己做的优化及遇到的问题列一下。以下文章中出现的站点配置文件就是主目录下的_config.yml
文件,主题配置文件新版本为_data/next.yml
文件,老版本为themes/next/_config.yml
文件。
注:新版本的next主体把主题框架的文件和个性化文件分来储存,也就是所有本来在themes/hexo-theme-next-master
文件夹的操作都需要移动到个性化文件夹下。在source
文件夹下新建_data
文件夹,里面拷贝一份themes/hexo-theme-next-master/_config.yml
文件并重命名为next.yml
。然后对于主题目录下_config
的修改就直接在自己的next.yml
中修改即可。 下面中有部分配置方式是老版本的,已经做了标注,其他未标注部分已经用最新版的配置方式。 新版本git地址为:https://github.com/theme-next/hexo-theme-next
中文翻译
编辑站点目录下的配置文件。设置languages
属性为zh-CN
。
1 | language: zh-CN |
languages
目录下的zh-CN
文件,现在需要在source/_data
文件夹下新建languages.yml
文件,配置如下:1 | zh-CN: |
选择Scheme
选择Next主题的外观样式。现在Next主题支持4中Scheme,在配置文件中可以看到:
1 | # --------------------------------------------------------------- |
设置菜单
next.yml
中找到menu
字段,菜单配置包括三个部分,第一是菜单项(名称和链接),第二是菜单项的显示文本,第三是菜单项对应的图标。
1 | menu: |
Hexo
站点目录下。使用hexo new page
新建页面:1 | #分类 |
1 | --- |
设置头像
next.yml
中找到avatar
字段,url中填入完整的地址。 (1)可以填入互联网地址,针对使用图床之类的用户。 (2)站内的相对地址。可以把图片保存在theme/next/source/images
目录下。
1 | # Sidebar Avatar |
侧边栏设置
next.yml
中找到sidebar
字段。 默认情况下,侧栏仅在文章页面(拥有目录列表)时才显示,并放置于左侧位置。 其中display
属性是用来设置侧边栏显示的时机。post
是指在在文章拥有目录时启用。
1 | sidebar: |
next.yml
中的social
字段配置。1 | social: |
定制样式
next.yml
中找到custom_file_path
字段。 这个字段下有很多个性化的文件可以自己配置。
1 | custom_file_path: |
source/_data/styles.styl
文件内容:
1 | // 隐藏 valine 的 powered by |
source/_data/footer.swig
文件内容:1 | {# 动态网站标题 #} |
1 | # 动态网站标题 |
文章末尾统一添加本文结束分割线 source/_data/post-body-end.swig
文件内容:
1 | {# 本文结束 #} |
底部信息
next.yml
中找到footer
字段。 icon
字段为那个图标,可以修改为动态的。 其他信息可以看情况自行修改。
1 | footer: |
菜单栏显示分类 / 标签中的文章数目
next.yml
中找到menu_settings
字段。
1 | menu_settings: |
文章目录
next.yml
中找到toc
字段。expand_all
可以设置是否全部展开。
1 | toc: |
添加mathjax
支持
next.yml
中找到math
字段,把enable
改为true。
1 | math: |
自定义网站图标(浏览器标签上显示)
next.yml
中找到favicon
字段,在EasyIcon上下载32*32的icon图标。可以使用本地目录,即保存在theme/next/source/images
目录下。
1 | favicon: |
显示当前浏览进度
next.yml
中找到back2top
字段,把scrollpercent
改为true。
1 | back2top: |
代码块复制功能
next.yml
中找到codeblock
字段。
1 | codeblock: |
添加背景图
在source/_data/style.styl
文件中添加:
1 | // 背景 |
注:以下为老版本设置方式 在 themes/*/source/css/_custom/custom.styl
中添加如下代码:
1 | body{ |
设置透明度
在source/_data/style.styl
文件中添加:
1 | //侧边框的透明度设置 |
修改Logo字体
注:以下为老版本设置方式 在 themes/*/source/css/_custom/custom.styl
中添加如下代码:
1 | @font-face { |
在路径themes\hexo-theme-next-master\source\fonts
下有个.gitkeep
文件,用记事本打开写入字体文件名称即可。
静态文件压缩
在站点目录下安装gulp
1 | npm install gulp -g |
gulp
插件:1 | npm install gulp-uglify --save |
Hexo
站点目录下新建gulpfile.js
文件,文件内容如下:1 | var gulp = require('gulp'); |
gulp.task
需要使用新版本的方式进行任务执行,根据报错自己做了些修改。在新增好文件之后,每次执行hexo g
之后执行gulp
就可以实现静态文件压缩,然后再执行hexo d
推送到仓库:
1 | hexo g |
gulp
的时候报can not find module 'xxx'
,一般是有插件没有安装,使用npm
或者cnpm
安装即可。如果是安装了很多还是无效,建议使用npm
重新装一下gulp
。修改访问URL路径
默认情况下生成的页面访问url是根据时间来的,即zm6666.top/2020/06/10/HexoGuide
。编辑Hexo
站点下的_config.yml
文件修改其中的permalink
字段为:
1 | permalink: :category/:title/ |
设置首页不显示全文(只显示预览)
新版本貌似没有这个属性了。。。 注:以下为老版本设置方式 编辑Hexo
站点下的_config.yml
文件修改其中的auto_excerpt
的enable
为true
。
1 | auto_excerpt: |
<!-- more -->
来控制折叠的地方。Valine评论系统
请先登录或注册 LeanCloud,进入控制台后点击创建应用。 创建好之后进入应用,在左侧“设置”-->“应用Keys”里面可以看到AppID和AppKey。 把这两项填写到next.yml
的valine
字段中即可。
性能优化
js,css使用cdn加速
对于一些插件的js引用cdn的js。在next.yml
里面的vendors
部分可以设置插件js,css的cdn地址,这里可以把注释中的cdn.jsdelivr.net
的地址复制到下面中使用。下面就举个例子:
1 | # Internal version: 5.13.0 |
百度收录
添加站点
登陆百度资源收录,注册登录之后添加站点。这个站点是就是自己网站的访问地址(在config.yml
中配置的url)。
验证站点
验证站点可以使用CNAME的方式验证,在自己申请的域名解析中新增一条解析。在验证站点的页面上百度会给你一个xxxxxx.zm6666.top
地址,把这个地址解析到ziyuan.baidu.com
然后点击验证即可。
资源提交
安装插件 cnpm install hexo-baidu-url-submit --save
点击资源提交——普通收录——资源提交——API提交。点击修改准入秘钥可以获得秘钥。按照下面的格式添加到config.yml
中:
1 | #baidu |
并且在config.yml
的最后deploy
中添加推送:
1 | deploy: |
TODO
添加萌萌哒 遇到就先写了:live2d和不蒜子统计不兼容问题,似乎无法解决,只能二选一,难受。
更新日期 2020年09月30日