banner
低点回波

低点回波

京东クラウドサーバー+docker composeを使用したHaloブログのデプロイ

準備#

京東雲軽量云ホスト 2 核 2G 3M 1 年費用 58 元

ドメイン三年費用 76 元

SSL 単一ドメイン証明書 1 年 30 元(私はハ per、実際には不要です)

サーバーの選択#

他の地域のサーバー:もし友達が直接このようなサーバーを構築する場合、自然に便利です。ネットワークなど心配する必要はありません。学生の場合は、Github 学生パッケージの申請を考慮できます。申請後、Azure100 ドルまたは Ocean digital200 ドルのクーポンを使用できます。全体的に見て、かなりお得です。しかし、Github 学生パッケージは申請が難しく、私は以前一週間も試行錯誤し、三四回拒否されてからやっと成功しました (┬┬﹏┬┬)。

中国本土地域のサーバー:私はいくつかのクラウドサービスプロバイダーを比較しましたが、今の時期は以前の割引期間が過ぎてしまいました。腾讯云阿里云のクラウドサーバーは実際にはあまり安くありません。(阿里云には99 元 / 年2G2 核クラウドサーバーがあり、三年延長できます。この割引はまだ良いです。)現在のところ、私が見つけた国内のクラウドサービスの割引は、京東雲が比較的魅力的なようです。

元々、私は京東雲のウェブサイトでいくつかのプランを見て、非常に魅力的に思いました。最初の考えは、以下のタイプを購入したいというものでした:

  • 軽量云ホスト 2 核 4G 5M 1 年 165 元
  • 軽量云ホスト 2 核 4G 5M 3 年 618 元

倉庫症候群を持つ人をお許しください~、結局、財布が寂しい上に、初めてクラウドサーバーを購入するので心配だったので、まずは 58 元 / 年の 2G2 核軽量云ホストを試してみることにしました。

その他#

Ubuntu20.04LTS システム(もし京東雲のものであれば、CentOS を使用することを検討すると、ネットワークの問題が少なくて済むかもしれません)

Xshell(クラウドサーバーをリモート制御するために、これが便利だと思います。京東雲自体はWeb TerminalログインVNCログインを提供していますが、ウェブタブ上では使い勝手が悪いと感じるので、面倒だと思うならインストールしなくても大丈夫です~)

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 にも変更しましたが、実際のプロセスでは(上の画像)最初の四つのステップはすべて京東雲からのダウンロードで、最後のステップだけが阿里云に変更されましたが、成功すれば良いです~

Docker を阿里云のミラーソースで構成#

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

daemon.json ファイルに以下の内容を追加します(中の URL は阿里云の公式サイトでコンテナイメージサービス (aliyun.com)を検索して、対応する URL をコピーしてください

image-20240729003720212

{
  "registry-mirrors": ["https://<あなたのID>.mirror.aliyuncs.com"]
}

image-20240729003924487

その後、ctrl + x で終了し、yes を保存し、Enter で保存します。

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  #パスワードを変更してください、公式と同じにしないでください、他は何でも大丈夫です、そうでないと潜在的な危険があります
      - --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 Databaser2dbc: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/ にアクセスすると、ブログページが表示されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。