廢話不多說,直接上教程
- 想要了解更多有關halo部落格的資訊請通路官網:https://halo.run/
- 本教程以 CentOS 7.x 為例,配置并運作 Halo,其他 Linux 發行版大同小異。
環境要求
為了在使用過程中不出現意外的事故,給出下列推薦的配置,我的是centos7.3版本
- CentOS 7.x
- 512 MB 以上記憶體
在開始之前,最好先到域名服務商解析域名,設定 A 記錄并指向伺服器的 IP 位址,并確定已經正确解析以及沒有被工信部攔截(國内伺服器需備案),你可以在本地使用 Ping 指令檢查域名是否已經正确解析到了伺服器的 IP 位址。以友善在安裝過程中為域名配置 SSL 證書。
伺服器配置
更新軟體包
請確定伺服器的軟體包已經是最新的。
sudo yum update -y
複制
安裝 Java 運作環境
有關安裝java環境的可以通路我的 這篇文章:https://blog.csdn.net/qq_41684621/article/details/102934590
當然也可以按照halo官網裡的做法來安裝,我是環境是以前就部署過java web項目的,是以有關java的環境都安裝了。
最後驗證下:
java -version
複制
安裝 Halo
下載下傳配置檔案
考慮到部分使用者的需要,可能需要自定義比如端口等設定項,我們提供了公共的配置檔案,并且該配置檔案是完全獨立于安裝包的。當然,你也可以使用安裝包内的預設配置檔案,但是安裝包内的配置檔案是不可修改的。請注意:配置檔案的路徑為 ~/.halo/application.yaml。
# 下載下傳配置檔案到 ~/.halo 目錄
curl -o ~/.halo/application.yaml --create-dirs http://halo.ryanc.cc/config/application-template.yaml
複制
修改配置檔案
完成上一步操作,我們就可以自己配置 Halo 的運作端口,以及資料庫相關的配置了。
# 使用 Vim 工具修改配置檔案
vim ~/.halo/application.yaml
複制
打開之後我們可以看到
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:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
# username: root
# password: 123456
# H2 Database 的控制台相關配置,如果你使用的是 MySQL ,請注釋掉下方内容。
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
複制
MySQL 版本需 5.7 以上,我的雲伺服器上的mysql是5.6版本的,是以我這裡是直接預設選用h2資料庫,畢竟也就是存入少量的使用者資訊,不必麻煩又啟動一個mysql服務。
關于上述的配置詳情請去官網了解。
運作 Halo
Halo 的整個應用程式隻有一個 Jar 包,且不包含使用者的任何配置,它放在任何目錄都是可行的。需要注意的是,Halo 的整個額外檔案全部存放在 ~/.halo 目錄下,包括 application.yaml(使用者配置檔案),template/themes(主題目錄),upload(附件上傳目錄),halo.db.mv(資料庫檔案)。一定要保證 ~/.halo 的存在,你部落格的所有資料可都存在裡面。是以你完全不需要擔心安裝包的安危,它僅僅是個服務而已。
最新版本:
wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar
複制
目前我這個下載下傳連結是有用的,如有失效報錯,請去官網下載下傳最新版本。
如看到以下日志輸出,則代表啟動成功.
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
複制
上面的http://127.0.0.1:8090表示的是本地啟動時出現的,我在雲伺服器上啟動的時候是伺服器上的内網IP
以上的啟動僅僅為測試 Halo 是否可以正常運作,如果我們關閉 ssh 連接配接,Halo 也将被關閉。要想一直處于運作狀态,請繼續看下面的教程。
進階配置
上面我們已經完成了 Halo 的整個配置和安裝過程,接下來我們對其進行更完善的配置,比如:需要開機自啟?,更簡單的啟動方式?
實作以上功能我們隻需要新增一個配置檔案即可,也就是使用 Systemd 來完成這些工作。
# 下載下傳 Halo 官方的 halo.service 模闆
sudo curl -o /etc/systemd/system/halo.service --create-dirs http://halo.ryanc.cc/config/halo.service
複制
如有失效請去官網下載下傳
下載下傳完成之後,我們還需要對其進行修改。
# 修改 halo.service
sudo vim /etc/systemd/system/halo.service
複制
打開之後我們可以看到
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
複制
參數:
- Xms256m:為 JVM 啟動時配置設定的記憶體,請按照伺服器的記憶體做适當調整,512 M 記憶體的伺服器推薦設定為 128,1G 記憶體的伺服器推薦設定為 256,預設為 256。
- Xmx256m:為 JVM 運作過程中配置設定的最大記憶體,配置同上。
- JAR_PATH:Halo 安裝包的絕對路徑,例如 /www/wwwroot/halo-latest.jar,這裡就是剛才wget下載下傳halo-latest.jar的所在的路徑。
如果你不是按照上面的方法安裝的 JDK,請確定 /usr/bin/java 是正确無誤的。
# 修改 service 檔案之後需要重新整理 Systemd
sudo systemctl daemon-reload
# 使 Halo 開機自啟
sudo systemctl enable halo
# 啟動 Halo
sudo service halo start
# 重新開機 Halo
sudo service halo restart
# 停止 Halo
sudo service halo stop
# 檢視 Halo 的運作狀态
sudo service halo status
複制
完成以上操作即可通過 IP:端口 通路了。不過在此之前,最好先完成後續操作,我們還需要讓域名也可以通路到 Halo,請繼續看 配置域名通路。
配置域名通路
使用 Nginx 進行反向代理
安裝 Nginx:關于安裝nginx,可以通路我的這篇文章:https://blog.csdn.net/qq_41684621/article/details/102934590
也可以按照官網的方法來安裝。
配置 Nginx
由于之前安裝過nginx,我的伺服器上nginx所處的配置檔案在如下路徑:/usr/local/nginx/conf/nginx.conf 下,打開後直接添加如下内容到對應的server下:
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/;
}
}
複制
上述的example.com改為自己已經解析好了的域名即可
此時的proxy_pass http://127.0.0.1:8090/代表的是當有通路域名時,nginx會反向代理到主機的(伺服器)的8090上,是以這裡的127.0.0.1表示的是localhost的意思。
這個時候用域名的原因就是不需要每次通路時都要寫端口号了,如果沒有備案的域名,這裡的listen就要改為8090,example.com就要改為伺服器的ip位址(公網),也後面的代理也不需要了。如下:
server {
listen 8090;
server_name IP;
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;
}
}
複制
因為如果是域名的話預設的ip端口都是80,是以通路的時候就不需要多此一舉了寫上端口号了,而一個主機公網IP可以解析出不同端口号,是以想監聽哪個端口号就寫哪個。而且二級域名就是利用了這個原理,把一台主機的IP監聽的80端口給分成了不同監聽對象的小子產品!
修改nginx配置檔案完成之後:
# 檢查配置是否有誤
sudo nginx -t
# 重載 Nginx 配置
sudo nginx -s reload
複制
關于配置 SSL 證書,請通路官網了解詳情。
到這裡,關于 Nginx 的配置也就完成了,現在你可以通路一下自己的域名,并進行 Halo 的初始化了。