halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx
Posted 是谢添啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx相关的知识,希望对你有一定的参考价值。
文章目录
- 1.halo简介与地址
- 2.安装docker与docker-compose
- 3.nginx反向代理配置
- 4.Docker-compose部署halo,mysql,nginx
- 5.容器编排
- 6.访问测试
- 7.基础操作
部署一个炫酷的个人博客只需要按照本文的指令直接cv
即可。但请注意打开服务器防火墙的 80 和 3306 端口。
1.halo简介与地址
1.1 简介
Halo是一款现代化的开源博客/CMS系统,所有代码开源在GitHub上且处于积极维护状态。它是基于 Java Spring Boot
构建的,易于部署,支持REST API、模板系统、附件系统和评论系统等功能。
Halo 作为一款好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。
1.2 开源仓库
🏠 github: halo-dev/halo: 强大易用的开源建站工具。 (github.com)
🏠 gitee:halo: 强大易用的开源建站工具。 (gitee.com)
1.3 中文文档
1.4 社区
🏠 Halo 社区
1.5 官网
1.6 主题仓库
🏠 主题仓库 | Halo 建站 - 强大易用的开源建站工具
2.安装docker与docker-compose
2.1 安装docker
🍀 基于centos的安装
-
安装yum-utils
sudo yum install -y yum-utils
-
从国内服务器上下载docker
sudo yum-config-manager \\ --add-repo \\ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
验证是否成功
sudo docker --version
🍀 基于ubuntu
-
安装需要的包
sudo apt-get update
-
安装依赖包
sudo apt-get install \\ apt-transport-https \\ ca-certificates \\ curl \\ gnupg-agent \\ software-properties-common
-
添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
设置远程仓库
sudo add-apt-repository \\ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \\ $(lsb_release -cs) \\ stable"
-
安装 Docker-CE
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
-
验证是否成功
sudo docker --version
2.2 配置国内加速器
国内镜像中心常用的为阿里云与网易云,选择其中一个加速器进行配置即可。在本地 Docker 中指定要使用的国内加速器地址后,就可以直接从国内镜像中心下载镜像了。
2.1.1 配置阿里云加速器
🍀 找到相应页面
若要配置阿里云加速器,必须首先要有阿里云的账号。登录阿里云后,打开阿里云的容器镜像服务页面 https://cr.console.aliyun.com ,然后找到如下页面,可以查看到你的 registry-mirrors
🍀 创建 docker 目录
sudo mkdir -p /etc/docker
🍀 创建 daemon.json 文件
注意,该 json 数据中的 URL 地址是与用户登录账号绑定的,不同的用户所生成的地址是不同的。
sudo vim /etc/docker/daemon.json
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
🍀 重新加载服务配置文件
sudo systemctl daemon-reload
🍀 重启 docker 引擎
sudo systemctl restart docker
2.2.2 配置网易云加速器
配置网易云加速器,无需注册网易云用户。只需将前面的 daemon.json 文件中的那个URL 替换为如下 URL 即可。
"registry-mirrors": ["http://hub-mirror.c.163.com"]
当然,替换过后,仍需重新加载服务配置文件,重启 docker 引擎。
2.3 离线安装docker-compose
🍀 下载安装包
🏠 所有版本预览:Releases · docker/compose (github.com)
选择一个版本:
进入后往下拉,选择对应版本:
将文件上传到linux后,移动到与环境变量相关的指定位置:
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
🍀 添加可执行权限
为 docker-compose 文件添加可执行权限。
sudo chmod +x /usr/local/bin/docker-compose
🍀 测试
通过 docker-compose version 测试安装是否成功。
sudo docker-compose version
3.nginx反向代理配置
在系统任意位置创建一个 halo 文件夹,并创建多级目录
sudo mkdir -p /halo/nginx/conf/
编写Nginx配置文件
sudo vim /halo/nginx/conf/nginx.conf
#user root;
error_log /var/log/nginx/error.log notice;
worker_processes 1;
pid /var/run/nginx.pid;
events
worker_connections 1024;
http
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 设置上传文件的最大值
client_max_body_size 256m;
upstream blog
# 使用容器服务名
server halo:8090;
server
listen 80;
# 可进行域名绑定
server_name localhost;
location /
# 设置反向代理的地址(实际是请求转发)
proxy_pass http://blog;
# 设置HTTP请求头
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;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root html;
4.Docker-compose部署halo,mysql,nginx
sudo vim /halo/compose.yaml
1️⃣ 您必须修改的自定义配置,找到下面的参数所在位置修改:
服务器或虚拟机ip:halo.external-url
中的 ip 设置,我写的配置中是 8.130.97.145,需要修改为你自己的服务器ip地址。
2️⃣ 您可选修改的自定义配置,找到下面的参数所在位置修改:
- 超级管理员账号密码
- 账号
halo.security.initializer.superadminusername
,我写的配置中是 admin - 密码
halo.security.initializer.superadminpassword
,我写的配置中是 123456
- 账号
- mysql的root用户密码,以下两个参数的值都需要修改且必须保持一致
spring.r2dbc.password
,我写的配置中是 123456MYSQL_ROOT_PASSWORD
,我写的配置中是 123456
services:
halo:
image: halohub/halo:2.4.0
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo:/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=123456
- --spring.sql.init.platform=mysql
# 外部访问地址,我的服务器 ip 为8.130.97.145,此处需要修改为你自己的服务器或虚拟机 ip
- --halo.external-url=http://8.130.97.145:80/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=123456
halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306"
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=123456
- MYSQL_DATABASE=halo
halonginx: # 服务名称,用户自定义
image: nginx:1.23.4 # 镜像版本
container_name: halonginx
# 链接到其它容器,能在 nginx.conf 反向代理配置时使用
links:
- halo
networks:
halo_network:
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- /halo/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
networks:
halo_network:
5.容器编排
# 1.进入 halo 目录
cd /halo
# 2.容器编排
sudo docker-compose up -d
查看状态:sudo docker ps
6.访问测试
🏠 访问:http://【服务器或虚拟机ip】
点击登录,如果遇到红色报错不用管。
7.基础操作
这里只列举部分操作,更多使用可以自己去实践操作或者参考 用户指南 | Halo Documents
7.1 插件
这里演示图床插件:
🏠 插件包下载地址:halo-sigs/plugin-s3: 为 Halo 提供 S3 对象存储协议的存储策略 (github.com)
创建新的存储策略,但这里会导致页面卡死,原因是halo2.4版本不适配该插件,这个问题 plugin-s3
插件的制作者们已经在修复中了(当前为 2023/04/03)
7.2 站点基本设置
7.3 主题设置
🍀 优质主题下载地址
注意直接下载 .zip 文件即可,无需对其解压。
-
xue
:xzhuz/halo-theme-xue: 追求个性与至简 (github.com)注意,这个主题的 master 主分支暂不可用(不知为什么),但可以使用 next 子分支。
-
dream
:nineya/halo-theme-dream2.0: 适配halo2.x的dream主题 (github.com) -
butterfly
:dhjddcn/halo-theme-butterfly: 一个Halo博客主题,Butterfly 🦋 (github.com)注意要选择 next 分支。
-
joe
:qinhua/halo-theme-joe2.0: 🌈 一款 Halo 博客主题 Joe2.0 (github.com)
🍀 设置主题
主页效果:
至于更多设置直接去主题管理下调试即可。
7.4 允许访客注册
Halo搭建个人博客网站
Halo搭建个人博客网站
一、docker部署Halo
目前测试了两种方法安装Halo,第一种是使用Jar包安装:提供JAR包资源,不过因为使用jar包部署需要Java11才可以,我本机使用的是Java8,所以暂时不做调整。第二种是通过docker安装。
1.1 启动应用
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
[root@zxy_master blog]# docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
Unable to find image 'halohub/halo:latest' locally
latest: Pulling from halohub/halo
e96e057aae67: Pull complete
4ced2591451d: Pull complete
df8f874ae8c0: Pull complete
111b6c748642: Pull complete
7d08d1d812cb: Pull complete
52108816ce84: Pull complete
afa1bed6ab0e: Pull complete
4f4fb700ef54: Pull complete
02830da3aa34: Pull complete
851454fc787b: Pull complete
Digest: sha256:311e8dd620d441fd15abc1c5c8859f840e014975392dfe97a2a16e8c935bedac
Status: Downloaded newer image for halohub/halo:latest
cc27e01b629de601b9b8ab9bf1fbc59430374df3317e2ef8ccff4736e439eb83
1.2 云服务打开8090端口
1.3 初始化应用
Halo默认是8090端口,使用docker启动后,可通过IP:8090端口打开后台页面进行配置。
ip:8090
1.4 数据导入
如果之前已经部署过Halo博客,可以通过这里导入原数据。
二、Halo应用
2.1 后台管理页面
后台管理页面如果没有特殊配置的话,后续可以通过ip:8090/admin
登录
Halo初始化后,就可以登录进来Halo后台管理页面,通过右上角连接可以进入博客主页面
2.2 主页面
主页面如果没有特殊配置的话,可以通过ip:8090
查看
Halo最原始的页面是比较单调的,但是Halo可以支持主题下载安装
2.3 主题安装
暂时提供了几个主题,可以通过上述方式安装,已经上传到CSDN资源主题资源下载。
也可以通过Halo官网下载Halo官网主题
2.4 主题启用
将已安装的主题,点击启用即可改变当前主题
启用后,再次查看主题
三、Nginx端口转发
根据Nginx部署安装教程,部署好后,修改nginx.conf配置文件
#修改一:在server之前,添加upstream进行端口跳转
upstream webserver
server ip:8090;
server
# 修改二:将8090跳转到80
listen 80;
# 修改三:IP地址
server_name ip;
#charset koi8-r;
#access_log logs/host.access.log main;
location /
root html;
# 修改四:添加代理配置,
# 这里的webserver名称与upstream后的名称一致
proxy_pass http://webserver;
proxy_set_header Host $host;
index index.html index.htm;
修改配置后,重启nginx即可通过80端口登录
四、域名
3.1 购买域名
域名注册购买_域名注册选购 - 腾讯云 (tencent.com)
3.2 解析域名
3.3 域名登录
以上是关于halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx的主要内容,如果未能解决你的问题,请参考以下文章
基于Docker容器化快速搭建Halo个人博客并配置https服务
基于Docker容器化快速搭建Halo个人博客并配置https服务