Halo博客搭建小记
准备工作
- 阿里云服务器,操作系统为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博客搭建小记的更多相关文章
- 服务器部署 halo博客项目
2020-8-9 13:45:14 有个进阶方法! 如果静态资源加载缓慢如图片,头像 则用CDN加速 (确实很秀!) https://cdn.jsdelivr.net/gh/你的用户名/你的仓库 ...
- [原创]HEXO博客搭建日记
博客系统折腾了好久,使用过Wordpress,Ghost,Typecho,其中Typecho是我使用起来最舒心的一种,Markdown编辑+轻量化设计,功能不多不少刚好,着实让我这种强迫症患者舒服了好 ...
- Node.js博客搭建
Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...
- nodejs环境 + 入门 + 博客搭建
NodeJS:NodeJS是一个使用了Google高性能V8 引擎 的服务器端JavaScript实现.它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成 ...
- WordPress博客搭建与问题总结
一.WordPress博客搭建 1.安装Apache web服务器 yum install -y httpd systemctl restart httpd systemctl enable ht ...
- 基于Github&Hexo的个人博客搭建过程
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 个人博客搭建( wordpress )
最近同学买了一台虚机( centos7 系统 ).一个域名,让帮忙搭一个个人博客.本着简单快捷,个人博客采用 wordpress 来搭建.为了以后博客系统的迁移方便,使用 docker 来安装 wor ...
- Hexo博客搭建以及Next主题美化的经验之谈
这并不是一篇博客搭建教程.内容主要包含个人对于Hexo博客搭建的心得,Next6.0主题美化的部分建议,以及摘录一些各种用于博客搭建的link. 在博客园3年6个月,确实也学到了很多,博客园也是目前为 ...
- Hexo博客搭建全解
[原创,转载请附网址:http://dongshuyan.top] 欢迎来到莫与的博客,第一篇记录了一下怎么写一篇博客,以方便之后写博客~ #从配置说起下载安装Git与Node.js略过 1.安装he ...
- GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置
GITHUB个人博客搭建-Pelican 在Windows环境下的安装及配置 前言 此篇博客主要为Pelican在Windows平台下的配置安装所写,在此过程中主要参考资料烟雨林博客.poem_of_ ...
随机推荐
- rabbitmq学习记录
一.RabbitMQ的概念 RabbitMQ 是一个消息中间件:它接受并转发消息.你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这 ...
- KingbaseES 垃圾回收原理以及如何预防膨胀更新
背景 KingbaseESV8R6支持snapshot too old 那么实际工作中,经常看到表又膨胀了,那么我们讨论一下导致对象膨胀的常见原因有哪些呢? 未开启autovacuum,对于未开启au ...
- 京东一面挂在了CAS算法的三大问题上,痛定思痛不做同一个知识点的小丑
写在开头 在介绍synchronized关键字时,我们提到了锁升级时所用到的CAS算法,那么今天我们就来好好学一学这个CAS算法. CAS算法对build哥来说,可谓是刻骨铭心,记得是研二去找实习的时 ...
- Python爬虫爬取ECVA论文标题作者摘要关键字等信息并存储到mysql数据库
网站截图: 源代码: 1 import re 2 import requests 3 import pymysql 4 from bs4 import BeautifulSoup 5 import l ...
- Kylin Desktop V10部署达梦数据库(DM8)
1.环境 处理器:飞腾D2000/8 E8C 内存:16GB 系统:银河麒麟桌面版操作系统(国防版)V10 达梦数据库:dm8_20231226_FTarm2000_kylin10_sp1_64 2. ...
- c++_shared库引入的问题
项目组提供了一个AAR文件供下游业务团队集成. 某天,下游团队反馈了一个紧急的问题,最终客户的开发者使用Android Studio打包时,构建工具提示构建失败,原因是存在重复的c++_shared库 ...
- MySQL-ERROR 1701 (42000)
清空具有外键约束的表时报ERROR 1701(42000)的解决 mysql> truncate table events; ERROR 1701 (42000): Cannot truncat ...
- Python-docx插入图片报错“NameError: name 'Inches' is not defined”
在使用 Python-docx 库操作Word文档时,需要插入图片,在设置宽高时,报错"NameError: name 'Inches' is not defined" 原因是:没 ...
- 阿里开源的32B大模型到底强在哪里?
阿里巴巴最近开源了一个320亿参数的大语言模型Qwen1.5-32B,网上都说很强很强,那么它到底强在哪里呢? 更高的性价比 Qwen1.5-32B中的B是billion的意思,也就是10亿,32B就 ...
- Bash下切换conda环境
背景:很多时候实验命令都是基于Linux系统的,但是很多人的电脑是window系统的. 使用git自带的Bash可以运行linux命令,不过有时候在bash中想使用conda环境的时候比较麻烦,具体做 ...