使用Docker部署开源建站工具—Halo,并实现个人博客公网访问

news/2024/5/17 16:26:34

目录

推荐

前言

1. Docker部署Halo

1.1 检查Docker版本

如果未安装Docker可参考:

已安装Docker步骤:

1.2 在Docker中部署Halo

2. Linux安装Cpolar

2.1 打开服务器防火墙

2.2 安装cpolar内网穿透

3. 配置Halo个人博客公网地址

4. 固定Halo公网地址


推荐

 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站

前言

本篇文章介绍如何在CentOS下使用Docker部署开源建站工具Halo,并结合cpolar内网穿透工具实现个人博客的公网访问。

Halo是一款基于Java的开源建站工具,具有简单易用、灵活性高、插件丰富等优点。可以做博客的软件平台有很多,像大家熟知的 WordPress 、Hexo、Typecho,对于计算机专业的人来说,他们会根据自己的需求选择适合的平台,但对于小白来说Halo虽然没有功能没有老牌的博客平台那么全面,但是操作简单,博客界面也很简洁美观。

0b78a413f513086c5dd5095f540f9fd

1. Docker部署Halo

1.1 检查Docker版本

  • 本地环境操作系统:CentOS 7 安装Docker

    如果未安装Docker可参考:

    安装软件包(提供实用程序)并设置存储库

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

    安装Docker引擎

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

    启动Docker

    sudo systemctl start docker
    

    通过运行映像来验证 Docker 引擎安装是否成功

    sudo docker run hello-world
    

已安装Docker步骤:

  • 启动Docker:
 systemctl start docker

  • 检查docker版本
docker -v

  • 检查docker compose版本:确保2.0以上版本
docker compose version

  • 下载Halo镜像:在docker hub下载Halo-V2.10版本镜像
docker pull halohub/halo:2.10

1.2 在Docker中部署Halo

  • 创建挂载目录
mkdir -p /data/halo && cd /data/halo

07a005be5cd19fdf5a377210cf5cc4c

  • 创建Halo容器:

Halo 2与1.x 版本不兼容;

此命令默认使用自带的 H2 Database 数据库,另外可以额外单独使用Mysql数据库进行连接。

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

dd6d2a9d946f02352574cd914fe3413

  • 查看halo容器状态:检查halo容器状态,确保halo容器正常启动
docker ps

0e79a5a0e6b242e6a6e73543831ccd7

  • 检查halo容器日志: 检查halo容器运行日志,确保halo服务正常启动。
docker logs halo

d2379dad6f69ba006bea146afc6b874

  • 查看本地IP地址
ifconfig

  • 进入Halo初始化页面

访问地址:http://192.168.149.142:8090/console/setup,将IP替换为自己服务器IP地址。

站点名称:myweb
邮箱:admin@qq.com
用户名:admin
密码:自定义
点击初始化即可

a0f433681aae3d111b7523508784e38

  • 登录Halo:输入账号和密码,登录halo,进入到仪表盘界面

e05facc1f24d0ea066d9a9757fd4fe8

4e37c2c4e250ebfa4bc69eb97dc3b6b

接下来举个例子我们创作一篇文章,在Halo后台管理页面,文章模块,点击“新建”

05f5f06359138c94a5dd5e9e743b14b

编辑完文章后,点击发布,将文章进行发布,在文章列表中即可看到发布过的文章

c5d2a7df807cf778f743226dc7f93a3

接下来本地浏览器访问http://192.168.149.142:8090/,本地服务器IP:8089,看到halo前台首页已经成功显示发布文章

e7b8f9a91bbcd888d9c8c36f331f587

我们成功在本地部署了Halo,通过访问挂载的8089端口即可看到Halo首页界面,并创作了第一篇文章,如果我们想把创作好的个人博客发布至公网分享给身边人点击查看,那么就需要借助cpolar内网穿透工具了,接下来我们安装cpolar内网穿透工具,实现无公网环境远程访问!

2. Linux安装Cpolar

2.1 打开服务器防火墙

启动防火墙

systemctl start firewalld

查看防火墙状态

systemctl status firewalld

centos7 防火墙添加端口:【单个】

firewall-cmd --zone=public --add-port=9200/tcp --permanent

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone=public --list-ports

2.2 安装cpolar内网穿透

上面在本地Docker中成功部署了Halo,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

  • 向系统添加服务
sudo systemctl enable cpolar

  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口 即:【http://局域网ip:9200】,使用cpolar账号登录(如没有账号,可以点击下面免费注册),登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

3. 配置Halo个人博客公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个Halo的公网http地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:8090 (本地访问的地址)
  • 域名类型:免费选择随机域名
  • 地区:选择China

点击创建

51428fa8d798a6f09244ff9567aa312

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https

d8fb5e5727a167bc7a527fbebfbd944

使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到Halo首页界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问!

image-20240109105141668

小结

如果我们需要把自己的个人博客长期发布至公网,分享给别人查看,由于刚才创建的是随机的地址,24小时会发生变化。另外它的网址是由随机字符生成,不容易记忆。如果想把域名变成固定的二级子域名,并且不想每次都重新创建隧道,可以选择创建一个固定的http地址来解决这个问题。

4. 固定Halo公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的博客,而无需每天重复修改服务器地址。

配置固定http端口地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

bf1dd6a42148579307e2dae72055abc

保留成功后复制保留成功的二级子域名的名称

edd09daaed4aa7183b057b271331157

返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

98b73f50633de7c58fe3484439751ed

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

d2eeffd306da1d18e1c98884a2e45fa

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名

d68fa5856079ee39d18b5e909fb6697

最后,我们使用固定的公网https地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以把个人博客分享给其他人了!

ade1b323d51ab81f7458d0fa22cf9ee


http://www.mrgr.cn/p/36504828

相关文章

如何使用XSSFWorkbook读取文本薄?

本篇文章暂不对XSSFWorkbook类进行解析和说明,仅附有实现代码。 如果文中阐述不全或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18146625 出自【进步*于辰的博客】1、文件兼容类型。 // 兼…

GAMES101 作业7 踩坑指南

首先回顾路径追踪的原理,如下图基本思想 wo是射向眼镜(相机)的光线,包含来自光源的直接光照ws,来自其他物体的间接光照wi两部分。 在实现path tracing时,我们考虑的是黄色线的方向,即光线从相机射向p点(实际上是从p点射向相机),然后通过多次随机采样从p点射出(实际上…

MoJoCo 入门教程(七)XML 参考

系列文章目录 前言 表格第二列中的符号含义如下: ! 必填元素,只能出现一次 ? 可选元素,只能出现一次 * 可选元素,可多次出现 R 可选元素,可递归出现多次 一、简介 本章是 MuJoCo 中使用的 MJCF 建模语言的参考手册。…

【继承】菱形继承以及虚拟菱形继承

文章目录 什么叫菱形继承菱形继承带来的问题 虚拟继承虚拟继承的内存布局总结: 关于继承和组合组合的优势代码复用最常见的几种手段有:继承的合理使用场景总结 什么叫菱形继承 菱形继承是多继承的一种特殊情况。什么叫多继承呢? 多继承又称多…

实验一原型设计-汽水音乐app

一、对比墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点墨刀 • 适用领域:主要专注于app原型设计,适合高保真原型、复杂多交互项目以及安卓/ios端项目。 • 优点:操作效率高,易于上手,特别适合设计移动应用的交互原型。 • 缺点:在后台和网页设计方面稍显…

数据库的物化视图

数据库的物化视图 数据库的物化视图(Materialized View)是一种预先计算和存储的查询结果集,可以提高查询性能和减少查询开销。与普通视图不同,物化视图是实际存储在磁盘上的表,而不是只是一个查询语句。物化视图可以在需要时更新,以保持其数据的实时性。 优点提高查询性能…

LCD显示屏 --- 介绍

LCD数据手册关键信息提取 LCD说明 LCD 即 液晶显示器,依据驱动方式可以分为静态驱动,简单矩阵驱动,主动矩阵驱动三种,其中简单矩阵分为TN和STN两种,主动矩阵则以薄膜式晶体管(TFT)为主。TFT LCD的现实质量是最佳的,从硬件角度看,一块LCD屏显示图像不但需要LCD驱动器,还…

艾拓琪光电威灏光电携手无锡哲讯启动SAP ERP数字化转型项目,共创未来发展

4月16日,艾拓琪光电&威灏光电携手SAP实施商无锡哲讯举行SAP数字化转型项目启动会,全面推动企业数智化转型。启动会受到双方企业高度重视,苏州艾拓琪总经理何总、安徽威灏光电总经理刘总,无锡哲讯总经理崔新华先生及全体项目团队成员出席本次SAP ERP项目启动会。苏州艾拓…

PgSQL之WITH Queries/Statement

PostgreSQL WITH 子句 在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。 WITH 子句有助于将复杂的大型查询分解为更简单的表单,便于阅读。这些语句通常称为通用表表达式(Common Table Express…

在 Elasticsearch 中扩展 ML 推理管道:如何避免问题并解决瓶颈

作者:来自 Elastic Iulia Feroli 是时候考虑语义搜索运营了吗? 无论你是一位经验丰富的搜索工程师,希望探索新的人工智能功能,还是一位机器学习专家,希望更多地利用搜索基础设施来增强语义相似性模型 —— 充分利用这…

Qt菜单栏

文章目录 创建菜单栏创建菜单并在菜单栏中添加创建子菜单并添加到菜单创建菜单项并在菜单中添加分割线实现简易的记事本 Qt 窗口是通过 QMainWindow类 来实现的 创建菜单栏 Qt 中的菜单栏是通过 QMenuBar 这个类来实现的,一个窗口最多只有一个菜单栏。 菜单栏包含…

项目7-音乐播放器5+注册账号

前端之登录注册页面案例_前端登录页面-CSDN博客 1.前端代码 MAPPER Insert("insert into user(username,password) values (#{username},#{password}) ")Integer insertUserInfo(String username,String password); Service public Result insertUserInfo(String…

wifi解析方法(简易版,未成功)

本篇文章阐述的wifi解析方法很简单,尽管失败了,不妨为一种思路。 如果文中阐述有不全或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18032045 出自【进步*于辰的博客】目录1、完整代码2、改…

超越现实的展览体验,VR全景展厅重新定义艺术与产品展示

随着数字化时代的到来,VR全景展厅成为了企业和创作者展示作品与产品的新兴选择。通过结合先进的虚拟现实技术,VR全景展厅不仅能够提供身临其境的观展体验,而且还拓展了传统展示方式的界限。 一、虚拟现实技术的融合之美 1、高度沉浸的观展体验…

IDEA自定义模板方法

新建一个自己的模板分组在分组下创建自己的模板样例:

KubeSphere中间件部署

中间件部署实战 语雀 RuoYi-Cloud部署实战 语雀 https://www.bilibili.com/video/BV13Q4y1C7hS?p79 1. 应用部署三要素 应用的部署方式(Deployment、StatefulSet、DaemonSet) 应用的数据挂载(数据、配置文件) 应用的可访…

Java 的注释

文章目录 java 的注释共有三种形式单行注释多行注释文档注释文档注释的文档需要命令进行生成GBK 不可映射问题 与大多数的编程语言一样,Java 中的注释也不会出现在可执行程序中。 因此我们可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码受…

jenkins从节点配置说明

目的 打包构建时使用从节点,从节点所在服务器配置4C8G5000G(服务器2) 前提 首先在服务器1上部署jenkins服务,即主节点,默认节点名称为master 步骤 1)登录进入jenkins平台,在系统设置中&…

一个静态页面接入科大讯飞3.5AI

静态文件html<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible&q…