Halo 2.0 建站指南:云服务器 _Linux 快速搭建 Halo 博客及使用指南 (CMS)

Halo 相关链接Halo 官网 | GitHub 地址 | Halo 主题

准备

  • 云服务器一台 =》建议至少 1 核 2G,购买渠道:阿里云腾讯云华为云UCloud亚洲云…… 本文的云服务器为 2 核 4G 1M 系统盘 40GB;镜像 CentOS 7.6 64bit

  • 域名一个

  • SSH 客户端连接工具:XShell 或其他的连接工具都可以,只要能远程连接到云服务器就行

推荐参考视频:

参照 Halo 文档入门指南,以下是 Halo 开源建站的简要指南:

1. 环境要求

硬件配置:

  • CPU、磁盘 无特别要求

  • 内存 :至少 1G

  • 网络:外网畅通条件下使用

软件环境:Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。

  • Docker :必须在运行环境安装好Docker 环境,目前 Halo 的默认安装运行方式均使用容器。

  • (可选):JRE、PostgreSQL、Web 服务器、Wget、VIM

2. 云服务器安装宝塔面板

1️⃣连接云服务器:使用 XShell SSH连接工具 远程连接我们购买的云服务器,首次连接的需要点击左上角【文件】-【新建会话】,填写对应配置后再【连接】。

2️⃣下载安装宝塔面板

复制脚本,在云服务器上安装宝塔面板:保存最后安装好的面板信息,账号密码等。

安装宝塔面板:

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

显示宝塔面板信息:

bt default

3️⃣宝塔面板安装 Nginx 环境。

3. 安装 Docker

Docker安装文档:Docker 安装指南__CentOS

推荐按照 Docker 官方文档安装 Docker,因为部分 Linux 发行版软件仓库中的 Docker 版本可能过旧。

3.1. 卸载旧版 Docker(可选)

如果服务器之前安装过 Docker,需执行以下命令来卸载旧版本 Docker:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.2. 设置存储库

升级yum包(可选):

yum update

设置存储库 安装 yum-utils 软件包(提供 yum-config-manager 实用程序)并设置存储库:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.3. 安装 Docker 引擎

安装 Docker 引擎安装 Docker Engine、containerd 和 Docker Compose:

安装最新版Docker引擎:

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.4. 启动 Docker 与验证

启动Docker:

sudo systemctl start docker

通过运行 hello-world 映像来验证 Docker 引擎安装是否成功(验证 Docker 引擎安装是否成功):

sudo docker run hello-world

4. 使用 Docker 镜像 安装 Halo 2.0

使用 Docker 部署 | Halo 文档

4.1. 拉取 Halo 镜像

目前 Halo 2 并未更新 Docker 的 latest 标签镜像,主要因为 Halo 2 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 halohub/halo:2.10 或者 halohub/halo:2.10.0。

  • halohub/halo:2.10:表示最新的 2.10.x 版本,即每次发布 patch 版本都会同时更新 halohub/halo:2.10 镜像。

  • halohub/halo:2.10.0:表示一个具体的版本。

后续文档以 halohub/halo:2.10 为例。

拉取 Halo 镜像之前,建议先配置 Docker 镜像下载加速,否则会下载速度特慢(这是一个惨痛的教训😭😭😭)!!!

配置 Docker 镜像下载加速:腾讯云容器镜像服务快速入门参考推荐:腾讯云Docker镜像源加速镜像下载

1️⃣注册并登录阿里云账号:首先,你需要在阿里云注册一个账号,如果已有账号则登录。

2️⃣开通容器镜像服务:在阿里云的控制台中,找到容器镜像服务(Container Registry),然后开通该服务。

3️⃣创建命名空间(Namespace):在容器镜像服务中,创建一个命名空间,命名空间用于组织和管理你的镜像。

4️⃣获取镜像加速地址:在容器镜像服务的命名空间页面中,可以找到一个加速地址(Registry Domain),该地址是用于加速 Docker 镜像下载的(每个人不一样,免费)。

5️⃣配置 Docker 镜像加速器:打开 Docker 的配置文件,vim 编辑,通常是 /etc/docker/daemon.json;如果该文件不存在,可以创建它。

  • <your-accelerator-address> 替换为上一步获取到的镜像加速地址。

{
  "registry-mirrors": ["https://<your-accelerator-address>"]
}

6️⃣重启 Docker 服务:保存并关闭配置文件后,重启 Docker 服务使配置生效。

重启 Docker 服务:

sudo service docker restart
# or
sudo systemctl restart docker

7️⃣验证加速器是否生效:运行以下命令检查加速器是否生效。

docker info

如果看到了镜像加速器的信息,表示配置成功。现在,当你使用 docker pull 命令拉取镜像时,将会从加速器的地址下载,提高下载速度。


拉取 Halo 镜像:

docker pull halohub/halo:2.10

4.2. 创建容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.10

注意:此命令默认使用自带的 H2 Database 数据库。如需使用 PostgreSQL,请参考:使用 Docker Compose 部署

  • -it:开启输入功能并连接伪终端

  • -d:后台运行容器

  • --name:为容器指定一个名称

  • -p:端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。

  • -v:工作目录映射。形式为:-v 宿主机路径:/root/.halo2,后者不能修改。

运行参数详解

参数名

描述

spring.r2dbc.url

数据库连接地址,详细可查阅下方的 数据库配置

spring.r2dbc.username

数据库用户名

spring.r2dbc.password

数据库密码

spring.sql.init.platform

数据库平台名称,支持 postgresql、mysql、h2

halo.external-url

外部访问链接,如果需要在公网访问,需要配置为实际访问地址

halo.cache.page.disabled

是否禁用页面缓存,默认为禁用,如需页面缓存可以手动添加此配置,并设置为 false。
开启缓存之后,在登录的情况下不会经过缓存,且默认一个小时会清理掉不活跃的缓存,也可以在 Console 仪表盘的快捷访问中手动清理缓存。

数据库配置

链接方式

链接地址格式

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}

mysql

H2 Database

r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE

h2

5. 浏览器访问

用浏览器访问 http://ip:8090/console 即可进入 Halo 管理页面,首次启动会进入初始化页面。

如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。

如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

Halo 开源建站工具 v2.0 功能演示视频_哔哩哔哩_bilibili

6. 设置域名访问

我这里是在腾讯云购买的域名(注意备案),关于域名购买这里不做赘述,以下只关注 ip 与域名的绑定。

6.1. 域名解析(腾讯云)

在自己购买域名的域名商处进行域名解析这一配置,此处以腾讯云为例。

进入域名控制台,【我的域名】→找到自己注册的域名,点击右侧【解析】→【添加记录】即可。

配置完成后可以在 多个地点Ping服务器,网站测速 - 站长工具 输入域名,检测域名是否能够解析到我们的 IP 地址。

6.2. 配置反向代理(宝塔面板)

添加站点信息:访问我们服务器搭建的宝塔面板,【添加站点】,填写对应站点信息后【提交】。

  • 域名:填写自己先前购买的域名

  • 备注信息:可以默认,也可以自己填写

  • 其余默认

配置 SSL 证书:点击 SSL 证书列 未部署 文字,申请证书后,开启【强制 HTTPS】开关。

配置反向代理:修改以上新增站点的【配置文件】,如下操作,最后【保存】。

我这里参考的是哔哩哔哩博主的这篇:P8_配置反向代理_哔哩哔哩_bilibili

location / {
  proxy_pass http://127.0.0.1:8090/;       # halo博客-ip访问的端口,我这里是8090
  rewrite ^/(.*)$ /$1 break;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Upgrade-Insecure-Requests 1;
  proxy_set_header X-Forwarded-Proto https;
}

至此,大功告成!!!我们就不再通过http://ip:8090访问我们的 halo 博客 ,而可以直接使用购买的域名来访问 halo 博客啦(域名后接 /console可进入 Halo 管理页面)~

8. 科普:Docker 和 Docker Compose 区别

Docker 和 Docker Compose 是两个紧密相关但功能不同的工具。

8.1. Docker

  1. 容器化平台: Docker 是一种容器化平台,允许你打包、分发和运行应用程序及其依赖项,而无需考虑环境差异。

  2. Docker 引擎: Docker 的核心是 Docker 引擎,它是一个轻量级且强大的容器运行时,用于创建和管理容器。

  3. 构建镜像: Docker 允许你使用 Dockerfile 描述应用程序的环境和依赖关系,然后通过构建这个描述文件生成一个镜像,这个镜像可以在任何支持 Docker 的环境中运行。

  4. 容器管理: Docker 提供了一系列命令,用于管理容器的生命周期,包括创建、启动、停止、删除等。

8.2. Docker Compose

  1. 多容器编排工具: Docker Compose 是 Docker 的一个工具,用于定义和运行多容器的 Docker 应用程序。

  2. YAML 文件描述: 使用 Docker Compose,你可以使用一个 YAML 文件定义应用程序的服务、网络、卷等配置。这个文件描述了应用程序的整体结构。

  3. 一键启动: Docker Compose 允许你使用一个简单的命令(通常是 docker-compose up),一键启动整个应用程序,包括所有的服务和配置。

  4. 协同工作: Docker Compose 使得协同工作更加容易,可以通过一个文件描述整个应用程序,使得团队成员能够轻松地在不同环境中启动相同的应用。

8.3. 区别

  • Docker 是容器化平台,Docker Compose 是用于编排多容器应用的工具。

  • Docker 主要关注容器的创建、管理和运行,而 Docker Compose 更关注于定义和运行多容器应用的整体结构。

  • Docker 使用 Dockerfile 来构建镜像,而 Docker Compose 使用一个 YAML 文件描述整个应用的组件和配置。

  • Docker Compose 简化了在开发、测试和部署过程中多容器应用的协调和管理。

通常,你会使用 Docker 构建容器镜像,然后使用 Docker Compose 来定义和运行由多个容器组成的应用程序。这两者通常一起使用,以提供更完整和方便的容器化解决方案。