一直都很想搭一个自己的博客, 但一直很忙(其实是懒)没弄, 最近终于搭建好了, 过程中也遇到了一些问题, 写个流水账记录下.
准备工作
- 一个github账号
- 安装了
node.js
,npm
,git
(mac用户的安装xcode就已经装好git了)
搭建github博客
创建仓库
新建一个用户名.github.io
的仓库, 用户名必须为你的github用户名. 比如我的用户名为soober, 那么需要创建soober.github.io
的仓库.
配置SSH key
提交代码需要拥有你的github权限, 使用ssh key来解决本地和服务器的连接问题
用git bash(mac用户, 用终端即可)执行如下命令:1
cd ~/. ssh
1 | ssh-keygen -t rsa -C "邮件地址" |
一路回车(密码可以不用输入,直接回车)最终会生成一个文件在用户目录下,找到.ssh\id_rsa.pub文件,复制里面的内容,打开你的github主页,进入个人设置 -> SSH and GPG keys -> New SSH key, 将复制的内容粘贴到key那里,title自己写一个,保存。
- 测试SSH配置是否成功
1
$ ssh -T git@github.com
如果看到以下信息,说明配置成功
Hexo框架搭建
Hexo是一个简单、快速、强大的基于 Github Pages 的博客发布工具,支持Markdown格式,有众多优秀插件和主题。
由于github pages存放的都是静态文件,博客存放的不只是文章内容,还有文章列表、分类、标签、翻页等动态内容,假如每次写完一篇文章都要手动更新博文目录和相关链接信息,相信谁都会疯掉,所以hexo所做的就是将这些md文件都放在本地,每次写完文章后调用写好的命令来批量完成相关页面的生成,然后再将有改动的页面提交到github。
[官网] (http://hexo.io)
[github] (https://github.com/hexojs/hexo)
安装
1 | $ npm install -g hexo |
初始化
选择博客存储位置, 创建hexo文件夹,然后初始化1
2$ cd hexo
$ hexo init
hexo会自动下载一些文件到这个目录,包括node_modules,目录结构如下图:
其中, _config.yml
这里面都是一些全局配置,每个参数的意思都比较简单明了,就不作详细介绍了。
需要特别注意的地方是,冒号后面必须有一个空格,否则可能会出问题。
接着生成和启动hexo服务1
2$ hexo g # 生成
$ hexo s # 启动服务
执行以上命令之后,hexo就会在public文件夹生成相关html文件,这些文件将来都是要提交到github去的:
hexo s
是开启本地预览服务,打开浏览器访问 http://localhost:4000 即可看到博客预览内容(使用ctrl+c
结束本地预览)
主题设置
一个好看的主题可以让你的博客看上去赏心悦目, 我选择用了Next主题, 你可以再这里选择你喜欢的主题样式
首先下载这个主题:1
2$ cd your-hexo-site
$ git clone https://github.com/iissnan/hexo-theme-next themes/next
下载后的主题都在hexo/themes下存放
接着修改hexo根目录_config.yml
中的theme: landscape
改为theme: next
,如下:1
2
3
4
5
6# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
# theme: landscape
# theme: yilia
theme: next
然后重新执行hexo g
来重新生成。如果出现一些莫名其妙的问题,可以先执行hexo clean
来清理一下public
的内容,然后再重新生成。
初始化本地git仓库
如果你的本地仓库还没有进行远程仓库关联, 需要进行以下步骤
设置Git的user name和email:1
2$ git config --global user.name // 你的github用户名,非昵称
$ git config --global user.email // 填写你的github注册邮箱
在本地的hexo init生成的文件夹中初始化git仓库:1
$ git init
将本地仓库和远程仓库连接(这一步貌似可以不做):1
$ git remote add origin git@github.com:your_github_user_name/your_github_user_name.github.io.git(远程仓库ssh地址)
做完以上这些步骤,说明你的仓库可以使用ssh方式来上传下载代码,而不需要输入用户名和密码了
网站部署
首先, 配置hexo根目录_config.yml
中有关deploy的部分:1
2
3
4
5
6# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository: git@github.com:soober/soober.github.io.git
branch: master
接着, 安装插件1
npm install hexo-deployer-git --save
然后执行发布命令1
2
3$ hexo clean //清除缓存文件db.json和已生成的静态文件public
$ hexo g //生成网站静态文件到默认设置的public文件夹
$ hexo d //部署网站到设定的仓库
执行这个命令可能会碰到一些问题, 终端里会直接给出修改建议, 我是按照给出的参考命令执行的, 具体问题忘记截图了=-=
此时你的博客就部署到了page上了, 打开你的用户名.github.io
, 即可看到你发布到github的博客了, hexo默认会帮你创建好一篇helloworld文章
常用hexo命令
常见命令1
2
3
4
5
6
7hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本
缩写1
2
3
4hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy
组合命令1
2hexo s -g #生成并本地预览
hexo d -g #生成并上传 或者: hexo g --d
绑定域名
- 不想绑定域名的可以跳过这一步骤.
- 想绑定域名还没有域名的, 可以去阿里或者腾讯注册一个域名, 我是在腾讯买的一个.com域名. 传送门-腾讯云
- 有个域名之后, 进行域名解析.域名解析配置最常见有2种方式,CNAME和A记录,其中CNAME填写域名,A记录填写IP. 获取ip需要你去ping一下
你的用户名.github.io
(腾讯的需要进行个人身份认证之后才能正常访问域名)
- 设置CNAME
在 hexo 项目下,source 文件夹下面创建 CNAME 文件(没有后缀名的),在里面写上购买的域名
然后在 github 上面,打开 username.github.io 项目的(Settings)设置,然后在 GitHub Pages的 Custom domain设置里填上购买的域名。比如:
好了,新域名配置完成,可以访问了
一些报错处理
ERROR Plugin load failed: hexo-server
原因:
Besides, utilities are separated into a standalone module. hexo.util is not reachable anymore.
解决方法,执行命令:
1 | sudo npm install hexo-server |
有关-ejs, -stylus, -marked的一些错误提示
解决办法, 执行命令:
1 | npm install hexo-renderer-ejs --save |