前言
過年期間實習公司不必996了,刷刷博客園,看到了一個名字特有趣,“敖丙”。人如其名,熱情洋溢、敢破敢立。翻到他的《程序人生》系列,有一篇“如何從0到1搭建一個可以外網訪問的項目”。呀!聽起來怎么這么適合我這種哪方面都是0的小白呢!
站在巨人的肩上,搭建很容易。如果想要深究halo的技術,那......就搭建好了再深究叭!
halo代碼已開源,源碼里可以找到所有東西,搭建博客僅需以下前提:
- Linux 基礎
- 已配好服務器CentOS 7.X 512MB以上內存
- H2數據庫基礎
- 工具:IntelliJ IDEA(用來查看源碼,但本文內容用不到),xshell ,文件傳輸工具iFt
服務器配置
# 確保服務器的軟件包已經是最新的
sudo yum update -y
# 檢查是否已經安裝Java運行環境
java -version
# 若未安裝則執行
sudo yum install java-1.8.0-openjdk -y
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
# 啟動測試
java -jar halo-latest.jar
現在已經可以看到成果了~
進入瀏覽器,輸入服務器ip:8090,回車。按照步驟,注冊,登錄進入后台,已經貼心地為您准備好了1篇Hello,Halo的文章。



但此時,如果我們關閉 ssh 連接,Halo 也將被關閉。要想一直處於運行狀態,繼續配置。。。
開機自啟
# 下載 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
將ExecStart命令后面的JAR_PATH修改成上面下載的Halo安裝包的絕對路徑。(systemd 中的所有路徑均要寫為絕對路徑,且~
在 systemd 中也是無法被識別的,所以也不能寫成類似 ~/halo-latest.jar
這種路徑。)
# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload
# 使 Halo 開機自啟
sudo systemctl enable halo
# 查看 Halo 的運行狀態
sudo service halo status
現在可以安心的捯飭自己的博客了。。。
Some Tips
-
多次啟動運行
設置了【開機自啟】后,已開始靜默運行Halo了,若再執行java -jar halo-latest.jar或者halo.service中的ExecStart命令,會拋出異常。
org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-196]
雖然xshell報錯,但是對博客后台及前台展示均無影響。。我就忽略了。。。
解決方案是kill之前已經啟動的halo。
-
【開機自啟】步驟中curl命令顯示Failed connect to halo.ryanc.cc:80; Connection timed out
不知道為什么下載不下來,是不是我用公司內網的原因。。。
解決措施:在windows下瀏覽器進入http://halo.ryanc.cc/config/halo.service下載,在服務器中用iFt工具執行ft get把halo.service從PC上傳到服務器指定目錄。
-
后台入口
在前台的展示頁面費老大勁沒找到后台入口,現在的進入方法是直接鏈接訪問:ip:8090/admin
-
域名訪問
嘿嘿,作者沒有域名,也就不放自己的博客鏈接啦,有配置需求的同志參考這里配置域名訪問
-
idea導入halo報springBoot2.1.3.RELEASE找不到
可能是依賴沒有成功下載。Halo 使用的是 gradle 構建的,所以建議更新 IDEA 或者使用最新的 IDEA 社區版。
-
Halo不支持ie10以下瀏覽器。
學習是一條令人時而喜極若狂、時而郁郁寡歡的道路”。部署的時候肯定有不順利的地方,但是你慢慢摸索的過程就是你學習收獲的過程。 -----------敖丙
參考鏈接: