banner
低点回波

低点回波

京東雲伺服器+docker compose 部署Halo博客

準備#

京東雲輕量雲主機 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

image-20240729001843767

添加 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

image-20240729002026250

其實這裡我有點沒有搞明白這個邏輯,京東雲自己的文檔裡面說了 CentOS 的花使用 yarm 會自動換源,可以比較快地下載,但是不支持 ubuntu, 直接那個地址下 docker 就會報錯,我還換了個阿里源 docker, 問題是實際過程中 (上面這幅圖) 前四步全是京東 cloud 裡面下載的,只有最終那一步才是換的阿里雲,不過能成功就好~

配置 Docker 使用阿里雲鏡像源#

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

daemon.json 文件中添加以下內容 (裡面的網址去阿里雲官網搜容器鏡像服務 (aliyun.com),找到你對應的那個網址複製)

image-20240729003720212

{
  "registry-mirrors": ["https://<你的id號>.mirror.aliyuncs.com"]
}

image-20240729003924487

然後按 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

在這一步我出現了網路延遲問題.

image-20240729004607251

死活下載不了

這裡提供兩種方法

使用 xftp 上傳#

現在自己的電腦下好,再使用 xftp 上傳,並將上傳文件名改為 docker-compose, 注意路徑

image-20240729004741493

使用 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 文檔

  1. 在系統任意位置創建一個文件夾,此文檔以 ~/halo 為例。
mkdir ~/halo &&  cd ~/halo 
  1. 在用 docker-compose 拉取之前需要先創建一個 docker-compose.yaml 文件
    官網提供了三種實例
    1. 創建 Halo + PostgreSQL 的實例
    2. 創建 Halo + MySQL 的實例
    3. 僅創建 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數據庫平台名稱,支持 postgresqlmysqlh2
halo.external-url外部訪問鏈接,如果需要在公網訪問,需要配置為實際訪問地址

數據庫配置:

鏈接方式鏈接地址格式spring.sql.init.platform
PostgreSQLr2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}postgresql
MySQLr2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}mysql
MariaDBr2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}mariadb
H2 數據庫r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSEh2
  1. 啟動 Halo 服務

    docker-compose up -d
    

    這裡我再次出現了網路問題,阿里雲鏡像換源後也沒有用,雖然官方文檔在一開始就說,這個源是從他們自建的鏡像庫走的,

    image-20240729010125869

    可是我死活下載不下來,這裡感謝 1panel 的鏡像源,大家不要惡意使用,自從 6 月各大鏡像源被關以後,想找個好用的鏡像源真難 /(ㄒ o ㄒ)/~~, 感謝 1panel

跟之前同樣的操作

sudo nano /etc/docker/daemon.json

daemon.json 文件中換成以下內容

{
  "registry-mirrors": ["https://docker.1panel.live"]
}

如果有朋友換完之後還是不能用,我能想到的只有利用阿里雲的鏡像倉庫服務了,可以自建一個鏡像倉庫去下載你上傳好的 docker 鏡像

到這裡為止,博客就大功告成了,輸入 http://{你的ip}:8090/console 就可以訪問博客的後台了,對了!

很重要的一點不能忘記,在京東雲對應伺服器的頁面把防火牆的 8090 端口打開,否則訪問不了.

image-20240729010930265

進入後台,先註冊一個管理員賬號,就可以編輯博客主題,上傳文章了.

輸入 http://{你的ip}:8090/ 即為博客頁面.

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。