Tạo blog với hexo

Hexo là 1 blog framework, đã có tới 31.1k Star trên Github tại thời điểm viết bài.

meo_chii

Ưu điểm để chọn hexo#

  • Bài viết sử dụng file Markdown, rất quen thuộc với ae lập trình.
  • Dễ dàng cài đặt, sử dụng, gắn thêm các plugins.
  • Có nhiều themes được chia sẻ bởi cộng đồng.
  • Tài liệu dễ đọc

Yêu cầu môi trường triển khai#

Có một số cách triển khai như sau:

Cách 1#

Lưu mã nguồn trang web (static files) trên Github, sử dụng Github Pages. Cách này không cần mua domain, không cần có server riêng.

Cách 2#

Sử dụng VPS, mua domain riêng.

Cách 3#

Mua domain riêng, lưu mã nguồn (static files) trên Github. Xem hướng dẫn trỏ domain theo Medium


Ở đây mình sử dụng VPS và domain mua, môi trường triển khai:

  • Server: Centos 6
  • Cài đặt: Nginx, PM2, Git 2.x, NodeJS 13, Hexo-CLI

Development: sử dụng Docker

  • NodeJS 13, Hexo-CLI

Bắt đầu cài đặt#

Tạo Dockerfile#

Nội dung Dockerfile như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FROM node:13-slim

MAINTAINER mozaa <[email protected]>
ENV HEXO_SERVER_PORT=4000

# Install requirements: Git, Hexo cli
RUN \
apt-get update && \
apt-get install git -y && \
npm install -g hexo-cli

# Set workdir
WORKDIR /app

# Expose Server Port
EXPOSE ${HEXO_SERVER_PORT}

# Nếu thư mục có chứa giữ liệu thì bỏ qua, nếu chưa thì tạo mới project hexo
CMD \
if [ "$(ls -A /app)" ]; then \
echo "***** App directory exists and has content, continuing *****" && \
npm install; \
else \
echo "***** App directory is empty, initialising with hexo *****" && \
hexo init && \
npm install; \
fi; \
echo "***** Starting server on port ${HEXO_SERVER_PORT} *****" && \
hexo server -d -p ${HEXO_SERVER_PORT}

Build image#

1
docker build -t gadev.net .

Tạo container từ image vừa build xong#

1
2
3
4
5
6
docker create --name=gadev \
-e HEXO_SERVER_PORT=4000 \
-v /Users/mozaa/Desktop/projects/gadev:/app \
-p 4000:4000 \
gadev.net:latest

Lưu ý:

  • -v: Mount thư mục ngoài máy thật và máy ảo
  • -p: Bind port 4000 của máy thật với port 4000 của máy ảo

Có thể truy cập vào container bằng lệnh

1
docker exec -it gadev bash

Sử dụng themes và plugins#

Bắt đầu bài viết đầu tiên#

Tài liệu tham khảo#

https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

https://medium.com/@spurin/creating-a-blog-with-hexo-docker-and-github-free-hosting-and-https-4b8c2142e2df