前言
最近搭建一个自己的博客,历时一个星期的空余时间。搭建博客的主要目的是想记录自己的技术笔记和心得,方便与人分享和自己查阅。很久以前我就有搭建博客的想法,但是没有实践,一个是懒,一个是没有找到合适的博客系统。后来发现Hexo
这个博客系统,感觉不错,但是看了一些教程,感觉搭建起来很麻烦,我就又放弃了,最近在朋友的鼓励下,终于把想法实践了。
在搭建博客之前,我对比了自己知道两个博客系统,WordPress
和Hexo
。
WordPress: | |
---|---|
优点 | 缺点 |
容易搭建,上手快 | 臃肿不轻便 |
主题多 | 需要提供服务器和域名 |
插件多 |
Hexo: | |
---|---|
优点 | 缺点 |
轻便:全是静态文件 | 只能在本地电脑工作 |
简洁:天然支持MarkDown | 维护不便 |
免费:GitHub |
先前搭建过WordPress
, 我并不是很喜欢WordPress
的主题风格,个人认为不太适合写技术博客,找了些主题后,没有发现自己喜欢的。看到一些技术大佬很多在用Hexo
的博客,并且对比了优缺点,最终决定搭建基于Hexo
的博客。根据Hexo
的缺点,我萌生了一个想法:能不能将Hexo搭建在云服务上?找了相关资料,确实有人这么做。本片博客主要解决了以下几个问题。
- 在云服务器上搭建
Hexo
博客系统 - 在线编辑和发布博客
- 配置Https
博客搭建
服务器和域名
服务器是在阿里云
上买的最低配置的香港服务器,因为香港服务器不需要备案就能直接访问,同时速度也不会太差。同时域名也是在阿里云
上购买的。
服务器版本
CentOS 7.4
Hexo搭建
Hexo的搭建过程网上有太多,没必要重复造轮子,没搭建过的朋友可以参考这篇博文。
我的博客用的主题是Indigo,其中不少问题都可以在WiKi中找到。
配置Hexo
在搭建完成之后,服务器的运行需要依赖于hexo-server
和hexo-admin
。如果已经安装,可以跳过此步骤。
cd到博客根目录下,执行:
1 | npm install hexo-server@0.3.1 --save |
安装完毕之后,执行
1 | hexo s |
打开浏览器,访问http://yourServerIP:4000, 即可预览,访问http://yourServerIP:4000/admin, 即可进入hexo-admin
后台管理界面。
hexo-admin默认是没有密码保护,需要自己手动开启。在进入后台管理页面时,点击Settings--Setup authentification here
设置后台管理密码。
输入用户名密码之后,将生成的代码复制。
然后打开博客根目录下的_config.yml
,将复制的代码粘贴到末尾。
重启hexo服务器,进入http://yourServerIP:4000/admin, 如果出现登录界面,则设置成功。
后台运行
因为shell关掉或者使用ctrl+c
关闭,则会导致服务器结束进程。所以我写了个JS脚本,执行之后,后台会一直运行hexo服务器。
安装pm2
1 | npm install -g pm2 |
在博客根目录下创建一个hexo_run.js。
1 | const { exec } = require('child_process') |
在根目录下运行
1 | pm2 start hexo_run.js |
这样hexo服务器就能一直在后台运行不会被杀死。
Hexo部署
每次都用通过指令来部署,那是相当难受的。不过hexo-admin
提供了一键部署功能:
通过点击Deploy
按钮就能执行你的部署脚本。在博客根目录下添加配置:
1 | admin: |
并且在根目录下创建hexo-deploy.sh
,并编辑:
1 | #!/usr/bin/env sh |
给hexo-deploy.sh授予权限:
1 | chmod a+x hexo-deploy.sh |
重启服务器之后,编辑博文后点击Deploy按钮就能将文章渲染成html页面访问了。
与Github Page同步
GitHub的配置可以参考前文中所提到的博客搭建文章,里面有详细的配置过程。如果需要与Github page同步,则修改hexo-deploy.sh
就可以了。
修改如下:
1 | #!/usr/bin/env sh |
然后重启服务器,点击Deploy按钮即可,之后的改动都会同步到Github上。
服务器配置
DNS解析配置
进入域名的DNS解析中,按如下配置即可:
然后访问你的域名,查看是否能访问到博客页面。
配置Https
关于Https的配置,可以参考这篇博文。
需要在阿里云购买云盾证书,并添加解析。在下载完证书之后需要在nginx.conf
中配置文件。
1 |
|
保存后重启nginx服务
1 | service nginx restart |
看上图中有锁状的地址即配置成功。