一款基於SpringBoot的優秀開源博客系統:Halo

傳送門:Halo 官網html

我是小白,今年大一,剛剛脫離了數理化苦海的我,發現對學習計算機有着濃厚的興趣,學的過程當中發現了不少有意思的東西,好比剛剛接觸的開源操做系統 Linux,對於從小接觸 Windows 的我,覺得操做系統等於 Windows,Windows 就是惟一的操做系統java

同時解鎖了另外一個屬性就是「折騰」,喜歡去找開源的好用的軟件來替代正在使用的軟件,固然這個過程當中也讓我發現了很多很是實用的工具,好比作筆記用的 Typora,加密小電影用的 VeraCryptlinux

隨着整理的筆記愈來愈多,記錄的資料愈來愈多,就想找個地方與其餘人分享,需求是搭建屬於本身的博客系統nginx

固然如今優秀的開源博客系統有不少,選擇也不少,如 HexoVuePress 等,最後選擇了基於 SpringBoot 開發的 Halo,它的源碼也不是很複雜,可是代碼很是的規範,對於 Java 開發者,特別是 Java 初學者,有不少值得學習的地方docker

image-20210601175058401


做爲一個 SpringBoot 應用,Halo 的部署有多簡單呢,讓它運行起來只須要兩行命令:shell

這種方式運行的前提是機器配置好了 JDK 等必要環境vim

$ wget https://dl.halo.run/release/halo-1.4.8.jar
$ java -jar halo-1.4.8.jar
複製代碼

固然最方便的部署方式仍是 Dockercentos

$ docker pull halohub/halo:latest
$ docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
複製代碼

使用 halo 還有一個很是方便的地方,它的全部用戶自定義的配置、主題等東西都放在 ~/.halo 目錄裏,當你要遷移博客,只須要備份這個文件夾,從新運行上述命令,你的一切配置、附件、主題等都回來了,因此說遷移能力是很高的,後臺管理系統也提供了備份與恢復的功能,原理是同樣的瀏覽器


一些圖效果:bash

image-20210602203700229

image-20210603091646157


如何部署

推薦使用 Docker 的方式進行部署,簡單操做,方便快捷

除此以外Halo 還支持一鍵部署到 騰訊雲 CloudBase | Halo Documents,不過這個我沒有嘗試過,不作推薦,感興趣的同窗能夠本身嘗試用這種方式部署

Halo 做爲一個基於 SpringBoot 的動態博客系統,沒有服務器資源是無法跑起來的,像 Hexo、VuePress 這類靜態頁面型的博客系統,是能夠部署到 GitPage,GiteePage 等託管服務上的,不只沒有服務器的支出,也沒有運維的時間成本,因此具體怎麼選擇仍是要看我的


步驟

1. 服務器租賃

部署博客系統,首先須要一臺有外網 IP 的服務器,這樣別人才能訪問到你的博客

固然也有其餘選擇,好比部署在本機,而後打開內網穿透,再購買域名進行反向代理,別人也是能夠訪問到的,可是你的機器一關機就莫得了

能夠選擇的服務器有不少,華爲雲、騰訊雲、阿里雲都是能夠的,如何租賃和購買域名這裏就不贅述了

假設你已經有一臺雲服務器了,IP 是 1.2.3.4,而且經過 SSH 工具連上去了,順便推薦一款 Windows 上的 SSH 工具:Termius,若是你是 Mac/Linux,直接使用終端更方便


2. Docker 環境配置

不一樣的 Linux 發行系列的操做命令不太同樣,假設你購買的服務器運行的是 Centos7

必定要記得開放服務器的防火牆端口,Halo 默認運行在 8090,若是使用域名訪問,記得開放80,若是你要配置 Https 記得開發 443

若是在虛擬機上運行,開放端口與 SeLinux 的處理也是必不可少的,這二者都會致使服務啓動後沒法訪問頁面


添加軟件源並安裝 Docker

$ curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
$ yum install docker-ce
複製代碼

執行這兩條命令後就能夠正式部署了

$ docker pull halohub/halo:latest
$ docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
複製代碼

等待一段時間,等服務正式啓動完成就能夠訪問了

前面假設這臺服務器的外網 IP 是 1.2.3.4,那麼打開瀏覽器,輸入 1.2.3.4:8090 就能夠打開初始化頁面了,根據提示進行初始化後就能夠愉快的使用了


3. 配置自定義域名

假設購買的域名是 www.abc.com,此時要作的重要一步是域名解析,這一步是在 DNS 服務器裏面註冊你域名和 IP 的映射關係,當用戶使用瀏覽器訪問域名地址時,DNS 服務器會解析到實際的 IP 地址

教程傳送門 -> 域名解析設置


4. 設置反向代理

反向代理能夠選擇 NginxCaddy,這裏選擇使用 Nginx

安裝 && 啓動

$ yum install nginx
$ systemctl enable nginx
$ systemctl start nginx
複製代碼

添加自定義配置 vim /etc/nginx/conf.d/halo.conf

只須要修改註釋掉的兩行便可

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.abc.com;         # 本身購買的域名
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;    # 這個halo 就是上面 upstream 的值,其實是 http://127.0.0.1:8090
    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;
  }
}
複製代碼

也能夠把這一段直接加到 /etc/nginx/nginx.conf

image-20210603114317754


重啓 Nginx

$ systemctl restart nginx
複製代碼

訪問 www.abc.com 便可正常訪問 Halo


若是本文對你有幫助,或者對本文有疑惑、建議等,歡迎留言評論

相關文章
相關標籤/搜索