準備#
京東雲輕量雲主機 2 核 2G 3M 1 年費用 58 元
域名三年費用 76 元
SSL 單域名證書 1 年 30 元(我是哈 per,其實可不用)
伺服器的選擇#
其他地區伺服器:如果有朋友直接該類伺服器進行搭建的話,那自然是方便的,像網路什麼的都不用擔心。如果是學生的話可以考慮申請 Github student package。申請完後使用 Azure100 刀或者是 Ocean digital200 刀代金券可以使用,總的來說還是很划算的。但是 Github student package 並不好申請,我之前折騰了一個星期,被拒絕了三四次,才成功 (┬┬﹏┬┬)。
中國大陸地區伺服器:我對比了好幾個雲服務廠商的,現在這個時期已經過去了之前的一個優惠時期了,看騰訊雲和阿里雲的雲伺服器其實都不便宜。(阿里雲有一個99 元 / 年的2G2 核雲伺服器,可以續三年,這個優惠還可以)目前來說,就我搜到的國內的雲服務優惠好像就京東雲比較香了
本來我看京東雲網站裡有好幾款,也很眼饞,第一想法是想買下面這類型的:
- 輕量雲主機 2 核 4G 5M 1 年 165 元
- 輕量雲主機 2 核 4G 5M 3 年 618 元
請原諒一個擁有倉鼠囤積症的人~,只不過最終由於囊中羞澀再加上第一次買雲伺服器心裡沒有底,所以就想着先入 58 元 / 年的 2G2 核輕量雲伺服器試一試。
其他#
Ubuntu20.04LTS 系統 (如果是京東雲的,你可以考慮用 CentOS 可能會更方便不容易出網路問題)
Xshell(用於遠程控制雲伺服器,我覺得這個會方便一些,京東雲本身提供 Web Terminal登錄
和 VNC登錄
, 但是因為是網頁 Tab 上我總覺得用著不順,如果嫌麻煩,可以不裝~)
安裝 docker 和 docker-compose#
安裝 Docker Compose 並不一定要先安裝 Docker,但通常情況下,Docker Compose 是用來管理和部署 Docker 容器應用的工具,所以推薦在使用 Docker Compose 之前已經安裝了 Docker。
Docker Compose 基於 Docker 構建,它簡化了在本地或生產環境中管理多個相關服務(如數據庫、Web 伺服器等)的方式,通過一個 YAML 文件定義和運行這些服務。如果你計劃使用 Docker Compose 創建和管理容器化應用,那麼最好先確保 Docker 已經在系統上安裝並且運行正常。
更新系統並安裝依賴包#
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加 Docker 的 GPG 密鑰到 trusted. gpg. d 目錄#
(這裡直接添加的話我無法成功,網路超時,所以換了個阿里雲的源)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg > /dev/null
添加 Docker 倉庫#
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新包列表並安裝 Docker#
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
其實這裡我有點沒有搞明白這個邏輯,京東雲自己的文檔裡面說了 CentOS
的花使用 yarm
會自動換源,可以比較快地下載,但是不支持 ubuntu, 直接那個地址下 docker 就會報錯,我還換了個阿里源 docker, 問題是實際過程中 (上面這幅圖) 前四步全是京東 cloud 裡面下載的,只有最終那一步才是換的阿里雲,不過能成功就好~
配置 Docker 使用阿里雲鏡像源#
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
在 daemon.json
文件中添加以下內容 (裡面的網址去阿里雲官網搜容器鏡像服務 (aliyun.com),找到你對應的那個網址複製)
{
"registry-mirrors": ["https://<你的id號>.mirror.aliyuncs.com"]
}
然後按 ctrl
+ x
退出,yes 保存,回車保存
重啟 Docker 服務#
sudo systemctl daemon-reload
sudo systemctl restart docker
安裝 Docker Compose#
這裡我耗費了很長時間
正常流程,如下
更新軟件包列表#
首先,確保你的軟件包列表是最新的:
sudo apt update
安裝 Docker#
如果你還沒有安裝 Docker,可以使用以下命令安裝:
sudo apt install docker.io
啟動並設置 Docker 在開機時啟動:
sudo systemctl start docker
sudo systemctl enable docker
下載 Docker Compose#
使用以下命令下載最新版本的 Docker Compose。你可以在 GitHub Releases 頁面找到最新的版本號,並替換 v2.10.2
為最新的版本號:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
在這一步我出現了網路延遲問題.
死活下載不了
這裡提供兩種方法
使用 xftp 上傳#
現在自己的電腦下好,再使用 xftp 上傳,並將上傳文件名改為 docker-compose, 注意路徑
使用 ghproxy 代理加速#
本文完成時,這個代理可用 https://mirror.ghproxy.com/
,只需在後面加上需要下載的 github
鏈接
curl -SL https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
賦予執行權限#
下載完成後,需要給文件賦予可執行權限:
sudo chmod +x /usr/local/bin/docker-compose
驗證安裝#
檢查 Docker Compose 是否安裝成功,查看版本號:
docker-compose --version
Docker Compose 搭建 Halo 博客#
參考官方文檔使用 Docker Compose 部署 | Halo 文檔
- 在系統任意位置創建一個文件夾,此文檔以
~/halo
為例。
mkdir ~/halo && cd ~/halo
- 在用 docker-compose 拉取之前需要先創建一個 docker-compose.yaml 文件
官網提供了三種實例- 創建 Halo + PostgreSQL 的實例
- 創建 Halo + MySQL 的實例
- 僅創建 Halo 實例(使用默認的 H2 數據庫)官方不推薦在生產環境使用默認的 H2 數據庫
本文採用第一種 Halo + PostgreSQL
路徑: ~/halo/docker-compose.yaml
nano ~/halo/docker-compose.yaml
輸入
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.17
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
#
#
#這裡要修改哦
# PostgreSQL 的密碼,請保證與下方 POSTGRES_PASSWORD 的變量值一致。
- --spring.r2dbc.password=openpostgresql #password密碼改一下,不要跟官方一樣,其他什麼都行,不然潛在危險
- --spring.sql.init.platform=postgresql
# 外部訪問地址,請根據實際需要修改,根據你購買主機贈送你的ip地址進行修改
# 比如我的是116.X.X.241,我下面這句話就改成- --halo.external-url=http://116.X.X.241:8090/
- --halo.external-url=http://localhost:8090/
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql #這裡改成和上面spring.r2dbc.password一樣的
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
官方文檔出有寫出具體的參數解釋
參數名 | 描述 |
---|---|
spring.r2dbc.url | 數據庫連接地址,詳細可查閱下方的 數據庫配置 |
spring.r2dbc.username | 數據庫用戶名 |
spring.r2dbc.password | 數據庫密碼 |
spring.sql.init.platform | 數據庫平台名稱,支持 postgresql 、mysql 、h2 |
halo.external-url | 外部訪問鏈接,如果需要在公網訪問,需要配置為實際訪問地址 |
數據庫配置:
鏈接方式 | 鏈接地址格式 | spring.sql.init.platform |
---|---|---|
PostgreSQL | r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE} | postgresql |
MySQL | r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE} | mysql |
MariaDB | r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE} | mariadb |
H2 數據庫 | r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE | h2 |
-
啟動 Halo 服務
docker-compose up -d
這裡我再次出現了網路問題,阿里雲鏡像換源後也沒有用,雖然官方文檔在一開始就說,這個源是從他們自建的鏡像庫走的,
可是我死活下載不下來,這裡感謝 1panel 的鏡像源,大家不要惡意使用,自從 6 月各大鏡像源被關以後,想找個好用的鏡像源真難 /(ㄒ o ㄒ)/~~, 感謝 1panel
跟之前同樣的操作
sudo nano /etc/docker/daemon.json
在 daemon.json
文件中換成以下內容
{
"registry-mirrors": ["https://docker.1panel.live"]
}
如果有朋友換完之後還是不能用,我能想到的只有利用阿里雲的鏡像倉庫服務了,可以自建一個鏡像倉庫去下載你上傳好的 docker 鏡像
到這裡為止,博客就大功告成了,輸入 http://{你的ip}:8090/console
就可以訪問博客的後台了,對了!
很重要的一點不能忘記,在京東雲對應伺服器的頁面把防火牆的 8090 端口打開,否則訪問不了.
進入後台,先註冊一個管理員賬號,就可以編輯博客主題,上傳文章了.
輸入 http://{你的ip}:8090/
即為博客頁面.