前置步骤

首先你需要一套linux服务器,这里默认你已经有了。如果没有可以在云服务器优惠合集选择,如果你是个人博客选择性价比最高,最低配置就够用了。

环境搭建

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

创建容器组

下面是Halo官方维护的Docker镜像仓库,根据自己的需求选择合适的镜像源:

  • registry.fit2cloud.com/halo/halo
  • halohub/halo
  • ghcr.io/halo-dev/halo

Halo 2有时候没有及时的更新Docker的latest标签镜像,因为Halo 2不兼容1.x版本,防止使用者误操作。推荐使用固定版本的标签,比如2.17或者2.17.0。

在系统任意位置创建一个文件夹

此文档以 ~/halo为例,后续操作中,Halo 产生的所有数据都会保存在这个目录。

mkdir ~/halo && cd ~/halo

创建docker-compose.yaml

halo 2默认使用H2数据库,这个主要用于方便开发测试,不推荐在生产使用。因为操作不当可能导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时备份数据。

docker-compose.yaml文件路径一般放在下面这个路径。

~/halo/docker-compose.yaml

下面给出几种docker-compose.yaml实例的配置。

  1. 创建 Halo + PostgreSQL 的实例:

    这里的PostgreSQL使用默认端口5432,如果需要改端口,要显性标注出来。
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
# 外部访问地址,请根据实际需要修改
- --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
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo networks:
halo_network:
  1. 创建 Halo + MySQL 的实例:

    这里的PostgreSQL使用默认端口3306,如果需要改端口,要显性标注出来。
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:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/ halodb:
image: mysql:8.1.0
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo networks:
halo_network:
  1. 使用默认的 H2 数据库
version: "3"

services:
halo:
image: registry.fit2cloud.com/halo/halo:2.17
restart: on-failure:3
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:
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
  1. 仅创建 Halo 实例(使用已有外部数据库,MySQL 为例)
version: "3"

services:
halo:
image: registry.fit2cloud.com/halo/halo:2.17
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 端口号 默认8090
- --server.port=8090

参数配置

参数名 描述
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

实时查看日志命令

docker-compose logs -f

配置反向代理以及域名解析

这里以Nginx为例子,halo2还支持Caddy 2、Traefik等。

  • 通过nginx.conf文配置
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
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;
}
}
  • 通过Nginx Proxy Manager配置

参考使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书

Halo初始化页面。

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

更新新版本的halo

从 Halo 2.8 开始,Halo 内置了备份和恢复的功能,可以在 Console 中一键备份和恢复完整的数据。

  1. 备份

    在 Console 中,点击左侧菜单的 备份,进入备份页面。点击右上角的 创建备份 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。
  2. 更新Halo服务

    修改 docker-compose.yaml 中配置的镜像版本。
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.17
docker-compose up -d
  1. 恢复备份

    • 在 Console 中,点击左侧菜单的 备份,进入备份页面,然后点击 恢复 选项卡即可进入恢复界面,阅读完注意事项之后点击 开始恢复 按钮即可显示备份文件上传界面。
    • 选择备份文件后,点击 上传 按钮即可开始上传备份文件,上传完成后会自动开始恢复。
    • 恢复完成,会提示重启 Halo,点击 确定 按钮即可重启 Halo。
    • 最后,建议去服务器检查 Halo 的运行状态,如果没有设置自动重启,需要手动重启。

原文链接:如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?

如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?的更多相关文章

  1. 云服务器上利用Docker部署Django项目

    转载别人的,请看下面链接 云服务器上利用Docker部署Django项目

  2. 在阿里云服务器上(centos 8) 安装自己的MQTT服务器 (mosquitto)

    layout: post title: 在阿里云服务器上(centos 8) 安装自己的MQTT服务器 (mosquitto) subtitle: date: 2020-3-2 author: Dap ...

  3. 阿里云+wordpress搭建个人博客网站【小白专用的图文教程】

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. 阿里云+wordpress搭建个人博客网站

    [正文] 在阿里云上搭建使用个人博客主要分为以下几个步骤: 1.购买阿里云ECS主机 2.购买域名 3.申请备案 4.环境配置 5.安装wordpress 6.域名解析 声明一下,本人对服务器端的知识 ...

  5. Linux_基于Docker快速搭建个人博客网站

    时间:2017年04月28日星期五 说明:基于docker技术,使用jpress开源框架搭建个人博客网站.特别感谢jpress开源项目.系统版本:CentOS 7.2-64bit. 步骤一:准备Doc ...

  6. 阿里云服务器上通过Docker部署redmine

    背景:在日常工作的过程中会遇到各种各样的问题,每个问题来了之后需要花时间解决.这里就面临两个问题. 1:问题责任不明确,有时候会遇到数据库或者物理服务器的问题,这时候就需要把相应问题指派给相应的人,传 ...

  7. 如何在 Ubuntu 云服务器上部署自己的 Rails 应用

    安装步骤  参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...

  8. 把linux云服务器上的文件放到本地电脑windows上-----secureCRT

    1.本地电脑需要安装SecureCRT 2.在secureCRT上登录云端服务器,右键点击云端服务器上方的ip地址,选择"connect SFTP session" 3.在SFTP ...

  9. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  10. 在腾讯云上面搭建WordPress博客网站

    一.准备工作 我们使用腾讯云服务器来运行WordPress,腾讯云会给新用户七天的产品体验时间还有一些代金券,做为新手尝试成本是比较小的. 腾讯云长期举办 "云+校园" 活动,学生 ...

随机推荐

  1. nginx map模块使用和配置

    主机 IP 备注 master1 10.0.0.63 master2 10.0.0.64 1. NGINX MAP模块与NGINX GEO模块 在通常情况下,使用nginx基于 ip 限制访问请求频率 ...

  2. WNS 后台Push服务调试脚本

    一.API说明 https://cloud.tencent.com/document/product/276/3212   二.推送脚本 #!/usr/local/bin/python3 # -*- ...

  3. nonatomic 带来的线程安全问题

    一.结论 一个对象对外暴露的读写属性,如果这个属性在多个线程中访问,一定会出现crash. 因此对外暴露的属性一定要考虑线程安全问题. 二.看下面的代码 下面的代码一定会crash,除非obj是ato ...

  4. 面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!

    写在开头 面试官:"小伙子,线程池使用过吗,来聊一聊它吧!" 我:"好的,然后巴拉巴拉一顿输出之前看过的build哥线程池十八问..." 面试官满意的点了点头, ...

  5. 记录nodejs做编辑和新增时候对数据库的操作

    server.js文件 const dao = require("../dao/user.dao"); saveDat是个对象自己处理一下 if (updataFlag) {//编 ...

  6. react跨组件通信

    在react没有类似vue中的事件总线来解决这个问题,一是我们借助它们共同的父级组件通过代理的方式来实现,但过程会相当繁锁.react提供了Context来实现跨组件通信, 而不必显式地通过组件树的逐 ...

  7. CF1815

    CF1815 Div. 1 确实难,Virtual Contest 上只完成了两道题,想出来了三道题. A. Ian and Array Sorting 秒切题--考虑将前 \(n - 1\) 个数变 ...

  8. C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证

    C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证 参考了:https://www.cnblogs.com/-dawn/p/8598566.html GetLog4netI ...

  9. window10 java环境变量配置

    window10 此电脑 右击属性 相关设置 高级系统配置 点击右下的 环境变量 在系统变量中新增JAVA_HOME=D:\Program Files\Java\jdk1.8.0_25 在系统变量中修 ...

  10. 在Linux驱动中使用gpio子系统

    reference: https://blog.csdn.net/shiyongyue/article/details/75103446 http://blog.rongpmcu.com/gpiozi ...