天天看點

雲服務上搭建halo部落格

廢話不多說,直接上教程
  • 想要了解更多有關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 的初始化了。