基於阿里雲、七牛雲、寶塔皮膚,從零開始用Halo搭建個人部落格網站

舟清颺發表於2024-04-13

目錄

目錄
  • 目錄
  • 購買伺服器
    • 環境要求
      • 硬體配置
        • CPU
        • 記憶體
        • 磁碟
        • 網路
      • 軟體環境
        • JRE(Java Runtime Environment)
        • MySQL(可選)
        • Web 伺服器(可選)
        • Wget(可選)
        • VIM(可選)
    • 瀏覽器支援
    • 名詞解釋
      • ~(符號)
      • 執行包
      • 工作目錄
  • 購買域名
  • 伺服器安裝配置
    • 遠端連線
      • 阿里雲網頁連線
      • Xshell程式連線
  • 部落格安裝
    • 進行Halo的安裝準備
    • 正式安裝Halo
    • 作為服務執行
    • Halo安裝嚮導
    • 安裝寶塔皮膚
    • 域名解析
    • nginx反向代理
    • SSL認證
    • 參考網址
  • 圖床搭建
    • 建立圖床
    • 管理圖床PicGo
  • 其它
  • 阿里雲配置二級域名
    • 工具/原料
    • 方法/步驟
  • SSL證書
  • 新增二級域名及註冊SSL使用https訪問

購買伺服器

官方硬體需求: https://docs.halo.run/getting-started/prepare/

環境要求

這裡將講述執行 Halo 所要求的一些軟硬體的配置,我們建議您在執行或者部署之前先瀏覽一遍此頁面。

硬體配置

提示

如果您要使用伺服器進行部署 Halo,您需要注意的是,Halo 目前不支援市面上的雲虛擬主機,請使用雲伺服器或者 VPS。

CPU

無特別要求。目前我們的 Docker 映象 也已經支援多平臺。

記憶體

為了獲得更好的體驗,我們建議至少配置 1G 的 RAM。

磁碟

無特別要求,理論上如果不大量在伺服器上傳附件,Halo 對磁碟的容量要求並不是很高。但我們推薦最好使用 SSD 硬碟的伺服器,能更快的執行 Halo。

網路

Halo 目前必須在外網暢通的情況下使用,否則會導致頁面異常。

軟體環境

Halo 理論上可以執行在任何支援 Java 的平臺。

JRE(Java Runtime Environment)

必須在執行環境安裝好 JRE,這是執行 Halo 所要求的的最低軟體環境要求。如果您使用 Docker 執行 Halo,可忽略此要求。

資訊

從 1.4.3 起,版本要求為 11 以上的版本。1.4.3 以下需要 1.8 以上的版本。

MySQL(可選)

這並不是 Halo 必須依賴的,Halo 預設使用自帶的 H2 Database,無需單獨安裝。如果 H2 Database 不能滿足你的要求,您需要在系統內安裝並執行好 MySQL。

具體要求:

  1. 版本:5.7 +
  2. 字符集(Character Set):utf8mb4
  3. 排序規則(Collate):utf8mb4_bin
  4. 儲存引擎:InnoDB

綜上,建議建立資料庫採用下面的命令:

create database halodb character set utf8mb4 collate utf8mb4_bin;

Web 伺服器(可選)

如果您部署在生產環境,那麼你很可能需要進行域名繫結,這時候我們推薦使用諸如 NginxCaddy 之類的 Web 伺服器進行反向代理。但需要注意的是,目前 Halo 不支援代理到子目錄(如:halo.run/blog)。

Wget(可選)

後續的文件中,我們會使用 wget 為例,用於下載所需要的檔案,所以請確保伺服器已經安裝好了這個軟體包。當然,下載檔案不限制工具,如果你對其他工具熟悉,可以忽略。

VIM(可選)

後續的文件中,我們會使用 vim 為例,用於修改一些必要的配置檔案,所以同樣請確保伺服器已經安裝了這個軟體包。當前,修改文件也不限制工具,如果你對其他編輯軟體熟悉,也可以忽略。

瀏覽器支援

  1. 使用者前臺:視主題所支援的情況而定,由於目前的評論模組使用了 Vuejs 開發,所以在 Vuejs 不支援的某些瀏覽器中無法正常顯示評論區域。
  2. 管理後臺:支援目前常見的現代瀏覽器,具體視 Vuejs 框架的支援情況而定。

名詞解釋

這裡將列出後續文件中一些和 Halo 相關的名詞含義。

~(符號)

代表當前系統下的 使用者目錄

執行包

指 Halo 構建所產生的 Jar 包,字尾為 .jar。可能與其他網站應用有所區別的是,Halo 僅僅只有這一個檔案。而且所有資料統一儲存在下面所說的 工作目錄

工作目錄

指 Halo 所依賴的工作目錄,在 Halo 執行的時候會在系統當前使用者目錄下產生一個 .halo 的資料夾,絕對路徑為 ~/.halo。由於這個工作目錄是固定的,所以上面所說的 執行包不限制所存放的位置,裡面通常包含下列目錄或檔案:

  1. db:存放 H2 Database 的物理檔案,如果您使用 MySQL 資料庫,那麼不會存在這個目錄。
  2. templates/themes:裡面包含使用者所下載的主題。
  3. static:相當於網站的根目錄。
  4. logs:執行日誌目錄。
  5. upload:附件目錄。
  6. application.yaml:配置檔案。

在阿里雲官網點選價格計算器

image

地域可以購買離自己進一點的(訪問起來會快一點), 如果伺服器在大陸內, 最後進行域名繫結的時候需要進行備案, 選用在香港的伺服器則不用.

購買域名

建議在部落格搭建完畢後再進行備案, 在下文的 nginx反向代理 中需要用到域名, 開啟阿里雲域名購買頁面, 輸入你想買的域名名稱, 建議先去了解一下域名型別及其價格, 有些域名第一年便宜但續費很貴, 建議用英文域名.

image

然後按步驟購買, 去ICP稽核備案, 具體看阿里雲文件, 備案一定要去網上查一下技巧, 否則不好透過.

阿里雲備案

image

image

公安聯網備案: 網址

image

image

image

image

image

伺服器安裝配置

遠端連線

購買完畢以後進入控制檯: 阿里雲控制檯

在左邊選雲伺服器ECS

image

檢視例項, 記住自己的公網IP和私網IP, 登入名稱和登入密碼

image

若是系統配置不對, 可以停止主機, 然後重新載入映象( 重灌系統) :

image

image

點選重置例項密碼, 然後我們修改密碼: 必須記下使用者名稱root和例項密碼

image

配置安全組

image

進入到安全組列表, 點選右側配置規則

image

選擇入方向, 點選手動新增, 在新的規則中輸入如圖內容, 8090埠為halo預設埠, 8888為寶塔皮膚預設埠, 443為SSL埠, 80為網站預設埠.

image

阿里雲網頁連線

選擇例項右邊的遠端連線

image

輸入管理員賬戶, 點選確定連線:

image

等待一會, SSH遠端連線Linux終端:

image

Xshell程式連線

推薦使用Xshell或類似軟體連線, 以Xshell為例:

官網下載Xshell7 或果核剝殼下載

安裝完畢後開啟Xshell.

Xmanager Power Suite 7是一款功能強大、體積小巧的遠端管理軟體,可以讓使用者Windows環境下瀏覽遠端X視窗系統的工具,方便使用者在windows平臺下連線遠端伺服器進行管理操作,支援一鍵連線到unix、linux伺服器系統進行檔案的管理操作,提供強大的回話管理控制檯和易於使用的X應用程式啟動器,包含了常規XDMCP的所有好處,可以共享X應用程式,大幅度提高安全性,使用者透過Xmanager Power Suite 7可以把遠端的UNIX/Linux桌面環境無縫地匯入到自己的Windows PC,即使使用者的電腦是開啟防火牆和安全軟體的,使用者也能透過SSH協議安全的執行遠端的X應用程式。可以透過Xcongfig工具設定多個Xmanager設定,同時還支援多使用者Windows終端環境的執行,支援多個IP地址同時線上,支援多視窗下的Windows列印等,還有使用者可以在xmanager介面上同時啟動多個會話,也可以建立各主機的快捷圖示。透過xmanager 7附屬下的Xstart可以在使用者PC執行遠端X應用程式,登陸遠端主機時支援SSH、TELNET、RLOGIN、REXEC、RSH和LOCAL協議,並且可以在本機輕鬆執行遠端主機命令,可以大大地提高管理人員的效率。利用Xstart可以在使用者的Windows PC非常輕鬆的執行遠端主機的命令,就是這麼簡單和任性。該軟體廣泛用於各種領域的工作,包括大型工藝與半導體和伺服器管理設計的IDC(網際網路資料中心),大學和公司的伺服器管理員與想要透過網際網路連線到遠端主機的個人使用者是這個產品常用群體。

先檢查網路環境, ping一下公網IP:

image

連線伺服器:

檔案> 開啟

image

新建會話> 驗證伺服器使用者名稱

image

image

image

image

image

image

若配置後沒有生效, 可以關閉頁面後重新開啟軟體進入.

開始檢查:

uname [-amnrsv][--help][--version]
引數說明:
-a或--all  顯示全部的資訊。
-m或--machine  顯示電腦型別。
-n或--nodename  顯示在網路上的主機名稱。
-r或--release  顯示作業系統的發行編號。
-s或--sysname  顯示作業系統名稱。
-v  顯示作業系統的版本。
--help  顯示幫助。
--version  顯示版本資訊。

檢視引數:

uname -a

uname -n

image

檢視防火牆狀態:預設關閉狀態

iptables -L -n

image

檢視是否能夠上網:

ping www.baidu.com 按Ctrl+C可以終止

image

完畢.

部落格安裝

進行Halo的安裝準備

根據官方文件安裝:https://docs.halo.run/getting-started/install/linux/

這裡依照官方文件, 進行安裝的指導.

  1. 對系統升級

    yum -y update
    

直到末尾出現complete!字樣即可.

yum 是一個互動式的、基於 rpm 的包管理器,是一種聯網安裝軟體的方式。它可以安裝軟體、解除安裝軟體、查詢軟體、更新軟體以及系統、自動解決rpm包依賴問題。

  1. CentOS進行java環境的安裝, 輸入程式碼後回車. 中途會詢問是否安裝, 回覆y即可, 安裝成功後, 會顯示success等字樣

    sudo yum install java-11-openjdk -y
    
  2. 檢查Java版本

    java -version
    

    如果輸出以下類似內容即代表成功

    openjdk version "11.0.10" 2021-01-19 LTS
    OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS)
    OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode, sharing)
    

正式安裝Halo

  1. 建立新的系統使用者

資訊

我們不推薦直接使用系統 root 使用者來執行 Halo。如果您需要直接使用 root 使用者,請跳過這一步。

建立一個名為 halo 的使用者(名字可以隨意)

useradd -m halo

給予 sudo 許可權

usermod -aG wheel halo

為 halo 使用者建立密碼

passwd halo

登入到 halo 賬戶

su - halo
  1. 建立存放 執行包 的目錄,這裡以 ~/app 為例
mkdir ~/app && cd ~/app
  1. 下載執行包
wget https://dl.halo.run/release/halo-1.5.4.jar -O halo.jar

資訊

如果下載速度不理想,可以 在這裡 選擇其他下載地址。

  1. 建立 工作目錄
mkdir ~/.halo && cd ~/.halo
  1. 下載示例配置檔案到 工作目錄
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml 
  1. 編輯配置檔案,配置資料庫或者埠等,如需配置請參考 配置參考

    [補充: 這一步一般不需要改動, 預設即可, 在該頁面輸入 :wq 即可退出]

vim application.yaml
  1. 測試執行 Halo
cd ~/app && java -jar halo.jar
  1. 如看到類似以下日誌輸出,則代表啟動成功。

    [補充: 成功啟動後, 輸入Ctrl+C 即可退出]

run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
run.halo.app.listener.StartedListener    : Halo admin started at   http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener    : Halo has started successfully!

開啟 http://ip:埠號 即可看到安裝引導介面。

資訊

如測試啟動正常,請繼續看作為服務執行部分,第 8 步僅僅作為測試。當你關閉 ssh 連線之後,服務會停止。你可使用 CTRL+C 停止執行測試程序。

提示

如果需要配置域名訪問,建議先配置好反向代理以及域名解析再進行初始化。如果透過 http://ip: 埠號 的形式無法訪問,請到伺服器廠商後臺將執行的埠號新增到安全組,如果伺服器使用了 Linux 皮膚,請檢查此 Linux 皮膚是否有還有安全組配置,需要同樣將埠號新增到安全組。

作為服務執行

  1. 退出 halo 賬戶,登入到 root 賬戶

如果當前就是 root 賬戶,請略過此步驟。

exit
  1. 下載 Halo 官方的 halo.service 模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
  1. 修改 halo.service
vim /etc/systemd/system/halo.service
  1. 修改配置

    [補充: 進入vim編輯模式後, 點選鍵盤上的i進入插入模式, 即可修改配置檔案, 點選鍵盤上的ESC即可退出插入模式, 輸入:wq退出配置檔案. ]

  • YOUR_JAR_PATH:Halo 執行包的絕對路徑,例如 /home/halo/app/halo.jar,注意:此路徑不支援 ~ 符號。
  • USER:執行 Halo 的系統使用者,如果有按照上方教程建立新的使用者來執行 Halo,修改為你建立的使用者名稱稱即可。反之請刪除 User=USER
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=halo      這裡是User=你建立的使用者名稱
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

提示

請確保 /usr/bin/java 是正確無誤的。建議將 ExecStart 中的命令複製出來執行一下,保證命令有效。

  1. 重新載入 systemd
systemctl daemon-reload
  1. 執行服務
systemctl start halo
  1. 在系統啟動時啟動服務
systemctl enable halo

您可以檢視服務日誌檢查啟動狀態

journalctl -n 20 -u halo

當全部完成後, 開啟瀏覽器, 在位址列輸入公網ip:埠的方式來訪問你的網站.

Halo安裝嚮導

image

安裝寶塔皮膚

在終端中輸入下面的命令, 返回root根目錄下.

cd ~

安裝寶塔皮膚, Centos, 具體可以去官網檢視, https://www.bt.cn/bbs/thread-19376-1-1.html

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安裝完成後, console上會出現你的伺服器寶塔皮膚的訪問地址, 賬號和密碼. 必須記下來.

如果忘記了可以在SSH中輸入bt default重新檢視

image

開啟瀏覽器, 在位址列輸入公網ip:8888的方式來訪問寶塔皮膚, 輸入剛才記下來的寶塔賬號密碼進入.

首次進入寶塔皮膚會有軟體的推薦安裝, 這個直接關掉, 後面可以從軟體商城中自行安裝nginx.

點選左側選單欄的安全, 點開後可以看到防火牆, 在防火牆中依次放行上面在阿里雲伺服器中已經放行過的埠:

image

8090埠沒有預設的放行, 安裝好寶塔皮膚後, 若如果沒有再次去放行則, 不能透過ip:埠的方式去訪問部落格.

域名解析

開啟阿里雲域名控制檯, 選擇對應域名解析

image

image

然後等待半個小時以上, 等待DNS伺服器更新.

我們解析完成後, 可以在cmd中ping我們的域名, 如果ping通則說明解析成功, 剛解析完會有一定的延遲,過一會應該能ping通, 一般等待半小時以上.

nginx反向代理

也可以使用 Caddy 進行反向代理, Caddy 是一款使用 Go 語言開發的 Web 伺服器, 其配置更為簡潔,並可以自動申請及配置 SSL 證書.

這一步需要有備案好的域名!

在左側選單欄中選擇軟體商店> 搜尋nginx> 選擇快速安裝> 等待安裝完畢.

image

等待nginx安裝完畢後, 點選左側網站> 點選新增站點, 新增你的站點.
image

這時我們的網站管理中就會多出我們剛才新增的站點, 我們選擇該站點點選設定, 可以看到下面得到介面.

image

同樣的方法再新增一個 www.你的域名 ,www開頭的為一級域名, 即可.

效果為:

image

繼續在寶塔皮膚, 網站中, 點選配置檔案, 開始進行nginx的配置. 官方文件:https://docs.halo.run/install/bt-panel

image

1.首先在根節點下新增以下程式碼(根節點與Server節點並列,新增根節點即在Server外新增)

upstream halo {
    server 127.0.0.1:8090;
}

這裡8090為halo預設埠,如果前面有改過埠號,則改為修改過的埠號。

  1. 在55行左右找到名為 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    子節點, 將下面程式碼插入到該子節點中
proxy_pass http://halo;

image

3.在63行左右找到名為location ~ .*\.(js|css)?$的子節點
將一下程式碼插入到該子節點中

proxy_pass http://halo;

image

4.將下面的內容插入到第69行後面(即在Server內新增一個名為location /的子節點,與上述兩個節點並列)

   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://halo;
    }

image

注意在78行(最下方一行,不一定是78)還有一個反大括號。

點選儲存, 配置完成, 等待一段時間的延遲後, 可以透過域名訪問部落格了, 如果不能訪問可以嘗試透過寶塔皮膚重啟nginx.

注:如果我們訪問我們的部落格, 出現css沒有的情況有可能是在我們的部落格後臺->系統->部落格設定中的部落格地址沒有相應的修改成我們的域名, 可以修改為[http://+域名的格式]

SSL認證

為部落格增加SSL認證, 能夠讓其更加安全, 在更多瀏覽器上認可, 還有圖床配置.

image

建議使用Lets Encrypt, 使用寶塔SSL會比較慢, 申請一種即可.

注:如果我們訪問我們的部落格,出現css沒有的情況有可能是在我們的部落格後臺->系統->部落格設定中的部落格地址沒有相應的修改成我們的域名。可以修改為[https://+域名的格式]

注: 申請SSL認證必須得等域名稽核透過後確保能夠透過域名訪問我們的部落格後才能申請, 否則會申請失敗.

參考網址

  1. Halo 官網
  2. docs halo配置
  3. Halo官方搭建檔案
  4. 影片搭建解坑
  5. 參考搭建部落格筆記
  6. 手把手教學使用Halo搭建自己的部落格網站
  7. Sakura主題官方部落格
  8. Halo - Sakura主題地址

Halo

  • 官網:https://halo.run
  • 文件:https://docs.halo.run
  • 社群:https://bbs.halo.run
  • 主題倉庫:https://halo.run/themes.html
  • 開源地址:https://github.com/halo-dev/halo

圖床搭建

建立圖床

部落格搭建後, 可以用站長工具ping一下, https://ping.chinaz.com/

圖片在阿里雲例項中, 載入緩慢, 應該另外搭建圖床, 推薦用七牛雲, 有免費空間和流量, 具體看七牛雲官網.

註冊七牛雲賬號後開始!

image

image

進入七牛雲控制檯

根據官方文件完成建立.

若部落格開啟了https, 圖床也要開啟https,否則部分瀏覽器圖片無法開啟.

image

image

在空間管理> 空間設定中

image

管理圖床PicGo

下載PicGO: 連結

具體可以去網上檢視教程. 例如 使用PicGo配置七牛雲圖床(圖文步驟詳細)

image

image

若覺得上傳前重新命名彈窗太麻煩了, 可以關閉, 沒什麼影響.

image

到了這裡, 部落格系統就全部搭建完畢了, 開始你的部落格生涯吧!

其它

網上參考文章節選:

阿里雲配置二級域名

大概流程是透過阿里雲的一級域名,建立一個二級域名解析;在解析伺服器上設定繫結解析好的二級域名。

工具/原料

  • 阿里雲後臺
  • 已經申請阿里雲域名(已備案)
  • 解析伺服器

方法/步驟

登入->控制檯->域名,開啟域名列表

image

image

image

1、點選解析後進入解析設定,在這裡可以定義二級域名。

2、如果二級域名指向是一個解析伺服器,請在記錄型別選擇CNAME記錄。如果是一個網址,則選擇隱性URL或顯性URL ,區別在於轉過去之後位址列內的地址變或是不變。如果不想顯示實際地址,建議用隱性。

在這裡,由於我指向一個解析伺服器,所以使用CNAME記錄

3、記錄值,是指要轉向的地址,也就是實際地址。

image

1、如果你是轉到一個網址,那到此就結束了。幾分鐘之後二級域名就起效了。

2、如果你是轉到一個解析伺服器,還需要對方解析伺服器上建上這個二級域名的連結。

image

SSL證書

新增二級域名及註冊SSL使用https訪問

背景:開發了款小程式要部署,發現小程式只支援https的請求。。。

image

So,原來的域名已經給Web端繫結且在正式使用中,

百度後發現小程式也支援二級域名,於是便想的在原來域名下開一個二級域名給小程式使用,這種場景也是比較合理的,

一般web使用 www.abc.com 移動端/小程式等則使用m.abc.com等等方式

域名使用的阿里雲註冊的

進入阿里雲控制檯,找到域名服務這塊,找到註冊的域名

點選解析設定,參考說明,這樣配置一個 xxx.abc.com的二級域名

解析設定,配置好了二級域名的地址及 記錄值(雲伺服器的IP地址)這樣就實現了 域名和IP的繫結

其他的:域名註冊,備案等都有很詳盡的參考文件,這裡不再贅述

接下來我們還需要給域名註冊一個SSL這樣才能開啟https的訪問

在阿里雲例項中找到 SSL證書 這一項,點選 購買證書

開始不知道可以有免費證書,一看價格還挺貴的,練手專案等花幾千塊錢肯定划不來。。。

百度看到有說有免費的證書可以使用,如下圖,需要選擇免費型 DV SSL

當然如果是正式專案等建議還是買付費版的

相關文章