阿里云 + WSL + Tailscale:我没买第二台服务器,低成本把博客系统部署上线了

目录 0. 项目内容 需求说明 第一步:先了解该项目的整体软件架构组成 关于数据库的说明 任务拆解 一、背景:我为什么不买第二台服务器 二、项目架构 2.1 Tailscale 在这里起什么作用 2.2 两台机器的角色分工 2.3 架构 2.4 五个关键设计决策 三、实施过程 3.0 修改主机名 3.1 node1 安装相关软件 3.2 node2 上面相关软件的安装 3.3 安装 Tomcat 四、测试 nginx 反向代理和 node2 的博客访问 验收清单 五、遇到的问题以及解决思路 5.1 JDK 安装包版本号不兼容 5.2 数据库的导入顺序 5.3 JDK 环境变量问题 5.4 WSL 里 ssh node2 被"掐断",IP 却是 198.18.0.22 5.5 Tailscale 的 DNS 问题 总结与思考 阅读范围:本篇只写博客系统本身的搭建与排错。报警部分虽然已经跑起来了,但那是我借助 AI 助手完成的,里面不少逻辑我还没吃透;等我把它研究清楚、自己亲手重搭一遍,再单独写一篇。这个项目我会拆成几篇来写,本篇是其中一篇。 本篇不展开、放到下一篇的:Prometheus / Grafana 监控栈与 node_exporter 采集、alert-check 告警(钉钉 + 邮件)、mysql-backup 备份、tailscale-watchdog 自愈、云监控兜底;以及 Tomcat 的 systemd 托管与 JVM 参数、Nginx 的主备切换与超时压缩。 ...

October 10, 2026 · 6 分钟 · 1242 字

一次"钻牛角尖"的 Linux 实践:清空目录,到底该用 `rm -rf /*` 还是 `find ... -exec rm -rf {} +`?

目录 ⚠️ 先看安全警告 一、最朴素的写法:rm -rf /root/* 二、先分清:-maxdepth 限制的是 find,不是 rm 三、-delete:另一种清空方式,但差别不小 四、我踩的最大一个坑:想用 grep 过滤 find 的结果 为什么会错? xargs 本身也不安全 五、怎样真正地"反选隐藏项”? 六、find ... ! -name '.*' -exec rm -rf {} + 和 rm -rf /root/* 到底啥区别 七、再进一步:去掉 -maxdepth 1 会怎样? 八、又一个"看起来很聪明"的写法:ls -a | grep -vE '^\.+' | xargs rm -rf 问题一(致命):ls 输出的是"显示名",不是"可操作的路径" 问题二:grep -vE '^\.+' 排除的是所有隐藏项,不只是 . 和 .. 问题三:xargs 默认按空白拆分,文件名有空格就出事 问题四:以 - 开头的文件名会被 rm 当成选项 正确写法对比 九、我最后总结出的两套安全写法 1. 清空目录下所有内容(含隐藏项),保留目录本身 2. 只清除非隐藏内容,保留第一层隐藏项 十、我算不算钻牛角尖? 十一、关于"培训课为什么不讲这个" 总结 起因很简单:我想把 /root 目录里的东西清空,但保留 /root 本身。 结果一路从 rm -rf 研究到 find 的 -mindepth、-maxdepth、-delete,还踩了个"用 grep 过滤文件名"的大坑。 这篇文章就是这次探究的完整记录。 ...

September 28, 2026 · 6 分钟 · 1152 字

grep 的引号、反斜杠与正则方言:一次讲清我踩过的坑

目录 1. 问题背景 1.1 先准备一份测试数据 1.2 第一条命令 2. 先记住一件事:你敲的字符,要过两道关卡 3. 疑惑一:引号加不加、加哪种,到底有没有区别 3.1 简单字符串:结果一样,但原因值得知道 3.2 包含空格:Shell 会把一个参数切成两个 3.3 包含通配符:Shell 会先把 *.txt 展开 3.4 包含变量 $:双引号会展开,单引号不会 3.5 三种写法小结 4. 疑惑二:/example/ 在 grep 里为什么不好使 4.1 现象 4.2 原因:/ 不是 grep 的定界符 4.3 顺带踩的大坑:命令敲下去"没反应" 4.4 续行符:\ 放在什么位置才不翻车 5. 疑惑三:都是反斜杠,为什么有的匹配有的不匹配 5.1 三方对照表 5.2 三条核心原则 6. 疑惑四:+ 在 BRE 和 ERE 里完全是两回事 6.1 打开 ERE 的开关是 -E 6.2 \d 为什么用不了:这是 -P 的事 7. 疑惑五:为什么两条不同的命令,结果一模一样 7.1 先看一个坑:字符集 [example]+ 7.2 分组 (example)+ 和字面量 example 7.3 照妖镜 -o:把藏起来的差别照出来 8. 疑惑六:grep -w 和 \b 是一回事吗 9. 疑惑七:grep 和 awk 的边界在哪 10. 总结与速查表 摘要:这篇文章记录我复习 Linux grep 时踩过的一串坑:引号加不加到底有没有区别、反斜杠什么时候生效什么时候被吃掉、/example/ 为什么在 grep 里不好使、命令敲下去为什么"没反应",以及 BRE / ERE / PCRE 三套方言的区别。全文按「现象 → 原因 → 结论」组织,一共 7 个疑惑,末尾附一张速查表。 ...

September 13, 2026 · 8 分钟 · 1500 字

仅主机 node 能 ping 通 jumper,却同步不上 NTP?删掉一行公网 pool 就好了——chrony 选源逻辑排错全过程

目录 0. 先看答案(赶时间的人只看这一节) 1. 实验环境 2. 现象复现(问题长什么样) 2.1 node1_copy 上:ping 通 2.2 node1_copy 上:NTP 同步失败 2.3 对照:WSL 里同样混配公网源,却正常 3. 排错总思路:把链路分层,一层层排除 4. 排查过程(每一步:命令 + 输出 + 解读) 4.1 第 1 层:先排除客户端 4.2 第 2 层:确认 jumper 的 NTP 服务到底通不通(关键一步) 4.2.1 宿主机上,用 w32tm 对 jumper 三个 IP 发 NTP 探测 4.2.2 再从 WSL 里发一个「手工构造」的原始 NTP 请求 4.3 第 3 层:模拟「仅主机网段」的源 IP 去访问,排除防火墙 / allow 在拦 4.4 第 4 层:收窄到源头——node1_copy 自己的 chrony 配置 4.5 验证:删掉公网 pool 那一行,立刻恢复 5. 为什么删掉一行就好了?(核心原理,三个原因叠加) 5.1 原因一:仅主机节点没有公网出口,公网源「永远不可达」 5.2 原因二(重点中的重点):chrony 是「平滑优先」,不是「故障切换」 5.3 原因三:pool 是动态源,会不断「换人」,让选择过程更不稳定 5.4 为什么删掉那行就立刻 OK? 5.5 为什么 WSL 可以?(对照实验的真正价值) 6. 怎么彻底修好 & 加固 6.1 仅主机节点:只留内网源(本次修复) 6.2 以后 node2_copy 怎么做? 6.3 如果非要保留公网源做冗余,按推荐程度排序 7. 常用命令速查表(以后直接抄) 7.1 chrony 状态查看 7.2 chronyc sources 输出列含义(这次排错靠它) 7.3 服务管理 7.4 排查网络路径 8. 如果现象不一样:对照表(按你的现象找答案) 9. 复习要点(避坑清单) 前言 ...

August 26, 2026 · 8 分钟 · 1630 字

【实战】DNS建设案例_

目录 【实战】DNS建设案例: 0.需求 1.准备工作 2.进行标准化的服务器配置 1.修改ip 2.修改主机名 3.修改hosts文件 4.免密配置 3.实操流程 4.在node1和node2中安装相关服务 1.node1上面安装相关软件 1.先在node1上面安装jdk软件包 1.环境变量配置 2.任意目录测试一下 2.最后安装tomcat服务器 1,从官网下载阿帕奇的tar的包 2.解压这个包 3.运行这个软件,并在浏览器查看 2.在node2安装相关软件 1.安装NFS 3安装ftp软件 5.在node3中配置dns服务器 1.修改named.conf这个文件 2.修改vi /etc/named.rfc1912.zones 3.修改/var/named/itcast.local.db 4.修改/var/named/192.168.149.rev文件 5.检测 6.启动服务以及开放端口 6.测试操作 6.总结 【实战】DNS建设案例: 0.需求 目前我们在node2节点中已经有FTP服务器、NFS服务器, 同时大家需要在node1中部署一个tomcat服务器。 请对三个服务设置对应得域名,并基于DNS进行内网解析,从而实现基于域名访问,要求DNS服务器架设至node3, 配置后, 不管是在node1还是node2都可以基于此DNS进行访问 NFS服务器域名: nfs.itcast.local FTP服务器域名: ftp.itcast.local tomcat服务器域名: www.itcast.local FTP服务器要求: 1- 禁锢FTP目录: /export/ftp 2- 禁止匿名用户访问,可以使用系统中任意存在用户访问即可 3- 不管在服务器还是在windows中, 都可以直接使用域名的方式访问到ftp服务器 windows中,建议使用filezilla.exe 软件来连接 NFS服务器: 共享目录: /export/nfs 要求 node1在挂载这个目录的时候,请使用域名方式进行挂载即可(测试 临时挂载即可) 1.准备工作 我们在进行这个综合案例的时候,需要准备3台主机,分别是node1,node2,node3 而node3的话,我们需要对node1克隆就可以得到了,开启这三台Linux主机就可以进行下一个步骤了 2.进行标准化的服务器配置 因为node1和node2的之前配置过了免密ssh登录,以及用主机名可以ping通,因此我们只需要对node3进行修改就可以了 ip: 192.168.149.129 主机名: node3.itcast.cn hosts文件: 增加对node3的解析 免密配置:增加对node3的免密 1.修改ip 我们需要打开 vim /etc/NetworkManager/system-connections/ens33.nmconnection这个文件,然后把主机修改为129网段就可以了,随后,我们重启这个服务,并把网卡也重启一下,是配置生效 这个是重启这个服务项 这个就是重启网卡这个服务了 最后我们查询一下,是否成功了呢 发现这修改是生效的 ...

August 18, 2026 · 3 分钟 · 511 字

DNS服务器

目录 一.DNS服务器软件介绍 1… DNS的基本概念 2.DNS结构 1.根域 .(root) 2.顶级域DNS服务器(TLD DNS Servers) 3.权威DNS服务器(Authoritative DNS Servers) 3.DNS服务器软件介绍 二.在DNS服务器上安装BIND 三.配置BIND主配置⽂件 四.配置内部区域注册⽂件 1.正向解析 1.添加正向解析声明 2.添加正向解析内容 2.反向解析 1.添加反向解析的声明 2.添加反向解析的内容 3.语法检测 五.启动BIND服务 六.配置防⽕墙 七.客⼾端配置操作【node1】 八.测试服务器是否正常 九.如何清空 十.总结 一.DNS服务器软件介绍 1… DNS的基本概念 DNS(Domain Name System,域名系统)是互联⽹的“电话簿”,它⽤于将⼈类易于记忆的域 名(如 www.baidu.com)转换为计算机能够理解的 IP 地址(如 192.0.2.1)。由于直接记住数字地址 不如记住域名⽅便,DNS 使得⼈们能够通过域名访问⽹站,⽽不必关⼼背后的数字地址。 作⽤: • 域名映射到IP地址:DNS使得⽤⼾在浏览器中输⼊域名时,能够查询到相应的IP地址,从⽽连接到 ⽬标服务器。 • 反向解析:除了域名到IP的正向解析,DNS 还⽀持 IP 地址到域名的反向解析,这对⽹络安全和故 障排查等⾮常重要。 • 提供负载均衡:通过 DNS,可以实现不同 IP 地址的轮换,帮助分散流量,提升访问速度和可靠 性。 • 简化⽹络配置:通过 DNS,管理员只需使⽤域名管理服务,简化了⽹络配置和维护。 2.DNS结构 1.根域 .(root) 在整个 DNS 系统的最上⽅⼀定是 . (⼩数点) 这个 DNS 服务器 (称为 root),也叫”根域“。它们不 直接存储域名和IP地址的映射,⽽是存储指向顶级域(TLD)服务器的信息。 根域 (13台 全世界只有13台。1台为主根服务器,放置在美国。其余12台均为辅根服务器,其中9 台放置在美国,欧洲2台,位于英国和瑞典,亚洲1台,位于⽇本。) 2.顶级域DNS服务器(TLD DNS Servers) 顶级域(如 .com , .org , .net , .cn 等)的DNS服务器存储了关于某个域名下的权威DNS服务 器的信息。 例如, .com 域的TLD服务器会告诉你要去查找与某个 .com 域名相关的权威DNS服务器。``` • 常⻅的顶级域及国家 .com 商业机构 .net ⽹络 .org ⾮商业机构 www.centos.org www.kernel.org .edu 教育机构 .gov 政府机关 .cn 中国域名 .us 美国域名 .ai ⼈⼯智能 .io 云计算 .mil 军事机构 除了顶级域名外, 还有⼆级域名(baidu.com)、三级域名(smartgo.net.cn)、四级域名 (it.smartgo.net.cn)等 ...

August 18, 2026 · 4 分钟 · 754 字

FTP服务

目录 一.⽂件传输协议FTP 二.FTP的两种⼯作模式 主动模式 被动模式 三.FTP服务器搭建 1.准备 2.服务端配置 1.安装软件vsftp 2.启动并配置 vsftpd 服务 3. 配置防⽕墙 4.基本访问配置修改配置文件 准备工作 修改配置文件 3.客⼾端配置 1.安装软件 2.连接ftp服务器 4. windows浏览器访问 1根目录是不能放权的 四.禁⽌匿名⽤⼾访问 1.修改配置文件 2.创建⼀个普通⽤⼾⽤于后续访问FTP 3.node1 客⼾端访问查看 五.禁锢在指定的数据⽬录中 1.创建⼀个本地⽤⼾的数据⽬录 2.修改配置⽂件 3.创建⽤⼾, 指定⽤⼾的家⽬录为禁锢的数据⽬录下 4.客⼾端测试访问 七.⽤⼾名单列表使⽤ 一.⽂件传输协议FTP FTP(File Transfer Protocol) 是⼀种⽤于在⽹络上进⾏⽂件传输的协议,允许⽤⼾通过客⼾端和 服务器之间上传、下载⽂件. 二.FTP的两种⼯作模式 主动模式 主动模式,其实就是请求是由客户端发起的,但是数据传输过程则是由服务器发过来的 1- 客⼾端与服务器之间建⽴ 控制连接,通常是通过端⼝ 21(即 FTP 的默认控制端⼝) 2- 当客⼾端准备接收数据时,它会通过 随机端⼝(通常是 20 以外的端⼝)向服务器请求建⽴ 数据连接 3- 服务器通过控制连接得知客⼾端的端⼝号后,从端⼝ 20(服务器的 FTP 数据端⼝) 发起⼀ 个连接到客⼾端指定的端⼝,⽤于数据传输 优势 1 服务器主动向客⼾端发起数据连接,通常对⼤多数服务器来说,这种⽅式较容易实现。 缺点 因为客⼾端通常位于防⽕墙或 NAT 后⾯,防⽕墙可能阻⽌来⾃服务器的外部连接,所以这种模式 可能会受到⽹络环境的限制,尤其在客⼾端位于 NAT 后时,可能⽆法建⽴连接。 ...

August 18, 2026 · 2 分钟 · 279 字

nfs服务器的相关知识

目录 nfs服务器的相关知识 一.NFS基本介绍 二.安装软件包 三.在node2创建共享⽬录 四.修改配置文件 六.验证是否成功共享 七.挂载使⽤ 1.客户端下载软件包 2.建立挂载点 3.进行挂载 4.查看挂载是否成功 5.检查是否可以共享文件 nfs服务器的相关知识 一.NFS基本介绍 CentOS Stream 9中的NFS(⽹络⽂件系统)是⼀种允许不同计算机通过⽹络共享⽂件和⽬录的协 议,使得远程主机能够像本地磁盘⼀样访问和操作⽂件。 它基于客⼾端-服务器架构,NFS服务器将本地⽂件系统共享给客⼾端,客⼾端可以通过⽹络挂载 这些共享⽬录,像访问本地⽂件⼀样进⾏操作。 NFS主要应⽤于Linux/Unix系统之间的⽂件共享,虽然也⽀持跨操作系统,但其兼容性⼀般较差 二.安装软件包 node2 作为 NFS服务端 node1 作为客⼾端,获取共享⽬录信息 客⼾端安装: dnf install nfs-utils 服务端安装: dnf install nfs-utils 在node2放行端口 执⾏开放端⼝: firewall-cmd --add-service=nfs --permanent # 核⼼, 有了这个, NFS即可使⽤共享操作 firewall-cmd --reload 三.在node2创建共享⽬录 mkdir -p /export/software 四.修改配置文件 vi /etc/exports 然后保存文件,并重启服务就可以了 systemctl restart nfs-server systemctl status systemctl enable 六.验证是否成功共享 服务端执⾏: 查看服务端NFS共享信息 showmount -e (早期版本兼容) exportfs ...

August 18, 2026 · 1 分钟 · 92 字

rm -rf 删掉日志文件后,为什么 service restart 才能恢复?

目录 rm -rf 删掉日志文件后,为什么重启服务能恢复? 1.问题背景 1.打开系统⽇志的配置⽂件 2.在规则模块中, 配置需求要求的内容 3.进行测试 1.测试优先级大于这个的 2.测试优先级小于这个的 2.出现问题 1.删除日志文件 2.出现问题 3.问题原因 4.解决问题 1.重启服务 2.测试 5.总结 我自己总结 我查阅资料总结 rm -rf 删掉日志文件后,为什么重启服务能恢复? 1.问题背景 把所有服务的“临界点”以上的错误都保存在/var/log/alert.log ⽇志中 1.打开系统⽇志的配置⽂件 vi /etc/rsyslog.conf 2.在规则模块中, 配置需求要求的内容 # ALL SERVICE CRIT TO /var/log/alert.log *.crit action(type="omfile" file="/var/log/alert.log") # 这个需要在本某块上面,规则模块下面 顺便给服务打开 3.进行测试 1.测试优先级大于这个的 logger -p alert "12324 249nc90ju90nj-0 看测试结果 2.测试优先级小于这个的 logger -p info "12324 249nc90ju90nj-0 2.出现问题 当时我把日志文件alert.log给删掉了,想要从空日志从优先级小的开始测试,再测试优先级高的,结果就出现问题了,怎么也无法找到这个日志文件,即使后面手动创建日志文件也是不可以的,因此呢,我当时就比较着急,因为佳乐老师并没有出现这种问题,我却出现了,不知道是我的配置文件出错了,还是怎么回事,我看了一番发现其实我写的 并没有任何问题,只不过后面我问ai,知道了原因 1.删除日志文件 rm -rf /var/log/alert.log #我用来清空日志文件,以便再次测试 2.出现问题 问题1:是我无法找到这个日志文件,我听佳乐老师说使用logger这个命令是可以自动创建文件以及文件夹的,但是我的这个所展示的情况与佳乐老师所描述的有些不同 ...

August 18, 2026 · 2 分钟 · 257 字

samba服务器

目录 samba服务器 一.SAMBA基本介绍 二.安装SAMBA服务 一.服务端 二.客户端 三.创建共享⽬录 四.修改配置⽂件 五.配置⽤⼾信息 1.添加用户user01 2.把用户追加到samba 六.启动samba服务 1.启动samba服务 2.开放端口 七.在Linux主机访问 八. 在windows主机访问 samba服务器 一.SAMBA基本介绍 需求:构建⼀个SAMBA服务,共享node2服务器中的 /sambda/share ⽬录,分别在Linux和Windows访 问该共享⽬录 介绍:Samba 是⼀个开源的软件套件,允许 Linux 或 Unix 系统与 Windows 系统进⾏⽂件和打印共享。 它实现了 SMB(Server Message Block)协议和 CIFS(Common Internet File System),这两者是 Windows 操作系统⽤于⽂件共享和打印服务的主要协议。 Samba 使 Linux/Unix 系统和 Windows 系统之间的⽂件共享和打印服务变得简单,⼴泛应⽤于家 庭、企业和跨平台环境中。 二.安装SAMBA服务 一.服务端 node2执⾏: dnf -y install samba 二.客户端 dnf install -y samba-client 说明: SAMBA通常会有⼆个主要的服务,分别⽤于不同的⽬的 Samba SMB/CIFS 服务 (smb) : 是Samba提供的主要服务,⽤于实现 SMB (Server Message Block) 和 CIFS (Common Internet File System) 协议的⽂件共享和打印服务 Samba NetBIOS 名称解析服务 (nmb) : 是Samba中另⼀个重要的服务,⽤于提供NetBIOS名称解析 服务,它使得Samba服务器可以通过NetBIOS名称(⽽⾮IP地址)来识别和访问,即将计算机名(例 如 server )转换为IP地址,便于其他计算机通过名称访问,同时提供Samba服务器在局域⽹中显 ⽰的能⼒,使其在⽹络浏览器中可⻅。 ...

August 18, 2026 · 1 分钟 · 172 字
本站访客 · 访问量