Hexo是一个非常方便好用的markdown博客框架平台,提供简洁高效的个人文章发布方式和方法,经过一定的起始配置后可以非常便捷快速地发布文章至个人博客网站,平时无需管理服务器。
文中使用amazon ec2的虚拟机作为网站服务器,在本地通过ssh和sftp工具访问和操作服务器。
一、安装软件
sudo apt install nodejs, npm, git, supervisor, nginx
二、使用 Hexo 建立 blog
安装 Hexo
npm install -g hexo
初始化 Hexo
mkdir hexo && cd hexo
hexo init blog
cd blog
npm install
配置 Hexo
Hexo 有两份主要的配置文件(_config.yml),一份位于站点根目录下,另一份位于主题目录下。为了描述方便,在以下说明中,将前者称为 站点配置文件
,后者称为 主题配置文件
。
站点信息
编辑 站点配置文件
:
title: blog
subtitle: my blog
description:
author: X.Long Kong
language: en
timezone: Asia/Shanghai
文章链接
文章的链接格式形如 /yyyy/mm/title.html
。以文章 blog/2015/2015-08-30-hello.md
为例,它对应的链接是 /2015/08/hello.html
。
为了到达上述效果,需要编辑 站点配置文件
如下:
root: /
permalink: :year/:month/:title.html
new_post_name: blog/:year/:year-:month-:day-:title.md
配置主题
我个人喜欢简洁优雅的风格,因此选择了 tranquilpeak 主题。
1. 下载 tranquilpeak 主题
cd blog
git clone https://github.com/iissnan/hexo-theme-next themes/next
2. 启用 tranquilpeak 主题
编辑 站点配置文件
:
theme: tranquilpeak
如果想使用类似 cover image, thumbnail image, 和 image gallery 等特性, 需要在站点配置文件中将 post_asset_folder
设为 true
,会在_post
目录下生成*.md同名的目录作为资源目录,用来保存图像或数据文件。
修改下列几项pages的名称为主题默认的名称
tag_dir: all-tags
archive_dir: all-archives
category_dir: all-categories
配置 RSS
-
在blog目录运行
npm install hexo-generator-feed --save
-
在
站点配置文件
中增加下列内容:feed: type: atom path: atom.xml limit: 20
3. 设置主题参数
编辑 主题配置文件
:
配置语言为en或zh-cn, 具体字符查看主题languages目录下的*.yml文件
增加all-categories
页面:
在blog目录下运行
hexo new page “all-categories”
在blog/source目录下会生成新目录all-categories
。
更改 source/all-categories/index.md
文件内容为:
---
title: "all-categories"
layout: "all-categories"
comments: false
---
类似的增加all-tags
和all-archives
页面。
4. 侧边栏
根据需要修改sidebar显示的内容。
5. 评论系统
-
注册 Disqus 的账号并登录
-
依次点击 “GET STARTED”、“I want to install Disqus on my site”
-
按提示填写站点信息(注意 “Website Name” 的内容就是 shortname,稍后会用到,比如
kongxl
) -
按提示 “1. Select Plan”(没钱就选择 Basic)、“2. Install Disqus”(NexT 主题的可以忽略)、“3. Configure Disqus”(填写 “Website URL” 后,点击 “Complete Setup” 即可)
-
编辑
主题配置文件
,启用 Disqus:disqus_shortname: kongxl
三、正式部署
1. 使用 Supervisor 管理 Hexo 服务
使用 hexo server
启动的 Hexo 服务是非 Daemon 模式的。为了便于管理,这里使用Supervisor管理hexo server
。
创建 Supervisor 配置文件:
sudo vi /etc/supervisor/conf.d/blog.conf
[program:blog]
command=hexo server
directory=/home/ubuntu/blog
autostart=true
autorestart=true
startsecs=5
stopsignal=HUP
stopasgroup=true
stopwaitsecs=5
stdout_logfile_maxbytes=20MB
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile_maxbytes=20MB
stderr_logfile=/var/log/supervisor/%(program_name)s.log
sudo supervisord
查看 blog 程序(即 Hexo 服务)的状态:
supervisorctl status
blog RUNNING pid 28974, uptime 0:00:32
如果supervisord启动失败,提示socket error,可使用下面命令解决。
sudo unlink /run/supervisor.sock
可以看出,blog 程序已经处于运行状态,监听端口为 hexo server
命令的默认端口 4000
。在浏览器中访问 http://localhost:4000
可以看到博客的运行效果。
2. 配置 Nginx 代理
作为一个对外公开的网站,使用 4000 端口显然是不合适的。可以直接改成 80 端口,但是这样直接把 Hexo 服务暴露给用户,并不恰当。更好的办法是使用 Nginx 做代理。
创建 Nginx 配置文件:
sudo vi /etc/nginx/conf.d/blog.conf
server {
listen 80;
server_name kongxl.net;
location / {
proxy_pass http://localhost:4000;
}
access_log /var/log/nginx/blog.access.log;
error_log /var/log/nginx/blog.error.log;
}
重启 Nginx:
sudo nginx -t
sudo nginx -s reload
此时,在浏览器中访问 http://kongxl.net
,就可以体验到高效、稳定的博客网站。