用Halo打造自己的博客網站

用Halo打造自己的博客網站

我之前分別用過Django和Hexo搭建網站,Django是python的web框架,Hexo是Node.js的,純前端的玩意兒,配置起來相當折騰,後來我又聽說了Halo不錯,就嘗試按官方文檔部署了一套,Halo的官方文檔是我見過寫的最好的文檔,基本照着文檔就可以搞定,但還是有些細節我想在這裏記錄一下。

採用Next主題的網站效果截圖:截圖效果示意
還有其他多種主題效果,如Simple Bootstrap主題
主打簡潔風格,而且功能比Next多,該主題包含以下功能:

  • 自動拆分文章目錄
  • 閱讀時顯示進度條(可以在設置中關閉)
  • 手機端顯示文章目錄(可以在設置中關閉)
  • 代碼可複製(可以在設置中關閉)
  • 代碼支持行號(可以在設置中關閉)
  • 代碼框右上角顯示代碼類型(可以在設置中關閉)
  • 支持轉發(可以在設置中關閉)
  • 支持日誌界面(部分功能暫時不可用)
  • 支持相冊界面(當前爲卡片式相冊)
  • 鏈接界面分類顯示

Simple Bootstrap 主題效果截圖:
Simple Bootstrap主題效果

1. 用Docker部署Halo

我是嫌麻煩,所以直接選擇了最簡單的Docker部署,我的京東雲服務器是CentOS7.6的操作系統,具體安裝Docker的步驟可以參見我寫的筆記 CentOS7和8安裝Docker ,安裝完Docker之後,直接拉取鏡像執行命令就初步OK了,具體步驟如下,

1.1 自定義配置文件

先下載配置文件

# 下載配置文件到 ~/.halo 目錄
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml

之後修改配置文件,將數據庫改爲mysql,我這裏的mysql數據庫也是用docker安裝的,可以參考我的安裝教程,Docker安裝MySQL5.7和8,安裝完mysql,這裏的數據庫halodb需要自己手動創建一下。

server:
  port: 8090
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource

    # H2 Database 配置,如果你需要使用 MySQL,請註釋掉該配置並取消註釋 MySQL 的配置。
    # driver-class-name: org.h2.Driver
    # url: jdbc:h2:file:~/.halo/db/halo
    # username: admin
    # password: 123456

    # MySQL 配置,如果你需要使用 H2Database,請註釋掉該配置並取消註釋上方 H2Database 的配置。
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3906/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: yourname
    password: yourpassword

  # H2 Database 的控制檯相關配置,如果你使用的是 MySQL ,請註釋掉下方內容。
  # h2:
  #  console:
  #    settings:
  #      web-allow-others: false
  #    path: /h2-console
  #    enabled: false
  #
halo:
    admin-path: admin
    cache: memory

1.2 拉取並運行Halo鏡像
docker pull ruibaby/halo
docker run -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

完成以上操作你就可以通過 ip:端口 訪問了,更新版本時,你只需要拉取最新的鏡像,再重新創建鏡像就OK了。

# 停止容器
docker stop halo
# 拉取最新的 Halo 鏡像
sudo 
# 創建容器
docker run  -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

2. 配置域名訪問

如果你有域名,那麼你還應該配置一下域名訪問,具體如下:

2.1 Nginx反向代理配置

先安裝Nginx

# 添加 Nginx 源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安裝 Nginx
sudo yum install -y nginx
# 啓動 Nginx
sudo systemctl start nginx.service
# 設置開機自啓 Nginx
sudo systemctl enable nginx.service

再配置Nginx

# 下載 Halo 官方的 Nginx 配置模板
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf
# 使用 vim 編輯 halo.conf
vim /etc/nginx/conf.d/halo.conf

然後對其修改

server {
    listen 80;
	# 換成自己的域名
    server_name example.com www.example.com;
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8090/;
    }
}

修改完成之後,重新加載nginx配置

# 檢查配置是否有誤
sudo nginx -t
# 重載 Nginx 配置
sudo nginx -s reload

之後你就可以用你的域名訪問了,例如:http://www.example.com

2.2 配置SSL證書

首先,你先要從你的雲服務器廠商網站上申請免費的ssl證書,並下載下來,放到你的服務器裏,再配置nginx的配置文件,做個指向就OK了。

vim /etc/nginx/conf.d/halo.conf

halo.conf 配置文件內容修改如下,

server
{
        listen 443 ssl;
        server_name xxxx.com www.xxxx.com;
        ssl_certificate  /root/ssl/your-domain.pem;
        ssl_certificate_key /root/ssl/your-domain.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                proxy_buffer_size  128k;
                proxy_buffers   32 32k;
                proxy_busy_buffers_size 128k;
                proxy_pass http://127.0.0.1:8090;
        }
}
server
{
        listen 80;
        server_name xxxx.com www.xxxx.com;
        rewrite ^(.*)$ https://$host$1 permanent;
}

修改完成之後老規矩,繼續重新加載nginx配置

# 檢查配置是否有誤
sudo nginx -t
# 重載 Nginx 配置
sudo nginx -s reload

完事兒之後,你就可以用https訪問你的網站了。例如:https://www.example.com

3. Halo的官方鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章