Ubuntu系统下使用宝塔面板实现一键搭建Z-Blog个人博客的方法和流程
文章目录
- 1.前言
- 2.网站搭建
- 2.1. 网页下载和安装
- 2.2.网页测试
- 2.3.cpolar的安装和注册
- 3.本地网页发布
- 3.1.Cpolar临时数据隧道
- 3.2.Cpolar稳定隧道(云端设置)
- 3.3.Cpolar稳定隧道(本地设置)
- 4.公网访问测试
- 5.结语
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也不例外。但宝塔面板提供了不少主流和常用网站的一键部署安装方式,这就省去了我们很多麻烦。实际上,宝塔面板的一键部署功能,也是按照正常网站部署步骤进行(下载网站源代码、并在网站支持程序下安装网站本体),只是将一些简单步骤列入自动运行目录中。
访问Z-blog的官网后,我们可以看到Z-blog支持多个版本的php,同时也支持多种数据库软件,也就意味着我们需要先在宝塔面板上安装Apache、MySQL、PHP(即所谓的LAMP,如果是在Linux下安装Nginx、MySQL、PHP,则称为LNMP)。
我们也可以在宝塔面板的主页(可以在浏览器中输入本地地址:宝塔面板输出端口号)左侧,找到软件商店
按钮,点击进入软件商店页面。在这个页面,我们可以找到常用的网站运行支持程序,包括Nginx、Apache、MySQL、PHP、phpMyadmin、Tomcat、Docker管理器、Redis等等。我们找到所需的软件,点击该软件条目右侧的“安装”,即可将其安装至ubuntu系统上。
为保证Z-blog网站的兼容性,笔者选择PHP7.2安装。如果一些网站对PHP版本有指定的,只要选择对应PHP版本安装即可。
完成Apache、MySQL、PHP几项软件的安装后,我们可以点击软件商店页面上方的已安装
按钮,查看已经安装的软件。同时,也可以在这里切换每个软件的版本。
接着,点击宝塔面板主界面左侧的数据库
按钮,进入数据库设置页面。在这里我们为Z-blog设置一个数据库,设置内容主要是数据库名称和密码。
数据库设置完成后,我们点击宝塔面板主界面左侧的“软件商店”。进入软件商店后,在页面上方找到一键部署
按钮,进入可以一键部署的网站分页,从中选取Z-blog
条目,点击该条目右侧的一键部署
按钮。
接着进入网站基本设置窗口,在这里我们可以指定网站的基本信息,这些信息包括:
- 输出端口号 - 在“域名”栏位,通过“打算设置的域名:打算使用的端口”形式设置;
- 根目录 – 这个栏位可改可不改,但这个根目录内容会与“域名”栏位联动,为防止混淆,笔者还是将其更改为zblog
- 数据库 – 这里填入我们之前设置的数据库信息即可;
- PHP版本 – 对于某些网站可能会要求使用特定版本的PHP,我们就可以在PHP版本栏位修改(前提是已经安装了对应版本的PHP软件)
完成这些设置后,就可以点击窗口下方的“提交”按钮,正式创建zblog网站。
网站创建完成后(一瞬间的事),宝塔面板会弹出已创建网站的地址,以及zblog后台登录用户名和密码。
2.2.网页测试
最后,我们在本地浏览器中输入localhost:81
(即本地81端口),尝试访问新建立的zblog网站。
但奇怪的是,zblog网站反馈数据库信息错误(数据库信息保存在zb_users文件夹的c_option.php文件中),因此我们依照网站提示,点击宝塔面板左侧的“网站”按钮,打开zblog的根目录,在根目录中找到zb_users文件夹下的c_option.php文件。
找到c_option.php
文件后,双击打开该文件进行编辑。在c_option.php文件的编辑窗口,可以找到ZC_MYSQL_XXXXXXX
格式的条目。这里我们可以看到,ZC_MYSQL_USERNAME
、ZC_MYSQL_PASSWORD
、ZC_MYSQL_NAME
三项内容都不对。
因此我们将之前设置的zblog数据库的数据库名、用户名和密码,替换掉现有内容,再点击编辑窗口左上角的“保存”按钮,将修改内容存入c_option.php文件中。
这时我们再访问zblog的网页,就能看到zblog网页已经能够正常显示。
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
Cpolar安装完成后,就可以再输入命令启动cpolar。
systemctl start cpolar
这时ubuntu系统会跳出启动服务的认证框,我们输入ubuntu系统的密码即可。
当然,我们也可以不使用systemctl级别命令,而是输入cpolar version
查询本地cpolar的版本号,只要能显示出版本信息,就说明cpolar安装完成。
为保证cpolar能在ubuntu系统上长期运行,以此保证数据隧道的稳定存续,最好将cpolar添加进ubuntu开机自启列表。只要在ubuntu的命令行界面,输入命令将cpolar添加进自启列表中。
sudo systemctl status cpolar
为保证每位用户的数据安全,并为每位客户创建单独的数据隧道,cpolar以用户密码和token码进行用户验证,因此我们在使用cpolar之前,需要进行用户注册。注册过程非常简单,只要在cpolar主页右上角点击“用户注册”,在注册页面填入必要信息,就能完成注册。
完成cpolar用户注册后,我们就可以使用每位用户唯一的token码,激活cpolar的客户端。只要在cpolar官网登录后,就可以在验证
页面(或是“连接您的账户”窗口),找到用户唯一的token码。
将这个token码复制粘贴到ubuntu的命令行界面,cpolar客户端就会将这个token码写入本地cpolar.yml文件中(token码激活只需要进行一次即可),以此作为用户数据隧道的识别信息。具体命令格式为cpolar authtoken 用户唯一的token码
。
3.本地网页发布
到这里,我们在本地设备上安装了网页,也安装了cpolar内网穿透程序,接下来我们就可以使用cpolar,为本地网页创建一个安全高效的数据隧道,让我们本地的网页能够在公共互联网上访问到。
3.1.Cpolar临时数据隧道
为满足部分客户需要的网页临时测试功能,cpolar可以直接在cpolar户端创建临时数据隧道(每隔24小时重置一次公共互联网地址,)。要创建临时数据隧道,我们直接在本地设备上登录cpolar客户端(在浏览器地址栏输入localhost:9200),并在cpolar客户端主界面点击隧道管理
项下的创建隧道
按钮,进入创建隧道设置页面。
在“创建隧道”页面,我们需要对几项信息设置,这些信息设置包括:
隧道名称
– 可以看做cpolar客户端的隧道信息注释,只要方便我们分辨即可;协议
–网站是网页程序,因此选择http协议;本地地址
– 本地地址即为本地网站的输出端口号,此处依照我们的设置,填入81;域名类型
–这里我们可以区分数据隧道是临时使用,或是长期存续。由于我们只是先进行临时测试,因此选择“随机域名”(二级子域名和自定义域名都是长期稳定隧道,需要在cpolar云端预留公共互联网地址)。地区
– 即服务器所在位置,我们依照实际使用地就近填写即可;
完成这些设置后,就可以点击页面下方的创建按钮
,建立起一条临时数据隧道。临时数据隧道创建完成后,cpolar客户端会自动跳转至隧道管理
项下的隧道列表
页面,在这里我们可以看到cpolar本地的所有数据隧道(无论临时还是长期)。我们也可以在这里,对数据隧道进行管理,包括开启、关闭或删除这条隧道,也可以点击“编辑”按钮,最这条数据隧道的信息进行修改。
而我们创建的能够连接本地网站的临时公共互联网网址,则可以在状态
项下的在线隧道列表
中找到。
将这里显示的公共互联网地址粘贴到浏览器地址栏,就能访问到本地的网页页面。
不过,此时的数据隧道只是临时数据隧道,每24小时就会重置一次。数据隧道重置后,cpolar生成的公共互联网地址就会变化,如果打算再次访问这个网页,就需要使用新生成的地址。
3.2.Cpolar稳定隧道(云端设置)
如果想要为本地网站设置能长期稳定存在的数据隧道,我们需要先将cpolar升级至VIP版。
Cpolar升级至付费版后,就可以登录cpolar的官网,并在用户主页面左侧找到预留
按钮,点击进入cpolar的数据隧道预留页面,在这里生成一个公共互联网地址(或称为数据隧道的入口)。此时这个地址没有连接本地的软件输出端口,因此可以看做是一条空白的数据隧道。
在预留页面,我们可以保留使用多种协议的数据隧道,这里我们选择保留二级子域名
栏位。
在“保留二级子域名”栏位,需要进行几项信息的简单设置:
地区
(服务器所在区域,就近选择即可)二级域名
(会最终出现在生成的公共互联网地址中,作为网络地址的标识之一)描述
(可以看做这条数据隧道的描述,能够与其他隧道区分开即可)。
完成这几项设置后,就可以点击右侧的保留
按钮,将这条数据隧道保留下来。
当然,如果这条数据隧道不打算再使用,还可以点击右侧的“x”将其轻松删除,节约宝贵的隧道名额。
3.3.Cpolar稳定隧道(本地设置)
完成cpolar云端的设置,并保留了空白数据隧道后,我们回到本地的cpolar客户端,将云端生成的空白数据隧道与本地的测试页面连接起来。
在本地设备上打开并登录cpolar客户端(可以在浏览器中输入localhost:9200直接访问,也可以在开始菜单中点击cpolar客户端的快捷方式)。
点击客户端主界面左侧隧道管理
项下的隧道列表
按钮,进入本地隧道的页面,再点击对应隧道的编辑
按钮。
在本地隧道的编辑
页面(与创建本地临时隧道的页面一样),我们只要对域名类型
进行修改,就能将cpolar云端设保留的公共互联网地址,与本地cpolar创建的zblog数据隧道连接起来。
我们已经在cpolar云端预留了二级子域名的数据隧道,因此将之前的随机域名
改选为二级子域名
(如果预留的是自定义域名,则勾选自定义域名),并在下一行Sub Domain
栏中填入预留的二级子域名
,这里我们填入“zblogtest”。
完成“域名类型”的更改后,就可以点击页面下方的更新
按钮,将cpolar云端的空白数据隧道与本地zblog网站连接起来,即生成了能够长期稳定存在的zblog网站地址。
4.公网访问测试
这时我们再次进入在线隧道列表
页面,就会发现本地zblog的公共互联网地址已经发生了变化,我们将新的本地zblog网站公共互联网地址粘贴到浏览器中,就能使用稳定数据隧道访问本地zblog网站。
5.结语
到这里,我们就成功的在本地ubuntu系统上,搭建起私人的zblog网站,并通过cpolar创建的内网穿透数据隧道,让互联网访客能轻松访问到我们的网站。虽然中间经历了小波折,但也算顺利解决。使用相同的思路,我们也能在本地搭建其他类型的网站,再通过cpolar创建的数据隧道,发布到公共互联网上,将我们的个人电脑升级为私人服务器,给我们的生活和工作带来更多方便。
相关文章:

Ubuntu系统下使用宝塔面板实现一键搭建Z-Blog个人博客的方法和流程
文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测试5.结语 1.前言 Ubuntu系统作…...
数据结构 | 第一章 绪论
问题求解与程序设计 这一节都是介绍性的内容,但是哥尼斯堡的七桥问题值得写写。 #include <stdio.h>int Euler(int mat[4][4], int n) {int count 0;for (int i 0; i < n; i) {int degree 0;for (int j 0; j < n; j) {degree mat[i][j];}if (degr…...
python爬虫入门教程(非常详细):如何快速入门Python爬虫?
示例示例Python爬虫入门教程什么是爬虫爬虫(又称网络爬虫)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它可以自动地抓取网页内容,并从中提取有用的数据,存储到本地文件或数据库中。 Python爬虫入门教…...
ElementUI浅尝辄止21:Tree 树形控件
树形组件:用清晰的层级结构展示信息,可展开或折叠。 树组件使用挺频繁的,常见于侧边栏树形目录、树形下拉选项按钮或搜索查询树形信息选项 1.如何使用? 基础的树形结构展示 <el-tree :data"data" :props"defa…...

插入排序,选择排序,交换排序,归并排序和非比较排序(C语言版)
前言 所谓排序,就是将一组数据按照递增或者递减的方式进行排列,让这组数据变得有序起来。排序在生活中运用的是十分广泛的,各行各业都用到了排序,比如我们在网购的时候就是按照某种排序的方式来选择东西的。所以去了解排序的实现也…...

【每日一题】1041. 困于环中的机器人
1041. 困于环中的机器人 - 力扣(LeetCode) 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。 机器人可以接受下列三条指令之…...

C# 采用3DES-MAC进行签名 base64解码与编码
** 3DES-MAC ** 3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一种消息认证码(MAC)算法,用于验证消息的完整性和真实性。3DES-MAC使用了3DES(Triple Data Encryption Standa…...

AI绘画:StableDiffusion实操教程-完美世界-魔女(附高清图下载)
前段时间我分享了StableDiffusion的非常完整的教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 尽管如此,还有读者反馈说,尽管已经成功安装,但生成的图片与我展示的结果相去甚远。真实感和质感之…...
python excel 读取及写入固定格式
import xlrd import xlwt import re import pandas as pd from datetime import date,datetimefile_path "C:\\Users\\function_model.xls" def readexcel():df pd.read_excel(file_path ,"配置")# e_id# id# expression# name# freq# column_data df[e…...
SQL Server进阶教程读书笔记
最近把SQL Server进阶教程重新读了一遍,顺便整理了一下书本中的知识点 1.关键知识点 CASE WHEN ❑ 高手使用select做分支,新手用where和having做分支 ❑ 要写ELSE,要写END,避免未匹配上得到NULL ❑ check到底怎…...

DHTMLX Gantt 8.0.5 Crack -甘特图
8.0.5 2023 年 9 月 1 日。错误修复版本 修复 修复通过gantt.getGanttInstance配置启用扩展而触发的错误警告修复启用skip_off_time配置时gantt.exportToExcel()的不正确工作示例查看器的改进 8.0.4 2023 年 7 月 31 日。错误修复版本 修复 修复数据处理器不跟踪资源数据…...

RHCA之路---EX280(5)
RHCA之路—EX280(5) 1. 题目 Using the example files from the wordpress directory under http://materials.example.com/exam280/wordpress create a WordPress application in the farm project For permanent storage use the NFS shares /exports/wordpress and /export…...
”轻舟已过万重山“-----我回归更新了-----
嘿,朋友们,很久不见,甚是想念,经历过漫长的暑期生活,也许你已然收获满满。有可能你拿到了那梦寐以求的机动车行驶证,开着家长的小车在道路上自由的兜风;有可能你来了一场说走就走的旅行…...

win11右键菜单恢复win10风格
按 winx 输入以下命令 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve...
Nginx安装及配置负载均衡
文章目录 官网下载Nginx解压安装常用命令配置负载均衡七层负载均衡nginx的负载均衡语法nginx的负载均衡策略故障下线和备份服务设置proxy_pass参数 官网下载Nginx http://nginx.org/en/download.html 注:下载稳定版,即Stateable Version的,…...

C# OpenCvSharp 通道分离
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions;namespac…...
oracle 自定义存储过程(非常简单明了)
语法说明 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN %TYPE, 参数2 IN %TYPE, 参数3 OUT %TYPE) IS 变量1 %TYPE; 变量2 %TYPE; BEGIN存储过程执行语句块 END 存储过程名字;举例说明 1.举一个简单的例子 定义存储过程 easyProcedure 入参为 两个数 出参为 他们的…...

layui--记录
layui 行点击事件:点了没反应? //监听行工具事件layui.table.on(tool(demo), function (obj) {//alert(222) });原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。 <table id"demo" lay-filter"dem…...

【校招VIP】测试技术考点之单元测试集成测试
考点介绍: 单元测试,集成测试的区别是:方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…...

【Redis专题】Redis核心数据结构实战与高性能原理解析
目录 前言课程内容一、redis数据类型1.1 字符串(string)类型:比较简单的一种使用存储模型常用命令:(截取自【菜鸟教程】)部分演示应用场景 1.2 哈希(hash)类型:同类数据归…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...