本文将以Windows10环境来搭建hexo博客,并介绍hexo博客的相关设置以及优化。
部分linux命令请在git base里面执行。
环境搭建
安装git
默认安装,配置好默认的用户
$ git config --global user.name "you_name"
$ git config --global user.email you_email@example.com
安装node.js
默认安装即可
用zip安装时,配置两个环境变量:一个是PATH上增加node.exe的目录D:\nodejs,一个是增加环境变量NODE_PATH,值为D:\nodejs\node_modules。目录地址转换成你的。
安装Hexo
$ cd d:/hexo
$ npm install hexo-cli -g #安装全局环境
$ hexo init blog #你的博客环境
$ cd blog
$ npm install # NPM是随同NodeJS一起安装的包管理工具
$ hexo g # 或者hexo generate
$ hexo s # 或者hexo server,可以在http://localhost:4000 查看效果
如果由于管理员权限而失败,可以用win+x选择”命令提示符(管理员)“来操作
到这里你已经可以看到效果了http://localhost:4000。
GitHub配置
(1)新建一个仓库,名字要和你用户名一样,例如:you_name.github.io ,GitHub会自动识别这次仓库为pages
(2)配置ssh秘钥,私钥自行保存,公钥放GitHub上
$ ssh-keygen -t rsa -C "your_email@youremail.com" #或者下面这个
$ ssh-keygen -t rsa -f sample #文件名命名为sample
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
SSH 在push的时候,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的
目录文件C:\ Users\youname\.ssh\id_rsa.pub为你的公钥,id_rsa为私钥。公钥里面的内容复制到GitHub设置里。
然后配置~/.ssh/config文件,按照实际情况删减。
host github.com
# port 22
# compression yes
# hostname 192.168.0.1
user git
identityfile ~/.ssh/id_rsa
(3)初始化仓库,即是上传一个任意文件上去。新建完仓库后,GitHub上会有提示。
(4)部署到GitHub上
配置博客根目录的_config.yml文件,把GitHub仓库地址配置进去。
deploy:
type: git
repo: git@github.com:loongX/loongX.github.io.git
branch: master
这里要注意一下,yml文件以缩进来区分各个元素的,所以缩进要一致。
在部署到GitHub前先要安装一个hexo-deployer-git插件。
Hexo提供了hexo-deployer-git工具,可以帮助部署Hexo到很多平台。
$ npm install hexo-deployer-git --save
在blog文件夹里
$ hexo g
$ hexo d #部署到远程仓上。
这里会部署到GitHub上,打开你的pages网址可以看到内容了(类似这个loongX.github.io网址)。
这个部署上传的是public目录下的文件,public文件夹里面保存的是生成的静态文件。
Hexo 建设
目录结构
blog目录结构如下
.
├── _config.yml #配置文件
├── package.json #应用程序的信息
├── scaffolds #模版文件夹
├── source #资源文件夹是存放用户资源的地方
| ├── _drafts #草稿
| └── _posts #正文
└── themes #主题文件夹
基础命令
$ hexo generate # 简写:hexo g,生成静态文件,会在当前目录下生成一个public文件夹
$ hexo server # 简写:hexo s,启动本地服务,用于博客的预览
$ hexo deploy # 简写:hexo d,部署到远程(如GitHub,可以在_config.yml中配置)
$ hexo new post-name # 简写:hexo n post-name, 新建文章
$ hexo new page page-name # 简写:hexo n page page-name,新建页面
$ hexo d -g # 生成和部署
$ hexo s -g # 生成和预览
$ hexo new draft <title> # 新建草稿,存放在source/_drafts
$ hexo publish post <title> # 发布草稿为文章,文章转移到source/_posts
$ hexo s -g --drafts # 显示草稿
$ hexo new page tags # 使用 Hexo 命令新建一个名为 tags 的页面
更换主题
$ hexo clean
$ git clone https://github.com/MOxFIVE/hexo-theme-yelee.git themes/yelee
然后修改Hexo目录下的_config.yml
配置文件中的theme属性,将其设置为yelee。
添加插件
RSS 对应插件——feed插件https://github.com/hexojs/hexo-generator-feed
Sitemap for SEO 站点地图通用插件: hexo-generator-seo-friendly-sitemap
百度专用Sitemap: hexo-generator-baidu-sitemap
添加插件添加sitemap和feed插件
$ npm install hexo-generator-feed
$ npm install hexo-generator-sitemap
$ npm install hexo-generator-baidu-sitemap@0.1.1 --save
修改_config.yml,增加以下内容
Plugins:
- hexo-generator-feed
- hexo-generator-sitemap
- hexo-generator-baidu-sitemap
#Feed Atom
feed:
type: atom
path: atom.xml
limit: 20
hub:
content:
content_limit: 140
content_limit_delim: ' '
#通用sitemap
sitemap:
path: sitemap.xml
#百度爬虫
baidusitemap:
path: baidusitemap.xml
配完之后,就可以访问http://loongx.github.io/atom.xml
和http://loongx.github.io/sitemap.xml
,发现这两个文件已经成功生成了。
绑定独立域名
先购买域名:
在你的域名注册提供商那里配置DNS解析
你可以解析到ip也可也解析到域名
CNAME --- www ---默认线路---loongx.githut.io
CNAME----@----默认线路 -----loongx.githut.io
进入source目录下,添加CNAME文件
$ cd source/
$ touch CNAME
$ echo "okloong.com" >> CNAME # 输入你的域名
如果你按照下面步骤做了,在coding上也同样做了一个pages的话,你可以把国内的访问引向coding,国外的访问引向GitHub。
CNAME --- www ---默认线路---okayloong.coding.me
CNAME----@----默认线路 -----okayloong.coding.me
CNAME --- www ---海外线路---loongx.githut.io
CNAME----@----海外线路 -----loongx.githut.io
写博客
hexo写博客是用markdown语法来写的,用具有markdown功能的软件会比较方便些,我这里用的是Typora,简单好用。
Yelee主题配置
大部分设置只要在主题下的_config.yml文件里配置就可以了,里面的注释说得很清楚了,官方文档也说得很详细。下面说一些特殊的。
标签、分类以及我的页面设置
1.标签云设置:
使用 Hexo 命令新建一个名为 tags 的页面即可
hexo new page tags
2.关于我页面
使用 Hexo 命令新建一个名为 about 的页面即可
hexo new page about
该页面内容在文件 \hexo\source\about\index.md 中修改
然后,将上面两个在下面配置中建立链接关系。
menu:
主页: /
所有文章: /archives/
标签云: /tags/
关于我: /about/
注意:
上面标签云设置,已经包含了tags和cataloges了,
如果你在使用hexo new page catalages创建一个catalages分类,会和about页面一样,只显示一个网页。12
写新的Blog
将\freeshow.github.io\scaffolds
下的post.md模板文件修改为如下:
---
title: {{ title }}
date: {{ date }}
tags:
categories:
---
当写文件时,就可以填写所属tags或categories了。
但是,tags和categories都会显示在 标签云
中.
Coding设置
Coding像GitHub一样也提供pages功能,配置方法和GitHub配置差不多。这里用Coding是因为,GitHub在国内访问是比较慢的,Coding在国内访问就比较快一点,而且也方便百度搜索引擎抓取。在设置dns时候,把国内访问的流量引向Coding上,国外线访问就引向GitHub上,这样就比较合理一点。
配置ssh秘钥
按照上面的给GitHub配置ssh秘钥的步骤同样给coding平台布置即可。
建立coding-pages
下面是创建一个「项目 Pages」的操作示例:
这里另外找一个test文件夹来测试就好了。
1.登录 Coding.net,创建一个项目,项目名称为:user_name.coding.me
2.在本地创建一个项目文件夹,添加一个测试用的 index.html 文件。
<html>
<head>
<title>My Coding Pages</title>
</head>
<body>
<h1>Hello Coding!</h1>
</body>
</html>
3.将项目文件夹初始化为 Git 版本库,提交 index.html 到版本库,并为项目添加远程仓库地址。
git init
git add index.html
git commit -m 'init'
git remote add origin git@git.coding.net:{user_name}/{project_name}
请别忘记将上面代码中的远程仓库地址的 {user_name} 和 {project _name} 替换成你自己的个性后缀(Global Key)和项目地址。
4.在本地创建一个 coding-pages
分支,切换到该分支。
git checkout -b coding-pages
5.将 coding-pages 分支推送到 Coding.net。
git push origin coding-pages
6.在项目的「Pages 服务」设置中,选择部署来源为 coding-pages
分支,点击「保存」按钮。 稍等片刻即可完成部署并通过 {user_name}.coding.me/{project_name}
访问你的网站.
部署博客
在你的博客目录
在你博客根目录下的_config.yml文件里配置
deploy:
type: git
repo:
github: git@github.com:loongX/loongX.github.io.git,master
coding: git@git.coding.net:OkayLoong/Okayloong.coding.me.git,coding-pages
部署到平台上:
hexo d -g
自定义域名
coding的普通用户不能自定域名,也就是说你刚刚注册到的账户是没有这个功能的,你需要补充完资料,升级账户才能用。升级账户后,在“pages服务”里添加进你的域名进去,并配置好dns解析就好了。
Hexo多电脑同步的方法
一般思路是,创建两个仓库,一个用来保存hexo源码,一个是用来保存生成的博客文件。为了源码的安全建议是把源码保存在一个私有仓内。这里我采用coding建立私有库。码云也提供私有库功能,方法类似。
说下这个两个仓库的结构:
Hexo-blog分支 – 用来保存所有Hexo的源文件
master分支 – 用来保存Hexo生成的博客文件
创建私有仓库
在coding平台上创建一个私有项目,名称为Hexo-blog,并初始化仓库(按照上面的要求上传一个任意文件上去,否则后面的操作会报错)。
上传时候需要把主题里面的.git文件夹删掉,要不然上传到私有库时候会漏掉主题部分的代码的。
但这个有个问题,你删后,原来主题的有更新就得不到及时更新了。
rm -fr ./themes/yelee/.git/ #删除主题里面的git
git init #建立本地的git仓库
git remote add origin git@git.coding.net:OkayLoong/hexo-blog.git #添加远程仓,注意要添加ssh秘钥
git add .
git commit -m "my first private hexo"
git push -u origin master
但是如果你的主题改动比较大,更新反而很多冲突,那自己维护也行。不过这里有个取巧的办法。
主题刚下载还没同步到私有仓时候,把主题里面的.git文件夹删除掉,同步一下私有仓,然后撤销删除,把主题里面的.git文件夹还原回来。这时候,你两边的仓库都能更新了。
上传私有仓
git status #这个只是查看状态,可以不写
git add . #把整个文件夹添加进去
git commit -m "update" #git规定一定要写,要不然上传不了
git push origin master #简写 git push
可以将上面的代码保存为deploy.sh,这样就不用每次都敲了。但注意不要用中文名。其实其他命令你也可以写成脚本来运行,比如拉取源码、更新博等。
拉取私有仓回本地
一般git pull
就够了,但是如果有冲突可以按照下面的方式来解决,以远程仓库为标准代码覆盖原来的。
git fetch --all #将git上所有文件拉取到本地
git reset --hard origin/master #强制将本地内容指向刚刚同步git云端内容
这个评论系统怎么做的?