準備#
京東雲軽量云ホスト 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
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 にも変更しましたが、実際のプロセスでは(上の画像)最初の四つのステップはすべて京東雲からのダウンロードで、最後のステップだけが阿里云に変更されましたが、成功すれば良いです~
Docker を阿里云のミラーソースで構成#
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
daemon.json
ファイルに以下の内容を追加します(中の URL は阿里云の公式サイトでコンテナイメージサービス (aliyun.com)を検索して、対応する URL をコピーしてください)
{
"registry-mirrors": ["https://<あなたのID>.mirror.aliyuncs.com"]
}
その後、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
このステップでネットワーク遅延の問題が発生しました。
どうしてもダウンロードできませんでした。
ここで二つの方法を提供します。
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 #パスワードを変更してください、公式と同じにしないでください、他は何でも大丈夫です、そうでないと潜在的な危険があります
- --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 Database | 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/
にアクセスすると、ブログページが表示されます。