Github 博客搭建
…
经过几天的研究,我终于搭起了一个Github博客网站。这篇文章将从以下几个步骤分别介绍博客的搭建。
- 前期准备
- 环境部署
- 配置域名(可选)
- 配置到个人服务器(可选)
- 附录
1. 前期准备
首先,你需要拥有以下内容:
Github账号
个人域名(可选)
个人服务器(可选)
Github账号可以到Github官网申请,过程很简单,这里就不赘述了。
个人域名可以选择阿里云,腾讯云等域名产品,申请过程也就不说了,这个不是必选,有需要的可以搞一个。
2. 环境部署
这一步就正式开始搭建自己的博客了。首先是安装一些软件:
Git
NodeJS
Git的安装过程
首先到Git下载页面下载Git,这里建议下载64-bit Git for Windows Setup版本,涉及到一些环境变量的配置,安装版可以自动配置环境变量,省去手动配置的烦恼(32位系统则选择32-bit版)。
NodeJS的安装过程
到NodeJS下载页面下载NodeJS,可以选择Windows 安装包 (.msi) x64版,原因同上。
安装博客框架
可以选择Hexo,Jekyll等博客框架。这里以Hexo为例(参考文档,博客主题在这个官网中可以查看)。
打开终端,执行如下命令安装(这一步需要管理员模式):
1 | npm install -g hexo |
在本地新建一个目录,执行init
命令初始化Hexo和Git:
1 | hexo init |
配置Github
创建一个Repository,名字必须为your_user_name.github.io。(加粗部分替换为自己的用户名)
下面配置SSH Key方便后续上传博客代码。
在本地Git Bash中输入如下命令建立SSH Key:
1 | ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/github_blog_keys |
中间会提示你输入文件,密码,可以不用管,直接回车即可。配置成功后,打开生成的ssh-key,新生成的公钥就是~/.ssh/github_blog_keys.pub
。到在自己的账户设置中,找到 SSH and GPG keys ,点击New SSH Key 添加新的Key。将刚刚生成的公钥文件中的内容复制这里即可。
之后我们需要配置自己的Username和Email:
1 | git config --global user.name "your_user_name" |
之后将本地仓库再关联到远程仓库,首先复制远程仓库地址,到Git Bash中执行下述命令,这一步要保证当前打开的路径是Hexo的路径:
1 | git remote add origin https://github.com/your_user_name/your_user_name.github.io.git |
配置Hexo
在Hexo目录下执行下面这句,安装该扩展程序。
1 | npm install hexo-deployer-git --save |
打开Hexo下的_config.yml
文件,在文件末尾添加:
1 | deploy: |
并修改title
,url
,theme
等配置。
开始编写
下面就可以开始编写自己的博客了。
执行下面命令新建Hexo页面。
1 | hexo new "HelloWorld" |
之后会在项目的/source/_post/
下看到HelloWorld.md
文件,使用MarkDown语言编辑这个文件即可。编辑完毕保存退出,执行下述命令开始编译项目并上传:
1 | hexo g -d |
打开连接https://your_user_name.github.io
就能看到你的博客了。
也可以在本地看看效果:
1 | hexo s |
打开连接http://localhost:4000
即可看到效果。
3. 配置域名(可选)
首先得需要一个域名(还得是备案过的)。这里以腾讯云的域名为例。在云解析服务中,选择你的域名点击右侧的解析,进入域名的配置页面。点击上方的添加记录,主机类型可以选www
或者@
,记录类型选择CNAME
,记录值为your_user_name.github.io. (注意末尾有个点),之后保存即可。
在你的项目中的/source/
目录下创建CNAME
文件,文件内容是你的一级域名,如下所示:
your_user_name.cn
保存编译上传项目,过几分钟后即可配置成功。
如果要开启HTTPS,则还需要购买SSH证书(有免费的证书),例如可以选择阿里云,腾讯云或CloudFlare的免费HTTPS服务。这里以腾讯云为例,选择为期一年的免费版SSH证书。
在云产品中找到SSH 证书管理,点击申请免费证书,选择左侧的免费一年的证书。按照上面的要求输入相关信息,点击下一步,等待几分钟审核通过(也可能好久)。
回到https://github.com/your_user_name/your_user_name.github.io
中,进入仓库设置页面,下拉找到GitHub Pages,在Custom domain中输入自己的域名,并开启Enforce HTTPS。
4. 配置到个人服务器(可选,Ubuntu版)
当然,首先需要一台个人服务器。配置过程主要分为几个步骤:
安装Git-core
安装Nginx
配置Https
首先安装Git-core和Nginx。登入服务器执行如下代码
1 | sudo apt-get install git-core nginx openssh-server |
安装成功后,开始配置Nginx。在这里我们可以使用SSL给网站加点安全措施。首先从腾讯云上下载SSL证书(笔者用Chrome下载证书时浏览器会崩溃,于是换了一个浏览器才下载下来),压缩包下会有Nginx版对应的证书。复制里面的证书到服务器上,这里可以使用xftp或MobaXterm的sftp上传,放到 /etc/nginx/cert
目录下。
在 /etc/nginx
下执行下述代码:
1 | sudo cp sites-available/default sites-available/default-ssl |
开始使用vim编辑刚刚得到的ssl文件,配置ssl访问,并设置80端口重定向到443端口。
1 | server { |
配置完成后,记得在腾讯云的域名解析上添加一条A记录,来指向自己的服务器IP地址。完成后别忘了访问一下自己的网站,看看是否能够访问成功。
下面开始部署网站到自己的服务器上了。在自己的服务器上,首先搭建一个Git的服务器。首先将之前的github_blog_keys.pub
中的公钥上传到服务器上,保存到 ~/.ssh/authorized_keys
文件中。在自己的服务器中创建git账号。
1 | sudo useradd git |
输入git账号的密码,之后登陆到git账号中,创建仓库。
1 | su git |
这里回到本地,先测试一下能否正常访问自己的git。
1 | git clone git@your_server_ip:~/blog.git |
成功后利用hexo将博客代码部署到自己的服务器上。首先先配置自己的_config.yml文件。打开_config.yml
文件,修改deploy
部分的代码:
1 | deploy: |
保存后使用hexo提交博客代码。
1 | hexo clean |
这样就可以提交代码到服务器上保存了。但是目前网站依然是无法访问的,需要再编写一个自动部署网站的脚本。
进入服务器,进入到目录 /home/git/blog.git/hooks
下,创建提交后执行的脚本。
1 |
|
创建完成后,修改一下权限,并重启Nginx。
1 | chmod +x post-receive |
这次在客户端用hexo重新部署一次代码。
1 | hexo d |
到此结束,可以收工了。
附录A Hexo
常用命令
Hexo初始化
1 | hexo init |
编译到静态页面
1 | hexo generate |
部署到Github上
1 | hexo deploy |
使用本地浏览器查看 ( http://localhost:4000 )
1 | hexo server |
创建新的Page
1 | hexo new |
配置主题 _config.yml
首先给Hexo配置一个主题,之后就可以在Hexo的主题的目录下看到_config.yml文件。
以NexT主题为例,目录下的_config.yml文件中有如下选项:
- Site Information Settings 站点信息设置
- SEO Settings SEO设置
- Menu Settings 菜单设置,包括显示的栏目,栏目图标等
- Scheme Settings 主题风格设置
- Sidebar Settings 菜单栏设置,包括友情链接,个人头像,侧边栏位置等
- Post Settings 主页文章显示设置
- Misc Theme Settings 主题其他设置,字体,代码风格等
- Third Party Services Settings 第三方服务,数学插件,评论插件,统计插件,搜索插件等
- Tags Settings 标签设置
- Animation Settings 动画设置
创建分类与标签
使用如下两个命令分别创建分类与标签:
1 | # 创建分类 |
创建完成后,需要在主题配置中开启相应的选项(例如NexT主题中的menu)。
安装插件
图片本地化插件
在Hexo目录下执行下面语句:
1 | npm install https://github.com/CodeFalling/hexo-asset-image --save |
之后配置根目录下的_config.yml中:
1 | post_asset_folder:true |
之后再创建文章的时候,就会同时在同一目录下创建一个与文章同名的文件夹,里面可以存放文章中使用到的图片。在文章中引用文件夹下的图片pic.jpg方法如下:
1 | ![image](pic.jpg) |
评论插件
这里推荐两款评论插件,来必得与LeanCloud。
来必得支持多账号登录,但是评论数据无法导出,而LeanCloud是匿名评论,提供的对象存储支持每日30,000次请求,总共10GB存储。
搜索插件
这里使用Local Search,直接安装即可实现本地搜索。安装代码如下:
1 | npm install hexo-generator-searchdb --save |
回到博客的_config.yml
中添加如下设置:
1 | search: |
在主题的_config.yml
中找到local_search
,并启用该功能:
1 | # Local search |
动态壁纸
线条背景:在主题文件夹下找到layout/_layout.swig
文件,在</body>
上方添加代码
1 | {% if theme.canvas_nest %} |
Live2D插件
首先安装Live2D插件:
1 | npm install --save hexo-helper-live2d |
这里推荐到xiazeyu这里找一个喜欢的模型安装一下,我随便选一个为例:
1 | npm install --save live2d-widget-model-hibiki |
回到博客的_config.yml
文件中,在最后添加代码,具体可以看EYHN里面的介绍:
1 | # Live2D |
pdf 插件
安装PDF插件:
1 | npm install --save hexo-pdf |
在主题配置文件next/_config.yml
中找到PDF配置,打开开关。
1 | pdf: |