现在搭建个人博客的方式越来越多,而且过程也越来越简单。大体的思路,都是先生成静态网页,然后部署到一个依托网站。
这篇文介绍的是用Hexo生成静态网站,然后部署到Github。
介绍Node和npm
Hexo是用Node写的,所以要安装它所依赖的环境后才能用,先贴一下廖雪峰关于Node和npm关系的介绍
npm是什么东东?npm其实是Node.js的包管理工具(package manager)。
为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。
更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。
安装Node和npm
开始我用brew
装了半天,中间总有个包不成功。最后发现直接从Node官网下载安装包最省事,一步到位。https://nodejs.org/en/。
安装完之后检查一下,如果能显示出版本号,就可以了:
1 | $ node -v |
安装hexo-cli
这个工具是帮助我们初始化个人站的,一行命令就可以生成一个空站点
1 | # For Mac |
装完之后,验证一下是否成功,显示如下内容则表示成功了
1 | $ hexo |
初始化个人站
一行命令即可:
1 | # blog就是网站目录的名字,可随意起,合法即可 |
然后,进到blog目录,可以看到,这就是个Node项目。package.json
里面是项目所需要的依赖,接下来安装依赖
1 | # 切换到项目根目录 |
执行一下hexo命令,如下显示则说明成功:
1 | $ hexo |
生成静态网站
看上面的命令介绍,其中这几个最常用:
generate
:就是用来生成静态网站的,一般简写成g
server
:是在本地运行,也就是把静态网站依托在本机上,一般简写成s
deploy
:是把静态站部署到远程,一般简写成d
new
:用来生成一片空文章init
:用来生成一个空页面claan
:是删除生成的静态网站
1 | # 生成 |
看提示可以知道,hexo正在运行,在浏览器中访问本地的4000端口,就可以看到了
部署之Github Token
所谓部署,就是把生成的静态网站的所有文件,推送到远程的Github仓库。所以,Hexo就需要推送的权限。我用的是https协议,还没试过git协议。https的方式就是把带有推送权限的token放到仓库链接里即可。
Github Token:Github首页 -> 右上角个人头像 -> Settings -> Developer settings -> Personal access token -> Generate new token -> 把repo的大权限勾上
默认的过期时间Expiration是30天,可以选长一点,不然过期之后还要更新token。最后就得到了一个以ghp_
开头、总长度为40的字符串的token。
部署之远程仓库
在Github上新建个仓库,用来放静态网站的文件。仓库的名字有要求,一般是这样的:*.github.io
,
星号可以替换成你自己想要的单词。然后,这整个就是仓库的名字,比如我的仓库地址就是:
https://github.com/oynix/oynix.github.io.git
- 如果,这个星号使用的是Github账号的名字,那么最终的网站地址就是:
https://oynix.github.io/
- 如果,这个星号使用的是其他的名字,比如blog,那么最终的网站地址就是:
https://oynix.github.io/blog.github.io/
换句话说,如果想要用最短URL,那么就用Github账号的名字;如果要用到path了,可以给仓库起个短点名字,如就叫blog,那么最终的网站地址就是:
https://oynix.github.io/blog/
当然,如果买了自己的域名,那么这些都不重要。
我本也想买个域名的,一年几十块钱。但国内的环境吧,各种验证、实名、审核等等,将我冷冰冰的劝退了,以至于我觉得github这个就挺好的。
部署之hexo-deployer-git插件
因为要把代码部署到Github,所有需要先安装这个插件。hexo也支持部署到其他地方,各自都有对应的插件。
1 | # 根目录下执行 |
部署之配置
根目录下有个文件,_config.yml
,这个是用来配置网站的一些属性的,使用的yml格式,里面的注释里写了很详细的介绍,大部分应该都可以看得懂。
其中,deploy
是用来配置选项的:
1 | # Deployment |
把前两步生成的token和仓库地址,写进去就可以,github的规则是把token加在前面然后用@连接
1 | # Deployment |
2022年4月16日更新
最近更新的比较频繁,发现往仓库推代码很快,但是部署网站却很慢且常常失败,细想了一下意识到,二者使用的协议不一样,前者是git,后者是https,于是便把部署协议换成git了,速度有所一生,格式如下
1 | deploy: |
前提是,需要把本级的ssh pub key添加到github账号里,如果不是第一次推代码,那定是早就添加了,github首页右上角的Settings,里面有个SSH and GPC keys,进到这个里面,key在~/.ssh/目录下,有个id_rsa.pub的文件,把里面的内容复制过去即可。
部署
generate
之后,会在根目录生成一个名字是.deploy_git
的目录,这个目录默认是隐藏的,里面就是生成的静态网站,将会被推送到远程。
1 | # 根目录下执行 |
然后,就可以在远程仓库看到所有的网站文件了
启用Github Pages
打开Github,进入刚刚创建的仓库,进入Settings,点进Pages,Branch选master,save一下。
然后,上面就会出现网站地址了:Your site is published at https://oynix.github.io/
首次部署,需要等1分钟左右才能访问,不然看到的就是404。
总结
总的来说,分为3大步:搭建环境、生成静态网站以及推送到远程。按流程来,还是很顺利的。
其中,有个主题还没说,hexo支持很多主题,每个主题都可以配置很多选项,如字体的颜色大小、字间距、行间距、多字体,等等。搭配上这些,就可以让页面在视觉上更加美观、舒服,等有时间再单独写一写这些。