Hexo là một framework viết blog tĩnh được xây dựng trên Node.js. Hexo cho phép bạn viết bài đăng ở định dạng Markdown. Các bài đăng trên blog này được xử lý và chuyển đổi thành các tệp HTML tĩnh bằng các chủ đề được xác định trước.
Hexo khác với phần mềm viết blog thông thường như WordPress vì nó tạo ra các tệp tĩnh. WordPress tải blog động bằng cách chạy mã PHP mỗi khi bạn tải lại trang web, khiến trang web dễ bị tấn công.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Hexo và sử dụng nó để tạo blog trên máy chủ chạy Ubuntu 20.04.
Bật cổng SSH.
Bật tường lửa.
Bật cổng 4000 được máy chủ Hexo sử dụng.
Ngoài ra, hãy mở các cổng HTTP và HTTPS mà chúng ta sẽ cần sau.
Kiểm tra trạng thái tường lửa.
Chạy lệnh sau để thêm Node.js Repository.
Cài đặt Node.js.
Xác nhận xem nó đã được cài đặt đúng cách chưa.
Tham số
Tạo thư mục để cài đặt Hexo.
Thiết lập các quyền và quyền sở hữu cần thiết.
Tiếp theo, bạn cần khởi tạo và thiết lập các tệp cần thiết cho blog Hexo. Để thực hiện điều đó, hãy chuyển đến thư mục bạn vừa tạo.
Khởi tạo blog Hexo.
Cài đặt Hexo.
Bây giờ bạn có thể kiểm tra cấu trúc thư mục.
Tệp
Thư mục
Tệp
Tệp
Thư mục
Thư mục
Thư mục
Kiểm tra phần của tệp có tiêu đề
Các tùy chọn khá dễ hiểu. Đổi tên trang web của bạn, đặt phụ đề nếu bạn thích. Thêm mô tả về trang web của bạn và một số từ khóa để mô tả trang web đó. Đổi tên tác giả và múi giờ cho trang web của bạn.
Tiếp theo, hãy kiểm tra phần
Đổi URL của trang web thành tên miền của bạn. Hãy đảm bảo bạn sử dụng HTTPS trong URL của mình vì chúng ta sẽ cài đặt SSL sau.
Nếu bạn không muốn URL trang web của mình hiển thị
Bạn nên bật thêm một vài cài đặt nữa.
Thay đổi giá trị của biến
Thay đổi giá trị của biến
Lưu tệp bằng cách nhấn Ctrl+X và nhập Y khi được nhắc.
Tất cả các chủ đề Hexo đều có sẵn qua Github nên bạn cần sao chép kho lưu trữ Github của chủ đề đó.
Đối với hướng dẫn của chúng tôi, chúng tôi đang cài đặt Chủ đề tiếp theo. Chuyển đến thư mục Hexo và Sao chép kho lưu trữ Github của chủ đề vào thư mục
Thay đổi tệp
Thực hiện thay đổi đối với biến chủ đề để chuyển đổi chủ đề.
Bạn có thể thay đổi cài đặt chủ đề bằng cách sửa đổi
Mở bài đăng mới để chỉnh sửa.
Mỗi bài đăng cần thiết lập
Nếu bạn muốn chèn hình ảnh vào bài đăng của mình, hãy thêm mã sau vào bài đăng.
Sau đó, sao chép tệp
Lưu tệp bằng cách nhấn Ctrl+X và nhập Y khi được nhắc sau khi bạn viết xong bài đăng.
Tiếp theo, hãy xuất bản bài đăng.
Bài đăng này sẽ là có thể nhìn thấy khi chúng tôi lưu trữ blog.
Tất cả các plugin Hexo đều là các gói Node.js và được lưu trữ trên Github, nơi bạn có thể tìm thấy thông tin chi tiết về cài đặt và cấu hình của chúng.
Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt plugin
Trước tiên, hãy đảm bảo rằng bạn đang ở trong thư mục hexo, sau đó cài đặt plugin.
Mở tệp cấu hình Hexo để chỉnh sửa.
Dán mã sau vào cuối tệp.
Tùy chọn
Bây giờ bạn có thể khởi chạy URL
Thoát khỏi máy chủ bằng cách nhấn Ctrl + C tại thiết bị đầu cuối.
Có một số cách để phục vụ blog Hexo công khai. Đối với hướng dẫn này, chúng ta sẽ phục vụ các tệp tĩnh của Hexo bằng máy chủ Nginx.
Chạy lệnh sau để tạo các tệp tĩnh.
Lệnh trên tạo các tệp tĩnh được lưu trữ trong thư mục
Tạo và mở tệp cấu hình Hexo cho Nginx.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl+X và nhập Y khi được nhắc.
Kích hoạt cấu hình.
Mở tệp
Dán dòng sau trước dòng
Thay đổi giá trị của biến
Nhấn Ctrl + X để đóng trình soạn thảo và nhấn Y khi được nhắc lưu tệp.
Kiểm tra để đảm bảo không có lỗi cú pháp nào trong cấu hình của bạn.
Nếu không có vấn đề gì, hãy khởi động lại máy chủ Nginx.
Để thực hiện, hãy cài đặt Certbot.
Dừng Nginx vì nó sẽ can thiệp vào quá trình Certbot.
Tạo chứng chỉ. Chúng ta cũng cần tạo chứng chỉ DHParams.
Chúng ta cũng cần thiết lập một tác vụ cron để tự động gia hạn SSL. Để mở trình soạn thảo crontab, hãy chạy lệnh sau.
Hexo khác với phần mềm viết blog thông thường như WordPress vì nó tạo ra các tệp tĩnh. WordPress tải blog động bằng cách chạy mã PHP mỗi khi bạn tải lại trang web, khiến trang web dễ bị tấn công.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Hexo và sử dụng nó để tạo blog trên máy chủ chạy Ubuntu 20.04.
Điều kiện tiên quyết
-
Máy chủ chạy Ubuntu 20.04 với người dùng không phải root có quyền sudo.
-
Cần cài đặt Git. Nếu bạn không cài đặt git, bạn có thể thực hiện thông qua các lệnh sau.
Mã:$ sudo apt install git$ git config --global user.name "Tên của bạn"$ git config --global user.email "[emailprotected]"
-
Một tài khoản trên Github.
Cấu hình Tường lửa
Ubuntu 20.04 đi kèm với Tường lửa đơn giản (UFW) theo mặc định. Trong trường hợp không có, hãy cài đặt trước.
Mã:
$ sudo apt install ufw
Mã:
$ sudo ufw allow "OpenSSH"
Mã:
$ sudo ufw enable
Mã:
$ sudo ufw allow 4000
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Mã:
$ sudo ufw statusTrạng thái: activeĐến Hành động Từ-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere4000 ALLOW Anywhere443/tcp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6)4000 (v6) ALLOW Anywhere (v6)443/tcp (v6) ALLOW Anywhere (v6)
Cài đặt Node.js
Vì Hexo dựa trên Node.js, trước tiên bạn cần cài đặt nó.Chạy lệnh sau để thêm Node.js Repository.
Mã:
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
Mã:
$ sudo apt-get install nodejs
Mã:
$ node --versionv14.15.0
Cài đặt Hexo
Chạy lệnh sau để cài đặt gói Hexo.
Mã:
$ sudo npm install hexo-cli -g
-g
cài đặt gói hexo-cli
trên toàn cầu, cho phép bạn cài đặt blog Hexo trong bất kỳ thư mục nào bạn chọn.Tạo thư mục để cài đặt Hexo.
Mã:
$ sudo mkdir -p /var/www/hexo
Mã:
$ sudo chown -R $USER:$USER /var/www/hexo$ sudo chmod -R 755 /var/www/hexo
Mã:
$ cd /var/www/hexo
Mã:
$ hexo initTHÔNG TIN Sao chép hexo-starter https://github.com/hexojs/hexo-starter.gitTHÔNG TIN Cài đặt các phụ thuộcđã thêm 185 gói từ 430 người đóng góp và đã kiểm tra 191 gói trong 6,47 giây14 gói đang tìm kiếm nguồn tài trợ chạy `npm fund` để biết chi tiếttìm thấy 0 lỗ hổngTHÔNG TIN Bắt đầu viết blog với Hexo!
Mã:
$ npm installnpm WARN tùy chọn BỎ QUA TÙY CHỌN PHỤ THUỘC: [emailprotected] (node_modules/fsevents):npm WARN notsup BỎ QUA PHỤ THUỘC TÙY CHỌN: Nền tảng không được hỗ trợ cho [emailprotected]: muốn {"os":"darwin","arch":"any"} (hiện tại: {"os":"linux","arch":"x64"})đã thêm 5 gói từ 1 người đóng góp và đã kiểm tra 191 gói trong 1,567 giây14 gói đang tìm kiếm nguồn tài trợ chạy `npm fund` để biết chi tiếttìm thấy 0 lỗ hổng
Mã:
$ ls_config.yml node_modules package-lock.json package.json scaffolds source themes
_config.yml
chứa cấu hình cho blog Hexo của bạn. Hầu hết các cài đặt blog có thể được thay đổi từ đây.Thư mục
node_modules
chứa tất cả các gói mà Hexo cần và các gói mà nó phụ thuộc vào.Tệp
package.json
chứa danh sách tất cả các gói và số phiên bản của chúng mà Hexo cần.Tệp
package-lock.json
được npm
tự động tạo ra mỗi khi bạn thực hiện cài đặt hoặc thay đổi gói Hexo. Tệp này chứa thông tin về các gói và phiên bản đã được cài đặt hoặc thay đổi.Thư mục
scaffolds
chứa các mẫu mà các bài đăng và trang blog của bạn sẽ dựa trên.Thư mục
source
chứa nội dung trang web thực tế ở định dạng HTML/CSS sau đó được xuất bản lên web. Bất kỳ thư mục hoặc tệp nào có tiền tố _
(dấu gạch dưới) đều bị Hexo bỏ qua, ngoại trừ thư mục _posts
. Hiện tại, thư mục đang trống vì chúng tôi chưa viết hoặc xuất bản bất kỳ nội dung nào.Thư mục
themes
chứa các chủ đề Blog của bạn.Cấu hình Hexo
Mở tệp_config.yml
để chỉnh sửa.
Mã:
$ nano _config.yml
Site
Mã:
# Cấu hình Hexo## Tài liệu: https://hexo.io/docs/configuration.html## Nguồn: https://github.com/hexojs/hexo/# Sitetitle: Hexosubtitle: ''description: ''keywords:author: John Doelanguage: entimezone: ''
Tiếp theo, hãy kiểm tra phần
URL
của tệp.
Mã:
# URL## Nếu trang web của bạn được đặt trong thư mục con, hãy đặt url là 'http://example.com/child' và root là '/child/'url: http://example.comroot: /permalink: :year/:month/:day/:title/permalink_defaults:pretty_urls: trailing_index: true # Đặt thành false để xóa 'index.html' theo sau khỏi liên kết cố định trailing_html: true # Đặt thành false để xóa '.html' theo sau khỏi liên kết cố định
Nếu bạn không muốn URL trang web của mình hiển thị
index.htm
l ở cuối mỗi trang, bạn có thể thay đổi cả hai tùy chọn trailing_index
và trailing_html
thành false
.Bạn nên bật thêm một vài cài đặt nữa.
Thay đổi giá trị của biến
default_layout
từ post
thành draft
. Thao tác này sẽ tạo các bài đăng mới dưới dạng bản nháp nên bạn sẽ cần phải xuất bản chúng trước khi chúng xuất hiện trên blog.Thay đổi giá trị của biến
post_asset_folder
thành true
. Điều này sẽ cho phép bạn có các thư mục hình ảnh riêng cho mỗi bài đăng thay vì một thư mục hình ảnh duy nhất cho tất cả các bài đăng.Lưu tệp bằng cách nhấn Ctrl+X và nhập Y khi được nhắc.
Cài đặt chủ đề
Hexo đi kèm với một chủ đề mặc định có tên là Landscape. Bạn có thể chuyển sang một chủ đề khác bằng cách cài đặt một chủ đề Hexo khác có sẵn từ trang Chủ đề của chủ đề đó.Tất cả các chủ đề Hexo đều có sẵn qua Github nên bạn cần sao chép kho lưu trữ Github của chủ đề đó.
Đối với hướng dẫn của chúng tôi, chúng tôi đang cài đặt Chủ đề tiếp theo. Chuyển đến thư mục Hexo và Sao chép kho lưu trữ Github của chủ đề vào thư mục
themes
.
Mã:
$ cd /var/www/hexo$ git clone https://github.com/theme-next/hexo-theme-next themes/next
/var/www/hexo/_config.yml
để thay đổi chủ đề từ Landscape thành Next.
Mã:
$ nano _config.yml
Mã:
# Tiện ích mở rộng## Plugin: https://hexo.io/plugins/## Chủ đề: https://hexo.io/themes/theme: next
/var/www/hexo/themes/next/_config.yml
tệp.Tạo và xuất bản bài đăng
Đã đến lúc tạo bài đăng đầu tiên của chúng ta.
Mã:
$ hexo new first-postINFO Đang xác thực cấu hìnhINFO Đã tạo: /var/www/hexo/source/_drafts/first-post.md
Mã:
$ nano ./source/_drafts/first-post.md
front-matter
. Front-matter là một khối JSON hoặc YAML ngắn cấu hình các chi tiết cần thiết như tiêu đề bài đăng, ngày xuất bản, danh mục, thẻ, v.v. Thay thế dữ liệu mặc định bằng các tùy chọn chính xác.
Mã:
title: Bài đăng đầu tiên của Howtoforgetags: - testcategories: - Hexocomments: truedate: 2020-11-14 00:00:00---## Markdown sẽ nằm ở đây.**Đây là bài đăng đầu tiên của chúng tôi!**
Mã:
{% asset_img "example.jpg" "Đây là hình ảnh ví dụ" %}
example.jpg
vào thư mục \source\_posts\first-post
, đây là nơi lưu trữ tất cả hình ảnh cho bài đăng đầu tiên của bạn.Lưu tệp bằng cách nhấn Ctrl+X và nhập Y khi được nhắc sau khi bạn viết xong bài đăng.
Tiếp theo, hãy xuất bản bài đăng.
Mã:
$ hexo publish first-postINFO Đang xác thực cấu hìnhINFO Đã xuất bản: /var/www/hexo/source/_posts/first-post.md
Cài đặt Plugin
Hexo có hàng trăm plugin mà bạn có thể cài đặt. Bạn có thể cài đặt một hoặc nhiều plugin tùy thuộc vào cách sử dụng của bạn.Tất cả các plugin Hexo đều là các gói Node.js và được lưu trữ trên Github, nơi bạn có thể tìm thấy thông tin chi tiết về cài đặt và cấu hình của chúng.
Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt plugin
hexo-filter-nofollow
.Trước tiên, hãy đảm bảo rằng bạn đang ở trong thư mục hexo, sau đó cài đặt plugin.
Mã:
$ cd /var/www/hexo$ npm i hexo-filter-nofollow --save
Mã:
$ sudo nano _config.yml
Mã:
nofollow: enable: true field: site exclude: - 'exclude1.com' - 'exclude2.com'
enable
bật Plugin. Tùy chọn field
xác định phạm vi của plugin trong đó site
thêm thuộc tính nofollow vào các liên kết ngoài trên toàn bộ trang web và post
chỉ thêm thuộc tính nofollow vào các liên kết trong bài đăng. Tùy chọn exclude
đưa các tên miền vào danh sách trắng mà thuộc tính nofollow sẽ không được thêm vào.Máy chủ thử nghiệm
Hexo đi kèm với một máy chủ web cơ bản. Bây giờ bài đăng của chúng tôi đã được xuất bản, đã đến lúc khởi động máy chủ thử nghiệm Hexo.
Mã:
$ hexo server
http://yourserverIP:4000
trong trình duyệt của mình và bạn sẽ thấy trang sau.Thoát khỏi máy chủ bằng cách nhấn Ctrl + C tại thiết bị đầu cuối.
Tạo tệp tĩnh Hexo
Máy chủ thử nghiệm của Hexo có thể phục vụ blog động cũng như thông qua các tệp tĩnh. Lệnh trên đã phục vụ blog động.Có một số cách để phục vụ blog Hexo công khai. Đối với hướng dẫn này, chúng ta sẽ phục vụ các tệp tĩnh của Hexo bằng máy chủ Nginx.
Chạy lệnh sau để tạo các tệp tĩnh.
Mã:
$ hexo generate
/var/www/hexo/public
. Chúng ta sẽ sử dụng máy chủ Nginx để phục vụ các tệp từ thư mục này.Cài đặt và cấu hình Nginx
Cài đặt máy chủ Nginx.
Mã:
$ sudo apt install nginx
Mã:
$ sudo nano /etc/nginx/sites-available/hexo.conf
Mã:
máy chủ { server_name hexo.example.com; root /var/www/hexo/public; index index.html index.htm; lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/hexo.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hexo.example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_session_timeout 1 ngày; ssl_session_cache shared:MozSSL:10m; # khoảng 40000 phiên ssl_session_tickets tắt; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES25> ssl_prefer_server_ciphers tắt; ssl_dhparam /etc/ssl/certs/dhparam.pem; vị trí / { try_files $uri $uri/ =404; }}máy chủ { nếu ($host = hexo.example.com) { trả về 301 https://$host$request_uri; } tên máy chủ hexo.example.com; lắng nghe 80; lắng nghe [::]:80; trả về 404;}
Kích hoạt cấu hình.
Mã:
$ sudo ln -s /etc/nginx/sites-available/hexo.conf /etc/nginx/sites-enabled/
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf
Mã:
server_names_hash_bucket_size 64;
types_hash_max_size
từ 2048 đến 4096.
Mã:
types_hash_max_size 4096;
Kiểm tra để đảm bảo không có lỗi cú pháp nào trong cấu hình của bạn.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx
Cài đặt SSL
Đã đến lúc cài đặt SSL bằng dịch vụ Let's Encrypt cho blog hexo của chúng ta.Để thực hiện, hãy cài đặt Certbot.
Mã:
$ sudo apt install certbot
Mã:
$ sudo systemctl stop nginx
Mã:
$ sudo certbot certonly --standalone -d hexo.yourdomain.com --preferred-challenges http --agree-tos -n -m [emailprotected] --keep-until-expiring$ sudo systemctl start nginx$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mã:
$ sudo crontab -eno crontab for root - using an empty oneChọn một trình soạn thảo. Để thay đổi sau, hãy chạy 'select-editor'. 1. /bin/nano