当前位置: 首页 > news >正文

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问

文章目录

  • 1.前言
  • 2.网站搭建
    • 2.1. 网页下载和安装
    • 2.2.网页测试
    • 2.3.cpolar的安装和注册
  • 3.本地网页发布
    • 3.1.Cpolar临时数据隧道
    • 3.2.Cpolar稳定隧道(云端设置)
    • 3.3.Cpolar稳定隧道(本地设置)
  • 4.公网访问测试
  • 5.结语

转发自cpolar极点云的文章:【宝塔建站】Ubuntu下使用宝塔面板一键搭建Z-Blog个人博客

1.前言

Ubuntu系统作为Linux系统的一个重要分支,既有Linux系统的轻量化、高扩展性和长时间稳定运行,也拥有Windows一样的友好图形界面,因此可以作为熟悉服务器系统的良好选择。对于笔者来说,ubuntu系统最大的用处,就是可以让家里老旧的电脑重焕生机,让本已退居二线的电脑与cpolar内网穿透软件搭配,成为私人服务器,搭建自己喜欢的各种网站。今天,笔者就为大家介绍,如何使用cpolar内网穿透+Z-blog搭建私人博客网站。

2.网站搭建

Z-blog是知名的个人博客网站,其小巧的体积和数量众多的扩展插件,让Z-blog有了很高的可玩性,也成为不少私人博主搭建个人博客的首选。当然,在个人电脑上搭建的Z-blog网站很难被公共互联网访客访问到,但通过cpolar搭建的内网穿透数据隧道,就能让个人电脑变身成为私人服务器,在这台电脑上搭建的个人博客网站,也自然能被大家访问到。现在,就让我们开始吧。

2.1. 网页下载和安装

由于Z-blog的运行需要多个支持程序,如Apache或Nginx、PHP、SQL等等,为方便对这些网页运行软件管理,笔者使用宝塔面板建立网站运行环境,从而避免对这些网页运行所需软件分别设置的麻烦。

通常,一个正式软件都会有自己的官网,我们可以在软件官网上找到该软件的下载、安装指导等等信息,Z-blog也不例外。但宝塔面板提供了不少主流和常用网站的一键部署安装方式,这就省去了我们很多麻烦。实际上,宝塔面板的一键部署功能,也是按照正常网站部署步骤进行(下载网站源代码、并在网站支持程序下安装网站本体),只是将一些简单步骤列入自动运行目录中。

20230525091601

访问Z-blog的官网后,我们可以看到Z-blog支持多个版本的php,同时也支持多种数据库软件,也就意味着我们需要先在宝塔面板上安装Apache、MySQL、PHP(即所谓的LAMP,如果是在Linux下安装Nginx、MySQL、PHP,则称为LNMP)。

20230525091602

我们也可以在宝塔面板的主页(可以在浏览器中输入本地地址:宝塔面板输出端口号)左侧,找到软件商店按钮,点击进入软件商店页面。在这个页面,我们可以找到常用的网站运行支持程序,包括Nginx、Apache、MySQL、PHP、phpMyadmin、Tomcat、Docker管理器、Redis等等。我们找到所需的软件,点击该软件条目右侧的“安装”,即可将其安装至ubuntu系统上。

为保证Z-blog网站的兼容性,笔者选择PHP7.2安装。如果一些网站对PHP版本有指定的,只要选择对应PHP版本安装即可。

20230525091603

完成Apache、MySQL、PHP几项软件的安装后,我们可以点击软件商店页面上方的已安装按钮,查看已经安装的软件。同时,也可以在这里切换每个软件的版本。

20230525091604

接着,点击宝塔面板主界面左侧的数据库按钮,进入数据库设置页面。在这里我们为Z-blog设置一个数据库,设置内容主要是数据库名称和密码。

20230525091605

数据库设置完成后,我们点击宝塔面板主界面左侧的“软件商店”。进入软件商店后,在页面上方找到一键部署按钮,进入可以一键部署的网站分页,从中选取Z-blog条目,点击该条目右侧的一键部署按钮。

20230525091606

接着进入网站基本设置窗口,在这里我们可以指定网站的基本信息,这些信息包括:

  • 输出端口号 - 在“域名”栏位,通过“打算设置的域名:打算使用的端口”形式设置;
  • 根目录 – 这个栏位可改可不改,但这个根目录内容会与“域名”栏位联动,为防止混淆,笔者还是将其更改为zblog
  • 数据库 – 这里填入我们之前设置的数据库信息即可;
  • PHP版本 – 对于某些网站可能会要求使用特定版本的PHP,我们就可以在PHP版本栏位修改(前提是已经安装了对应版本的PHP软件)

完成这些设置后,就可以点击窗口下方的“提交”按钮,正式创建zblog网站。

20230525091607

网站创建完成后(一瞬间的事),宝塔面板会弹出已创建网站的地址,以及zblog后台登录用户名和密码。

20230525091608

2.2.网页测试

最后,我们在本地浏览器中输入localhost:81(即本地81端口),尝试访问新建立的zblog网站。

20230525091609

但奇怪的是,zblog网站反馈数据库信息错误(数据库信息保存在zb_users文件夹的c_option.php文件中),因此我们依照网站提示,点击宝塔面板左侧的“网站”按钮,打开zblog的根目录,在根目录中找到zb_users文件夹下的c_option.php文件。

20230525091610

20230525091611

20230525091612

找到c_option.php文件后,双击打开该文件进行编辑。在c_option.php文件的编辑窗口,可以找到ZC_MYSQL_XXXXXXX格式的条目。这里我们可以看到,ZC_MYSQL_USERNAMEZC_MYSQL_PASSWORDZC_MYSQL_NAME三项内容都不对。

20230525091613

因此我们将之前设置的zblog数据库的数据库名、用户名和密码,替换掉现有内容,再点击编辑窗口左上角的“保存”按钮,将修改内容存入c_option.php文件中。

20230525091614

这时我们再访问zblog的网页,就能看到zblog网页已经能够正常显示。

20230525091615

2.3.cpolar的安装和注册

完成网页的部署后,就可以转入cpolar的安装。想要在ubuntu系统上安装cpolar,可以使用简便的一键安装脚本进行安装。只要在ubuntu的命令行界面输入以下命令,就可以自动执行安装程序(需要注意的是,可能有的ubuntu版本没有安装curl工具,因此最好先执行命令sudo aptinstall curl安装curl工具)。

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

Cpolar一键安装脚本:

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

20230525091616

Cpolar安装完成后,就可以再输入命令启动cpolar。

systemctl start cpolar

20230525091617

这时ubuntu系统会跳出启动服务的认证框,我们输入ubuntu系统的密码即可。

20230525091618

当然,我们也可以不使用systemctl级别命令,而是输入cpolar version查询本地cpolar的版本号,只要能显示出版本信息,就说明cpolar安装完成。

20230525091619

为保证cpolar能在ubuntu系统上长期运行,以此保证数据隧道的稳定存续,最好将cpolar添加进ubuntu开机自启列表。只要在ubuntu的命令行界面,输入命令将cpolar添加进自启列表中。

sudo systemctl status cpolar

20230525091620

为保证每位用户的数据安全,并为每位客户创建单独的数据隧道,cpolar以用户密码和token码进行用户验证,因此我们在使用cpolar之前,需要进行用户注册。注册过程非常简单,只要在cpolar主页右上角点击“用户注册”,在注册页面填入必要信息,就能完成注册。

20230525091621

20230525091622

完成cpolar用户注册后,我们就可以使用每位用户唯一的token码,激活cpolar的客户端。只要在cpolar官网登录后,就可以在验证页面(或是“连接您的账户”窗口),找到用户唯一的token码。

20230525091623

将这个token码复制粘贴到ubuntu的命令行界面,cpolar客户端就会将这个token码写入本地cpolar.yml文件中(token码激活只需要进行一次即可),以此作为用户数据隧道的识别信息。具体命令格式为cpolar authtoken 用户唯一的token码

20230525091624

3.本地网页发布

到这里,我们在本地设备上安装了网页,也安装了cpolar内网穿透程序,接下来我们就可以使用cpolar,为本地网页创建一个安全高效的数据隧道,让我们本地的网页能够在公共互联网上访问到。

3.1.Cpolar临时数据隧道

为满足部分客户需要的网页临时测试功能,cpolar可以直接在cpolar户端创建临时数据隧道(每隔24小时重置一次公共互联网地址,)。要创建临时数据隧道,我们直接在本地设备上登录cpolar客户端(在浏览器地址栏输入localhost:9200),并在cpolar客户端主界面点击隧道管理项下的创建隧道按钮,进入创建隧道设置页面。

20230525091625

在“创建隧道”页面,我们需要对几项信息设置,这些信息设置包括:

  • 隧道名称 – 可以看做cpolar客户端的隧道信息注释,只要方便我们分辨即可;
  • 协议 –网站是网页程序,因此选择http协议;
  • 本地地址 – 本地地址即为本地网站的输出端口号,此处依照我们的设置,填入81;
  • 域名类型 –这里我们可以区分数据隧道是临时使用,或是长期存续。由于我们只是先进行临时测试,因此选择“随机域名”(二级子域名和自定义域名都是长期稳定隧道,需要在cpolar云端预留公共互联网地址)。
  • 地区 – 即服务器所在位置,我们依照实际使用地就近填写即可;

20230525091626

完成这些设置后,就可以点击页面下方的创建按钮,建立起一条临时数据隧道。临时数据隧道创建完成后,cpolar客户端会自动跳转至隧道管理项下的隧道列表页面,在这里我们可以看到cpolar本地的所有数据隧道(无论临时还是长期)。我们也可以在这里,对数据隧道进行管理,包括开启、关闭或删除这条隧道,也可以点击“编辑”按钮,最这条数据隧道的信息进行修改。

20230525091627

而我们创建的能够连接本地网站的临时公共互联网网址,则可以在状态项下的在线隧道列表中找到。

20230525091628

将这里显示的公共互联网地址粘贴到浏览器地址栏,就能访问到本地的网页页面。

20230525091629

不过,此时的数据隧道只是临时数据隧道,每24小时就会重置一次。数据隧道重置后,cpolar生成的公共互联网地址就会变化,如果打算再次访问这个网页,就需要使用新生成的地址。

3.2.Cpolar稳定隧道(云端设置)

如果想要为本地网站设置能长期稳定存在的数据隧道,我们需要先将cpolar升级至VIP版。

20230525091629

Cpolar升级至付费版后,就可以登录cpolar的官网,并在用户主页面左侧找到预留按钮,点击进入cpolar的数据隧道预留页面,在这里生成一个公共互联网地址(或称为数据隧道的入口)。此时这个地址没有连接本地的软件输出端口,因此可以看做是一条空白的数据隧道。

20230525091631

在预留页面,我们可以保留使用多种协议的数据隧道,这里我们选择保留二级子域名栏位。

20230525091632

在“保留二级子域名”栏位,需要进行几项信息的简单设置:

  • 地区(服务器所在区域,就近选择即可)
  • 二级域名(会最终出现在生成的公共互联网地址中,作为网络地址的标识之一)
  • 描述(可以看做这条数据隧道的描述,能够与其他隧道区分开即可)。

完成这几项设置后,就可以点击右侧的保留按钮,将这条数据隧道保留下来。

20230525091633

当然,如果这条数据隧道不打算再使用,还可以点击右侧的“x”将其轻松删除,节约宝贵的隧道名额。

20230525091634

3.3.Cpolar稳定隧道(本地设置)

完成cpolar云端的设置,并保留了空白数据隧道后,我们回到本地的cpolar客户端,将云端生成的空白数据隧道与本地的测试页面连接起来。

在本地设备上打开并登录cpolar客户端(可以在浏览器中输入localhost:9200直接访问,也可以在开始菜单中点击cpolar客户端的快捷方式)。

点击客户端主界面左侧隧道管理项下的隧道列表按钮,进入本地隧道的页面,再点击对应隧道的编辑按钮。

20230525091635

在本地隧道的编辑页面(与创建本地临时隧道的页面一样),我们只要对域名类型进行修改,就能将cpolar云端设保留的公共互联网地址,与本地cpolar创建的zblog数据隧道连接起来。

我们已经在cpolar云端预留了二级子域名的数据隧道,因此将之前的随机域名改选为二级子域名(如果预留的是自定义域名,则勾选自定义域名),并在下一行Sub Domain栏中填入预留的二级子域名,这里我们填入“zblogtest”。

20230525091636

完成“域名类型”的更改后,就可以点击页面下方的更新按钮,将cpolar云端的空白数据隧道与本地zblog网站连接起来,即生成了能够长期稳定存在的zblog网站地址。

4.公网访问测试

这时我们再次进入在线隧道列表页面,就会发现本地zblog的公共互联网地址已经发生了变化,我们将新的本地zblog网站公共互联网地址粘贴到浏览器中,就能使用稳定数据隧道访问本地zblog网站。

20230525091637

20230525091638

5.结语

到这里,我们就成功的在本地ubuntu系统上,搭建起私人的zblog网站,并通过cpolar创建的内网穿透数据隧道,让互联网访客能轻松访问到我们的网站。虽然中间经历了小波折,但也算顺利解决。使用相同的思路,我们也能在本地搭建其他类型的网站,再通过cpolar创建的数据隧道,发布到公共互联网上,将我们的个人电脑升级为私人服务器,给我们的生活和工作带来更多方便。

相关文章:

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问

文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测试5.结语 转发自cpolar极点云的…...

深入理解设计原则之单一职责原则(SRP)

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 SRP:单一职责原则 系列文章目录1、单一职责原则的定义和解读2、单一职责原则案例解读2.1、违背单一职责原则反面案例2.2、违背单一职责原则反面案例 - 解决方案 3…...

钉钉群通过短信转发器接收手机短信消息

1.短信转发器官网下载 下载地址 首发地址:https://github.com/pppscn/SmsForwarder/releases国内镜像:https://gitee.com/pp/SmsForwarder/releases网盘下载:https://wws.lanzoui.com/b025yl86h 访问密码:pppscn 使用文档 首发…...

【C++模版】模版进阶 {非类型模版参数; 模版的特化; 模版的分离编译; 模版总结}

一、非类型模版参数 模板参数分类型形参与非类型形参。 类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来…...

Azure Active Directory 的功能和优势

Azure Active Directory (Azure AD) 是 Microsoft 基于云的多租户目录和标识管理服务。 Azure AD 有助于支持用户访问资源和应用程序,例如: 位于企业网络上的内部资源和应用。 Microsoft 365、Azure 门户和 SaaS 应用程序等外部资源。 为组织开发的云应…...

mysql查询语句执行过程及运行原理命令

Mysql查询语句执行原理 数据库查询语句如何执行? DML语句首先进行语法分析,对使用sql表示的查询进行语法分析,生成查询语法分析树。语义检查:检查sql中所涉及的对象以及是否在数据库中存在,用户是否具有操作权限等视…...

可视化探索开源项目的 contributor 关系

引语:作为国内外最大的代码托管平台,根据最新的 GitHub 数据,它拥有超 372,000,000 个仓库,其中有 28,000,000 是公开仓。分布式图数据库 NebulaGraph 便是其中之一,同其他开源项目一样,NebulaGrpah 也有自…...

SpringBoot 实现启动项目后立即执行方法的几种方式

在项目开发中某些场景必须要用到启动项目后立即执行方式的功能,如我们需要去初始化数据到redis缓存,或者启动后读取相应的字典配置等,这篇文章主要聊聊实现立即执行的几种方法。 一、CommandLineRunner和ApplicationRunner 这两者的实现方法…...

2021第十二届蓝桥杯Python组国赛【真题+解析+代码】

🎁2021第十二届蓝桥杯python组国赛真题 🚀 真题练习,冲刺国赛 🚀 2021第十二届蓝桥杯python组国赛真题解析代码 博观而约取,厚积而薄发 🏆国赛真题目录 文章目录 🎁2021第十二届蓝桥杯python组国…...

3D引擎渲染管理系统概览

3D引擎渲染管理系统, 目前由: RendererScene, RendererSubScene, RendererSceneGraph, RenderProcess, RenderingCacheProcess/FBOProcess, (Material)PassGraph, (Material)PassNode, Material(Shader)Pipeline, RenderingFlowContainer, RenderableEnti…...

蔚来Java实习面经

目录 1.解释一下MySQL中脏读、不可重复读、幻读2.索引失效的场景有哪些?3.Explain执行计划用过吗4.Type字段有哪一些5.binlog和redolog的区别6.Redis基本数据类型7.有序集合的底层数据结构使用的是?8.跳表插入数据的过程能描述一下吗9.线程池&#xff0c…...

nginx 搭建http-flv(rtmp)流媒体的一次尝试

nginx 搭建http-flv(rtmp)流媒体的一次尝试 项目需要通过调用海康摄像头实现远程监控,但是由于网络限制,只能通过代理来调用,因此只能放弃海康官网提供的视频插件,经过一番搜索,决定采用此种方式:nginx 搭…...

Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理

Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理 目录 Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理 一、简单介绍 二、实现原理 三、注意实现 四、实现步骤 六、关键脚本 附加: 声音设置相关 一、简单介绍…...

【A卡,Windows】stable diffusion webui下载安装避坑指南

观前提醒 本文内容都是本人亲身经历的,一个一个安装下载测试所感,当然如果你更想用傻瓜式集成包的,那还是跳过这篇文章吧。 当然我不推荐这篇文章的操作,因为我用了差不多1h才有一副图,有N卡,就用N卡&…...

并发编程-系统学习篇

并发编程的掌握过程并不容易。 我相信为了解决这个问题,你也听别人总结过:并发编程的第 一原则, 那就是不要写并发程序 这个原则在我刚毕业的那几年曾经是行得通的,那个时候多核服务器还是一种奢侈品,系统的并发量也很…...

在浏览器网页上使用JavaScript如何将mp4视频转换成gif动态图片

前言 要将mp4视频转换为gif动态图像&#xff0c;可以使用JavaScript库中的FFmpeg.js。这个库可以使用JavaScript读取和写入文件&#xff0c;也可以使用canvas和WebGL在浏览器中进行视频处理。 步骤如下&#xff1a; 1.在网站中引入FFmpeg.js库 <script src"https:/…...

Nginx网络服务——主配置文件-nginx.conf

Nginx网络服务——主配置文件-nginx.conf 一、全局配置的六个模块简介二、nginx配置文件的详解1.全局配置模块2.I/O 事件配置3.HTTP 配置4.Web 服务的监听配置5.其他设置 三、访问状态统计与控制1.访问状态统计2.基于授权的访问控制3.基于客户端的访问控制 一、全局配置的六个模…...

Java Map集合

8 Map集合 HashMap: 元素按照键是无序,不重复,无索引,值不做要求LinkedHashMap: 元素按照键是有序,不重复,无索引,值不做要求8.1 Map集合概述和特点 Map集合是一种双列集合,每个元素包含两个值Interface Map<K,V>; K:键的类型,V:值的类型Map集合的每个元素的格…...

数据库中的中英文术语大全

一、基础理论 基础理论英文术语中文释义data数据database&#xff08;DB&#xff09;数据库database system&#xff08;dbs&#xff09;数据库系统database management system数据库管理系统database administrator数据库管理员relational model关系模型relational database关…...

调用华为API实现身份证识别

调用华为API实现身份证识别 1、作者介绍2、调用华为API实现身份证识别2.1 算法介绍2.1.1OCR简介2.1.2身份证识别原理2.1.3身份证识别应用场景 2.2 调用华为API流程 3、代码实现3.1安装相关的包3.2代码复现3.3实验结果 1、作者介绍 雷千龙&#xff0c;男&#xff0c;西安工程大…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...