准备#
京东云轻量云主机 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 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/
即为博客页面.