准备工作

  • 阿里云服务器,操作系统为CentOS 7.9.2009 x86_64(Py3.7.9)
  • 宝塔面板
  • Nginx 1.24.0(用于反向代理)
  • 已备案的域名
  • ssl证书(https访问)

参考官方文档,这里使用 Docker Compose 进行部署

官方文档:使用 Docker Compose 部署 | Halo 文档

一、安装Docker和Docker Compose

1、使用宝塔面板Docker

在宝塔面板点击安装

等待安装完成

2、使用ssh远程命令安装Docker Compose

安装Docker-Compose之前,请先安装python-pip

yum install python-pip -y

再执行

pip install docker-compose

虽然报错了,但是显示还是安装成功了

使用以下命令可以查看安装的版本

docker -v
docker-compose -v

二、创建容器组

1、新建文件夹

这里选择在home中新建halo文件夹

# 创建文件夹
mkdir /home/halo
# 进入到目录
cd /home/halo # 也可以直接使用宝塔面板图形化操作

注意:后续操作中,Halo 产生的所有数据都会保存在这个目录,请妥善保存。

2、创建 docker-compose.yaml

在/home/halo中新建docker-compose.yaml文件,文件内容如下(这里选择的是创建 Halo + MySQL 的实例:

version: "3"

services:
halo:
image: halohub/halo:2.15
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:

下次试试(仅创建 Halo 实例(使用已有外部数据库,MySQL 为例))这种方法。

3、启动 Halo 服务

注意,以下两条命令要在halo目录下执行。

docker-compose up -d

实时查看日志(可选):

docker-compose logs -f

4、进入 Halo 管理页面

先放行端口

注意:访问前需要再阿里云安全组中放行端口,需要放行的端口就是docker-compose.yaml中外网访问的那个端口,这里为8090.

最好是在阿里云和宝塔面板的安全组中都给放行,不然可能通过http://ip:8090时访问不了。

# docker-compose.yaml文件内容

# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/

再访问Halo 管理页面

进入Halo 管理页面

# 浏览器网址栏输入ip+端口号
# 例如:
192.168.1.1:8090 # 注意:因为是用http访问的,如果无法访问时浏览器地址栏中是https,那就把s删掉,
# 例如:
https://192.168.1.1:8090/
删掉s,使用http访问
http://192.168.1.1:8090/

进入之后是这个页面:

接下来就可以按照提示进行初始化了

现在就可以使用halo博客了,但是只能通过ip+端口的方式访问。如果有已备案的域名的话,可以添加反向代理,通过域名访问。

三、反向代理

使用宝塔面板,方便快捷。

依次点击,网站->PHP项目->添加站点,输入域名后点击确定创建站点。

创建好站点后,点击右边的设置,找到反向代理,添加反向代理。

本来反向代理设置好就可以用域名访问了,但是我这里不知道什么原因,需要部署ssl证书之后才能访问

Halo博客搭建小记的更多相关文章

  1. 服务器部署 halo博客项目

    2020-8-9 13:45:14 有个进阶方法!  如果静态资源加载缓慢如图片,头像  则用CDN加速  (确实很秀!) https://cdn.jsdelivr.net/gh/你的用户名/你的仓库 ...

  2. [原创]HEXO博客搭建日记

    博客系统折腾了好久,使用过Wordpress,Ghost,Typecho,其中Typecho是我使用起来最舒心的一种,Markdown编辑+轻量化设计,功能不多不少刚好,着实让我这种强迫症患者舒服了好 ...

  3. Node.js博客搭建

    Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...

  4. nodejs环境 + 入门 + 博客搭建

    NodeJS:NodeJS是一个使用了Google高性能V8 引擎 的服务器端JavaScript实现.它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成 ...

  5. WordPress博客搭建与问题总结

      一.WordPress博客搭建 1.安装Apache web服务器 yum install -y httpd systemctl restart httpd systemctl enable ht ...

  6. 基于Github&Hexo的个人博客搭建过程

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  7. 个人博客搭建( wordpress )

    最近同学买了一台虚机( centos7 系统 ).一个域名,让帮忙搭一个个人博客.本着简单快捷,个人博客采用 wordpress 来搭建.为了以后博客系统的迁移方便,使用 docker 来安装 wor ...

  8. Hexo博客搭建以及Next主题美化的经验之谈

    这并不是一篇博客搭建教程.内容主要包含个人对于Hexo博客搭建的心得,Next6.0主题美化的部分建议,以及摘录一些各种用于博客搭建的link. 在博客园3年6个月,确实也学到了很多,博客园也是目前为 ...

  9. Hexo博客搭建全解

    [原创,转载请附网址:http://dongshuyan.top] 欢迎来到莫与的博客,第一篇记录了一下怎么写一篇博客,以方便之后写博客~ #从配置说起下载安装Git与Node.js略过 1.安装he ...

  10. GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置

    GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置 前言 此篇博客主要为Pelican在Windows平台下的配置安装所写,在此过程中主要参考资料烟雨林博客.poem_of_ ...

随机推荐

  1. 在命令行中使用 cl.exe编译 C/C++ 程序并执行

    cl.exe是Microsoft C/C++编译器. 我的VC6.0安装目录为:D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev9 ...

  2. .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法

    前言: 经过前面几大部分的学习,已经掌握了 Emit 的前因后果,今天来详细讲解 Emit 中 IL 的部分内容. 如前文所讲,通过 DynamicMethod(或 MethodBuilder)可获得 ...

  3. 基于UDP的服务器端/客户端

    基于UDP的数据I/O函数 //成功时返回传入的字节数,失败时返回-1 ssize_t sendto (int __fd, const void *__buf, size_t __n, int __f ...

  4. #博弈论,贪心#AT2376 [AGC014D] Black and White Tree

    题目传送门 分析 考虑到先手放一个白点后手必将在相邻位置放一个黑点, 如果没有合适的位置放黑点先手必胜,也就是问是否存在完美匹配, 直接从叶子节点到根贪心匹配即可 代码 #include <cs ...

  5. OpenHarmony 3.2 Beta1版本正式发布

    5 月 31 日,开放原子开源基金会正式发布 OpenAtom OpenHarmony(以下简称"OpenHarmony")3.2 Beta1 版本.   全球开发者可通过Gite ...

  6. C#_面试题1

    C#_面试题1 1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方 ...

  7. RabbitMQ 11 死信队列

    死信队列 概述 消息队列中的数据,如果迟迟没有消费者来处理,就会一直占用消息队列的空间. 比如抢车票的场景,用户下单高铁票之后,会进行抢座,然后再进行付款,但是如果用户下单之后并没有及时的付款,这张票 ...

  8. Python拷贝、移动、重命名、删除文件和文件夹----shutil

    拷贝 # 拷贝文件import shutil # 语法: shutil.copy(src, dst) '''示例 将 a 文件夹中的 a.txt 拷贝到 b 文件夹 ''' shutil.copy(' ...

  9. Nginx 简介、安装与配置文件详解

    〇.前言 在日常工作中,Nginx 的重要性当然不言而喻. 经常用,但并不意味着精通,还会有很多不清楚的方式和技巧,那么本文就简单汇总下,帮助自己理解. 一.Nginx 简介 1.1 关于 Nginx ...

  10. 新零售标杆 SKG 全面拥抱 Serverless,实现敏捷交付

    简介: SKG CTO 王焱:以前需要 60 个人干的活,用 SAE 和大禹后 15 个人就可以! 作者:陈列昂.昕辰.龙琛.黛忻 项目背景   SKG 公司是一家专注于高端健康产品的研发.设计与制造 ...