Rude Boy - Linux
type: channel
link: https://rudeboy.top/index.php/tag/linux/
items: 免费申请泛域名 SSL 证书
items: 轻量级开源工具
items: LNMP、宝塔环境无法删除网站目录提示.user.ini权限问题解决方法
items: 基于VIP的Keepalived高可用集群架构
items: Linux 下 `ab`（ApacheBench）压力测试工具的完整教程
items: Linux根目录结构完全指南
items: 为什么个人需要公网IP
items: 简述nginx日志管理切割日志(亲测可行)
items: Ubuntu虚拟机修改IP地址指南
items: Ubuntu 系统安装 Docker 和 Docker Compose 的完整步骤

免费申请泛域名 SSL 证书
type: item
date: 2026-05-14T16:11:00+08:00
description: 使用 Lets Encrypt 免费申请泛域名 SSL 证书，并实现自动续期📑 目录🛠️ 环境准备💡 什么是 Let’s Encrypt？🧠 Let’s Encrypt 证书颁发原理🛠️ Certbot 的工作原理📦 安装 Certbot🌐 单域名 SSL 证书🔒 申请单域名 SSL 证书🔄 单域名自动续期🌐 泛域名 SSL 证书🛡️ 申请泛域名 SSL 证书🔄 泛域名设置自动续期🔍 深入解读✅ 配置完成后的效果📁 证书文件目录说明📝 Nginx 配置证书示例🔍 验证 HTTPS 配置🛡️ 常见问题及解决方法🎉 总结🔗 参考链接在如今的互联网环境中，为网站配置 SSL 证书已成为安全的标配。本文将介绍如何使用 Let’s Encrypt 免费获取泛域名 SSL 证书，并实现自动续期，为你的网站保驾护航。🛠️ 环境准备在开始之前，请确保你已满足以下所有条件：✅ 一台可访问互联网的 Linux 服务器（推荐 Ubuntu 20.04+/CentOS 8+）✅ 拥有服务器的 root 权限或 sudo 权限✅ 一个已完成解析的域名（本文以 example.com 为例）✅ 泛域名自动续期需额外准备：域名服务商的 API 密钥💡 什么是 Let’s Encrypt？Let’s Encrypt 是一个免费、自动化、开放的非营利性证书颁发机构（CA），由互联网安全研究小组（ISRG）运营，致力于让所有网站都能轻松实现 HTTPS 加密，保障用户数据传输安全。它的核心优势：🆓 完全免费，无任何隐藏费用🤖 全流程自动化，支持一键申请和自动续期🌐 支持单域名、多域名和泛域名证书🔒 符合行业标准，被所有主流浏览器信任官方推荐使用 Certbot 工具进行证书的全生命周期管理。🧠 Let’s Encrypt 证书颁发原理Let’s Encrypt 通过标准化的自动化认证流程完成证书颁发，核心分为 4 个步骤：域名验证：验证你对所申请域名的控制权，支持两种主流方式：HTTP-01 验证：在网站根目录创建特定文件，Let’s Encrypt 服务器访问该文件完成验证DNS-01 验证：在域名 DNS 解析中添加指定的 TXT 记录，Let’s Encrypt 检查该记录完成验证⚠️ 重要提示：泛域名证书必须使用 DNS-01 验证，因为 HTTP 验证无法跨域名层级生效。证书生成：验证成功后，Let’s Encrypt 服务器生成包含公钥和域名信息的 SSL 证书并发放。证书安装：可选择手动安装（适合证书与 Web 服务器分离的场景），或由 Certbot 自动安装到 Nginx/Apache 等服务器。自动续期：Let’s Encrypt 证书有效期为 90 天，需通过工具定期自动续期避免过期。🛠️ Certbot 的工作原理Certbot 是由电子前哨基金会（EFF）开发的开源命令行工具，基于 ACME 协议（自动证书管理环境）与 Let’s Encrypt 通信，实现 SSL 证书全流程自动化管理：📥 申请证书：从 Let’s Encrypt 获取符合标准的 SSL/TLS 证书✅ 域名验证：自动完成 HTTP-01 或 DNS-01 域名所有权验证🚀 安装证书：自动将证书部署到 Web 服务器并配置最佳加密参数🔄 续期证书：定期自动检测并续期即将过期的证书📦 安装 Certbot推荐使用 Linux 系统的 snap 包管理工具安装 Certbot（官方推荐方式，更新及时且依赖问题少）：# 1. 安装 Certbot sudo snap install --classic certbot # 2. 创建全局符号链接，确保任意目录都能执行 certbot 命令 sudo ln -s /snap/bin/certbot /usr/bin/certbot # 3. 验证安装是否成功 certbot --version📌 其他系统平台（Windows、macOS、FreeBSD 等）的安装方式，请参考 Certbot 官方文档，根据你的服务器环境选择对应的安装指令。🌐 单域名 SSL 证书🔒 申请单域名 SSL 证书如果仅需为单个域名（如 example.com 和 www.example.com）申请证书，且服务器已安装 Nginx，可使用自动安装命令：sudo certbot --nginx -d example.com -d www.example.com执行后根据命令行提示：输入用于接收证书过期提醒的邮箱地址同意 Let’s Encrypt 服务条款选择是否将 HTTP 流量自动重定向到 HTTPSCertbot 将自动完成证书申请、Nginx 配置修改和服务重载。🔄 单域名自动续期先手动测试续期流程是否正常（使用测试服务器，不影响生产环境）：…

轻量级开源工具
type: item
date: 2025-09-30T09:31:00+08:00
description: 10 个轻量级开源工具：解决低配服务器运维痛点覆盖监控、日志、进程管理等核心场景，每个工具内存占用 < 10MB、CPU 使用率 < 5%，部署简单，运维实用背景痛点运维工作中，低配服务器（如 2GB 内存、双核 CPU 的老旧机器）十分常见，可能是边缘节点、测试环境，或是业务量不大但必须稳定运行的小服务。若在这类服务器上安装 Zabbix、ELK 等“重型”工具，往往直接导致系统卡顿甚至无法启动。为此，我筛选了 10 个轻量级开源工具，它们符合以下标准：低资源占用：内存占用 < 10MB，CPU 使用率 < 5%部署简单：单文件或一键安装运维实用：覆盖 90% 的核心运维场景，操作清晰，避免技术堆砌一、nmon：系统监控“轻骑兵”内存占用不到 1MB，C 语言编写的系统监控工具，单二进制文件，支持实时监控与数据导出。核心特性资源占用极低：内存 < 1MB，CPU 使用率 < 1%监控维度全：覆盖 CPU、内存、磁盘、网络、进程，数据实时刷新（默认 2 秒/次）操作简单：全快捷键控制（如 C 看 CPU、M 看内存）支持数据导出：可存为 CSV 文件，用 Excel 分析趋势运维实战场景低配服务器健康巡检：快速判断 CPU 是否过载、内存是否泄漏临时性能排查：诊断磁盘 IO 是否过高资源使用趋势分析：分析某时段的系统资源峰值操作示例# 安装（64位系统） wget https://sourceforge.net/projects/nmon/files/nmon16m_ubuntu2204_x86.tar.gz tar -zxvf nmon16m_ubuntu2204_x86.tar.gz mv nmon16m /usr/local/bin/nmon chmod +x /usr/local/bin/nmon # 启动监控 nmon # 常用快捷键 # C：CPU核心占用 M：内存使用 # D：磁盘IO N：网络流量 # P：进程列表 q：退出 # 导出数据（采集10分钟，每30秒一条记录） nmon -f -t -s 30 -c 20 -m /var/log/nmon/注意事项32 位系统需下载对应版本长时间导出数据，建议采样间隔设为 60 秒以上极简系统（如 Alpine）需安装 libc6-compat 依赖二、Fluent Bit：日志采集“轻量王”​​比 Logstash 省 90% 资源​，C 语言开发，内存占用 < 5MB，支持采集文件、系统日志，并转发至 ES、Kafka 等。核心特性​极致轻量​：内存 < 5MB，CPU 使用率 < 2%​支持多源多目标​：文件、syslog、指标等，可转发至 ES、OSS、本地文件​配置简单​：单配置文件搞定采集、过滤、输出​低延迟​：默认秒级采集，实时转发日志运维实战场景​边缘节点日志采集​：采集 Nginx 访问日志，转发到中心 ES​系统日志监控​：过滤 “error” 信息，推送到告警群​轻量日志存储​：将日志按日期存到本地文件，避免占满磁盘操作示例# 安装（CentOS） cat > /etc/yum.repos.d/fluent-bit.repo << EOF [fluent-bit] name = Fluent Bit baseurl = https://packages.fluentbit.io/centos/7/\$basearch/ gpgcheck = 1 gpgkey = https://packages.fluentbit.io/fluentbit.key enabled = 1 EOF yum install -y fluent-bit # 配置采集Nginx日志（/etc/fluent-bit/fluent-bit.conf） [SERVICE] Flush 1 Log_Level info [INPUT] Name tail Path /var/log/nginx/access.log Tag nginx.access Refresh_Interval 10 Parser nginx [FILTER] Name grep Match nginx.access Exclude status_code 404 [OUTPUT] Name es Match nginx.access Host 192.168.1.100 Port 9200 Index nginx-access-%Y.%m.%d Retry_Limit 3 # 启动服务 systemctl start fluent-bit systemctl enable fluent-bit注意事项采集大日志文件时，建议开启日志轮转（logrotate）转发到远程服务时，加 Retry_Limit 限…

LNMP、宝塔环境无法删除网站目录提示.user.ini权限问题解决方法
type: item
date: 2025-09-20T14:58:10+08:00
description: 🛠️ 解决LNMP/宝塔环境无法删除网站目录问题📝 文档说明：本文详细解析了在LNMP或宝塔环境中无法删除网站目录的解决方案，重点解决因.user.ini权限导致的Operation not permitted错误。🚨 问题现象环境背景LNMP一键包环境（1.2版本前）宝塔Linux面板wdCP控制面板错误表现当通过SSH使用rm命令删除网站目录时，系统返回以下错误：bashrm: cannot remove 'www.yourdomain.com/.user.ini': Operation not permitted## 🔍 问题根源 ### 安全防护机制 主流Web环境管理软件为防止跨站攻击，会自动对关键文件进行锁定：bash系统自动执行的保护命令chattr +i /www/wwwroot/网站目录/.user.ini### 技术原理 - `chattr +i`命令为文件添加`immutable`（不可更改）属性 - 这是一种Linux文件系统的底层保护机制 - 旨在防止重要配置文件被意外修改或删除 ## 🛠️ 解决方案 ### 步骤一：解除文件锁定属性 通过SSH连接服务器，执行以下命令：bash解除.user.ini文件的不可修改属性sudo chattr -i /www/wwwroot/你的网站目录/.user.ini**参数说明表**： | 参数 | 说明 | 必需 | |------|------|------| | `chattr -i` | 移除文件的不可更改属性 | 是 | | `/www/wwwroot/你的网站目录/` | 实际网站路径 | 需替换 | | `sudo` | 获取root权限 | 视情况 | ### 步骤二：删除文件或目录 解除锁定后，选择以下任一方式删除： #### 方式一：SSH命令删除bash删除单个.user.ini文件rm -f /www/wwwroot/你的网站目录/.user.ini删除整个网站目录rm -rf /www/wwwroot/你的网站目录#### 方式二：FTP工具删除 1. 使用FileZilla、WinSCP等FTP客户端连接服务器 2. 导航至网站根目录 3. 找到并删除`.user.ini`文件或整个目录 ## ⚠️ 重要注意事项 ### 权限管理bash推荐：操作前确认当前用户权限whoami如无权限，使用sudo提升sudo chattr -i /path/to/.user.ini### 路径确认 操作前请仔细确认网站路径，避免误操作：bash查看目录结构ls -la /www/wwwroot/确认目标路径pwd### 安全考虑 操作完成后建议重新设置适当的权限：bash设置正确的所有权（如需重建网站）chown -R www:www /www/wwwroot/新网站目录/设置安全权限chmod 755 /www/wwwroot/新网站目录/## 📊 操作流程总结mermaidgraph TDA[尝试删除网站目录] --> B{是否出现权限错误?}B -->|是| C[使用chattr -i解除锁定]B -->|否| D[正常删除操作]C --> E[重新尝试删除]E --> F[删除成功]D --> F## 💡 进阶知识 ### 其他可能用途 `chattr`命令还可用于保护其他重要文件：bash保护重要配置文件sudo chattr +i /etc/nginx/nginx.conf保护网站配置文件sudo chattr +i /www/wwwroot/网站目录/wp-config.php### 查看文件属性bash查看文件特殊属性lsattr /www/wwwroot/网站目录/.user.ini🎯 总结环节说明重要性问题识别识别.user.ini权限错误⭐⭐⭐⭐⭐解决方案使用chattr -i解除锁定⭐⭐⭐⭐⭐后续操作正常删除文件或目录⭐⭐⭐⭐📚 扩展阅读Linux chattr命令完整手册宝塔面板官方文档LNMP环境安装指南最后更新：2023年10月15日适用环境：CentOS 7+/Ubuntu 16.04+文档版本：v2.1💡 提示：操作前请务必备份重要数据，谨慎执行删除操作。

基于VIP的Keepalived高可用集群架构
type: item
date: 2025-07-12T21:20:00+08:00
description: 🌐 基于 VIP 的 Keepalived 高可用集群架构核心思路：通过 VRRP 协议动态管理一个虚拟 IP（VIP），结合多层健康检查，在主备节点间实现秒级故障转移，对客户端完全透明。📐 一、架构核心组件1. 节点角色与分工角色职责优先级示例Master正常运行中持有 VIP，处理所有请求100Backup实时监听 Master 状态，随时准备接管90VIP对外的唯一服务地址，在主备间漂移-2. VRRP 协议通讯使用多播 224.0.0.18，协议号 112优先级范围 1~254，数值越大越优先心跳间隔 advert_int（默认 1s），超时未收到心跳即发起选举主备必须二层互通，且 virtual_router_id 一致3. 健康检查体系通过多层级探测保证只将流量交给真正健康的节点：L3: ICMP Ping → 网络通断 L4: TCP Port Check → 端口监听 L7: HTTP Request → 应用逻辑正常 自定义脚本 → 业务级检测（最灵活）推荐脚本示例：vrrp_script chk_nginx { script "/usr/bin/kill -0 $(cat /var/run/nginx.pid) 2>/dev/null || exit 1" interval 2 # 每2秒检查一次 weight -20 # 失败降权20 fall 1 # 1次失败即生效（快速切换） rise 1 # 1次恢复即还原 }⚠️ 设计铁律：weight 的绝对值必须 大于 主备优先级之差。本例中 Master(100) 降权后变为 80，低于 Backup(90)，VIP 顺利漂移。⚡ 二、故障转移机制（VIP 漂移）情形一：服务健康检查失败（Master 仍存活）track_script 检测到异常 → Master 主动降低优先级并通告 → Backup 发现自身优先级更高 → 立即接管 VIP，无需等待超时，切换 1~3 秒内完成。情形二：Master 完全宕机或 Keepalived 崩溃Backup 在 3 × advert_int + Skew_time 内未收到任何心跳 → 判定 Master 失效 → 自行升级为 Master，绑定 VIP。恢复与抢占策略抢占模式（默认）：Master 恢复后自动夺回 VIP，适合无状态服务。非抢占模式（nopreempt）：恢复后不抢回，避免频繁切换，适合数据库等场景。注意：该参数仅对 state BACKUP 节点生效。🔄 三、工作模式对比特性主备模式 (Active/Passive)双主模式 (Active/Active)节点关系一主一备，备机空闲两节点互为主备，各自绑定一组 VIP资源利用较低，备机浪费高，双节点同时服务配置复杂度★☆☆☆☆★★★☆☆（需多个 VRRP 实例）典型场景数据库主备、单点服务Web 前端、DNS、NTP 等横向扩展服务🚀 四、生产级部署流程1. 环境准备确认节点同属一个 VLAN，交换机/防火墙放行 IP 协议号 112云环境若不支持组播，需改用单播模式（见后文优化）务必开启内核参数：net.ipv4.ip_nonlocal_bind = 1（允许服务绑定尚未在本机存在的 VIP）2. 配置文件详解Master 节点 (/etc/keepalived/keepalived.conf):vrrp_script chk_nginx { script "/usr/bin/kill -0 $(cat /var/run/nginx.pid)" interval 2 weight -20 fall 1 rise 1 } vrrp_instance VI_1 { state MASTER interface eth0 # 实际网卡名 virtual_router_id 51 # 主备一致 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1234 } virtual_ipaddress { 192.168.1.100/24 } track_script { chk_nginx } }Backup 节点：只需修改state BACKUPpriority 903. 启动与深度验证systemctl start keepalived ip addr show eth0 | grep 192.168.1.100 # 查VIP journalctl -u keepalived -f # 看日志切换演练：systemctl stop nginx → VIP 应漂移至备机pkill keepalived → 模拟整机失效恢复服务后观察抢占行为是否符合预期💼 五、典型应用场…

Linux 下 `ab`（ApacheBench）压力测试工具的完整教程
type: item
date: 2025-07-12T21:16:36+08:00
description: 📦 ​​一、安装与配置​​​​1.1 安装方法​​​​Debian/Ubuntu​​：sudo apt update && sudo apt install apache2-utils​​CentOS/RHEL​​：sudo yum install httpd-tools​​验证安装​​：ab -V # 输出版本号即成功​​1.2 突破并发限制（>20k并发）​​# 1. 源码编译安装（需修改源码） wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.gz tar -zxvf httpd-2.4.43.tar.gz cd httpd-2.4.43/support vim ab.c # 修改第282行：`#define MAX_CONCURRENCY 100000` ./configure --prefix=/usr/local/httpd && make && make install ln -s /usr/local/httpd/bin/* /usr/bin # 2. 调整系统资源限制 echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.conf ulimit -n 65535 # 临时生效⚙️ ​​二、参数全解析​​​​参数​​​​作用​​​​示例​​-n总请求数-n 5000-c并发数-c 200-t最大测试时长（秒）-t 60-k启用 HTTP Keep-Alive 长连接-k-pPOST 数据文件路径-p data.json-TPOST 请求的 Content-Type-T "application/json"-H添加请求头-H "Authorization: Bearer token"-C添加 Cookie-C "sessionid=abc123"-g输出测试结果到 TSV 文件-g results.tsv-r遇到错误不退出测试-r完整参数列表可通过 ab -h 查看 。🧪 ​​三、实战案例​​​​3.1 基础 GET 测试​​ab -n 1000 -c 50 http://example.com/​​用途​​：快速评估静态页面性能。​​3.2 POST 请求测试（JSON API）​​# 创建 JSON 数据文件 echo '{"username":"test","password":"123"}' > data.json # 执行测试 ab -n 2000 -c 100 -p data.json -T "application/json" -k http://api.example.com/login​​3.3 带认证头的动态请求​​ab -n 500 -c 50 \ -H "X-API-Key: xxxx" \ -H "Cache-Control: no-cache" \ http://api.example.com/data​​3.4 文件上传测试​​# 创建 multipart 数据文件 echo '--BOUNDARY Content-Disposition: form-data; name="file"; filename="test.jpg" Content-Type: image/jpeg <二进制数据> --BOUNDARY--' > upload.txt ab -n 100 -c 10 -p upload.txt -T "multipart/form-data; boundary=BOUNDARY" http://upload.example.com/📊 ​​四、结果深度解读​​​​关键指标解析​​（以测试百度为例）：Server Software: BWS/1.1 Requests per second: 224.04 [#/sec] (mean) → **QPS（吞吐量）** Time per request: 89.271 [ms] (mean) → **用户平均等待时间** Time per request: 4.464 [ms] (mean, across all concurrent requests) → **服务器平均处理时间** Failed requests: 0 → **失败率（>0需警惕）** Connection Times (ms): min mean[±sd] median max Connect: 0 1 0.3 1 5 → DNS + TCP 握手耗时 Processing: 20 89 12.4 85 290 → **服务器处理时…

Linux根目录结构完全指南
type: item
date: 2025-07-04T19:04:00+08:00
description: 📂 Linux 根目录结构完全指南在 Linux 系统中，一切皆文件，而所有文件的起点就是根目录 /。了解它的结构是掌握 Linux 的基石。📁 根目录树状图/ ├── bin # 基础命令，所有用户可用 ├── boot # 启动引导文件（内核、grub） ├── dev # 设备文件（如硬盘、键盘） ├── etc # 系统范围的配置文件 ├── home # 普通用户的个人目录 ├── lib # 32位共享库文件 ├── lib64 # 64位共享库文件 ├── media # 可移动设备挂载点（U盘、光盘） ├── mnt # 临时挂载点（常用于系统维护） ├── opt # 手动安装的第三方软件 ├── proc # 进程与内核信息（虚拟文件系统） ├── root # root 超级用户的家目录 ├── run # 系统启动后的运行时数据（tmpfs） ├── sbin # 系统管理命令（通常需 root 权限） ├── srv # 提供服务的静态数据 ├── sys # 内核与设备信息（虚拟文件系统） ├── tmp # 任意用户可写的临时文件 ├── usr # 用户级程序和数据（Unix System Resources） └── var # 可变数据（日志、缓存、数据库）提示：在现代 Linux 发行版（如 Ubuntu 20.04+）中，/bin、/sbin、/lib* 通常是指向 /usr 下对应目录的符号链接。🔍 核心目录对比与详解1. /bin vs /sbin目录用途面向用户常见命令示例/bin系统启动、单人模式基础命令所有用户ls, cp, mv, cat/sbin系统管理、维护命令超级用户（root）fdisk, reboot, iptables2. /usr vs /opt目录软件安装来源管理方式典型结构/usr发行版包管理器（apt/dnf）自动依赖管理/usr/bin, /usr/lib/opt用户手动安装的独立软件自行维护/opt/google/, /opt/idea/3. /proc 虚拟文件系统实用技巧/proc 提供了实时内核和进程信息，可以直接通过读写文件与内核交互。# 查看 CPU 型号与核心数 cat /proc/cpuinfo # 查看内存总量 cat /proc/meminfo # 临时禁用 ping 响应（重启后失效） echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all4. /var 重要子目录一览子目录存储内容说明/var/log系统和大部分服务的日志文件syslog, auth.log/var/cache应用程序缓存数据包管理器缓存、字体缓存/var/lib动态应用程序数据（如数据库）MySQL、Docker 等/var/spool队列数据打印任务、邮件队列💡 实用命令速查# 查找一个命令所在的完整路径 which ls # 估算指定目录占用的磁盘空间 du -sh /var/log # 将外部设备 sdb1 挂载到 /mnt mount /dev/sdb1 /mnt # 查看当前磁盘挂载情况（附加） lsblk # 查看各级目录大小（若已安装 tree） tree -d -L 1 /⚠️ 重要注意事项关键目录勿删目录如 /bin、/lib、/etc 存放着系统运行所必需的文件，误删将导致系统崩溃或无法启动。/tmp 的特性所有用户都有读、写、执行权限。默认为 tmpfs 文件系统（内存盘），系统重启后内容将清空。不应用于存放需要持久保留的数据。/home 分区建议强烈建议将 /home 挂载为独立分区。重装或升级系统时，只要不格式化该分区，所有个人文件和用户配置均可完整保留。🐧 学习与探索建议直观查看目录树安装 tree 命令后运行 tree -L 1 /，可得到比 ls 更直观的目录层次。阅读官方文档终端中输入 man hier 可以查看文件系统层次结构手册页，了解每个目录的准确定义。养成好习惯日常操作避免直接使用 root 账户，优先通过 sudo 执行特权命令，降低误操作风险。掌握根目录结构，是理解 Linux 文件系统和故障排除的重要一步。祝你的学习之路清晰而扎实！

为什么个人需要公网IP
type: item
date: 2025-06-07T22:47:00+08:00
description: 🌐 为什么个人需要公网IP？个人用户（非企业）使用公网IP的必要性及常见应用场景。理解​​公网IP（全局IP）​​与​​私有IP​​的区别是关键。​​📌 核心结论​​对于绝大多数个人用户而言，日常上网​​无需公网IP​​，私有IP通过运营商的网络地址转换（NAT）即可满足需求。但在特定进阶或专业需求场景下，个人获得一个（动态或静态的）公网IPv4地址则​​非常必要​​。🔍 一、个人使用公网IP的必要性分析🚫 非必要场景（适用于90%用户）因素说明​​🌐 常规上网需求​​浏览网页、视频、社交软件、邮件、在线游戏（客户端模式）、购物等​​💰 成本与稀缺性​​IPv4地址极度稀缺，静态IP通常需要额外付费（¥50-200/月）​​🛡️ 安全风险​​设备直接暴露互联网，需专业级防火墙配置💡 技术原理：运营商通过NAT技术实现192.168.x.x等私有IP共享单一公网出口✅ 必要场景（特定需求）场景特征技术原理​​🏠 从公网访问家庭设备​​NAS/摄像头/服务器需要公网IP作为互联网入口​​🌍 全球可达性要求​​私有IP无法被公网设备直接路由定位​​⚙️ 端到端连接需求​​需要绕过运营商NAT层的地址转换⚠️ 关键限制：无公网IP时，外部设备​​无法定位​​内网服务（如 192.168.1.100）🚀 二、公网IP核心应用场景🔑 前提条件：需要从公网访问内部服务1. 📦 家庭NAS远程访问graph LR A[手机/电脑] -->|公网请求| B(公网IP) B --> C[路由器端口转发] C --> D[NAS设备]​​典型配置​​：DDNS + 端口映射（如5000/8080）​​安全建议​​：启用HTTPS + 双因素认证2. 🖥️ 远程桌面控制+ 优势：直接连接家中PC - 风险：暴露RDP(3389)端口需严格防护​​推荐方案​​：VPN隧道 + 私有网络访问3. 🌐 个人服务器托管服务类型所需端口安全要求Web服务器80/443强制HTTPS游戏服务器25565等IP白名单API服务自定义请求频率限制4. 🏠 安防监控系统​​⛔ 高风险警告​​建议优先选择：厂商云服务（如萤石云）VPN内网访问仅开放必要端口（非80/443）5. 🎮 自建游戏服务器pie title 热门自建游戏 "Minecraft":45 "CS:GO":25 "ARK":15 "其他":156. ⚡ P2P加速优化连接状态上传速度连接成功率高ID（有公网IP）10-50Mbps>95%低ID（无公网IP）1-5Mbps<60%7. 🔬 网络开发实验graph TB A[实验需求] --> B{IP类型} B -->|IPv4| C[公网IP] B -->|IPv6| D[原生支持]🔧 三、公网IP获取方案1. 🌀 动态公网IP[实现方案] 1. 检测运营商是否分配动态IP 2. 注册DDNS服务（花生壳/No-IP） 3. 配置路由器动态域名 4. 设置端口转发规则💰 成本：通常免费（部分DDNS需年费¥30-100）2. 🏆 静态公网IP运营商申请条件典型费用电信企业认证¥600/年联通专线套餐¥1000+/月移动基本不提供N/A3. 🔮 IPv6解决方案+ 优势：每个设备都有公网地址 - 挑战：路由器/设备需全面支持​​检测方法​​：访问 test-ipv6.com4. 🛡️ 安全替代方案方案适用场景代表服务内网穿透临时访问frp/ngrok云服务托管网站/应用阿里云/腾讯云厂商云中转智能设备群晖QuickConnect⚠️ 安全防护必须措施​​🔒 无防护 = 敞开大门给黑客​​​​防火墙规则​​仅开放必要端口（非默认端口）设置IP访问白名单​​访问控制​​- 强制HTTPS加密 - 双因素认证(2FA) - 定期更换密码​​系统维护​​每周检查安全更新关闭未使用服务启用登录失败锁定​​终极方案​​graph LR A[公网] --> B[VPN服务器] B --> C{家庭网络} C --> D[NAS/摄像头/PC]​​推荐协议​​：WireGuard > OpenVPN > IPSec💎 总结建议flowchart TD A["是否有外部访问需求？"] -->|"否"| B["无需公网IP"] A -->|"是"| C{"访问频率？"} C -->|"临时/低频"| D["内网穿透/云服务"] C -->|"长期/高频"| E{"资源预算？"} E -->|"有限"| F["动态IP+DDNS"] E -->|"充足"| G["静态公网IP"] G --> H["专业级防火墙"]​​决策原则​​：普通用户：🛡️ 首选替代方案技术爱好者：🌀 动态IP+DDNS专业需求：🏆 静态IP+安全加固未来趋势：🔮 全面转向IPv6✨ 终极提醒：获取公…

简述nginx日志管理切割日志(亲测可行)
type: item
date: 2025-06-06T13:55:00+08:00
description: 🔄 日志切割原理Nginx原生不支持日志轮转(rotate)，需通过系统信号实现：​​重命名日志文件​​Linux系统通过文件描述符追踪文件，重命名不会丢失正在写入的日志​​发送USR1信号​​kill -USR1通知Nginx主进程重新打开日志文件工作进程关闭旧文件描述符，立即使用新日志文件⏱️ 分钟级切割方案​​脚本路径​​：/opt/nginx/nginx_log.sh#!/bin/bash LOG_DIR="/usr/local/nginx/logs" # 日志目录 PID_FILE="${LOG_DIR}/nginx.pid" # PID文件路径 NEW_LOG="access_$(date +%Y%m%d%H%M).log" # 按分钟生成文件名 # 重命名当前日志 mv ${LOG_DIR}/access.log ${LOG_DIR}/${NEW_LOG} # 通知Nginx重建日志 kill -USR1 $(cat ${PID_FILE})​​配置定时任务​​：crontab -e # 编辑当前用户任务添加：*/1 * * * * /bin/bash /opt/nginx/nginx_log.sh # 每分钟执行​​权限设置​​：chmod +x /opt/nginx/nginx_log.sh # 添加执行权限🗑️ 自动清理旧日志方案1：专用清理脚本​​脚本路径​​：/opt/sh/clean_logs.sh#!/bin/bash # 删除7天前日志 (按.log后缀) find /var/log/nginx/ -name "*.log" -mtime +7 -delete​​定时任务​​（每日凌晨执行）：0 0 * * * /bin/bash /opt/sh/clean_logs.sh方案2：直接使用cron命令# 每周一清理90天前日志 0 3 * * 1 find /home/nginx/logs/ -type f -mtime +90 -exec rm {} \;⚠️ 常见问题与解决错误1：信号发送失败​​错误命令​​：kill -USR1 cat `/path/nginx.pid` # 反引号嵌套错误​​正确写法​​：kill -USR1 $(cat /path/nginx.pid) # 推荐$()语法 # 或 kill -USR1 `cat /path/nginx.pid` # 使用反引号错误2：权限不足​​现象​​：mv: cannot access ‘access.log’: Permission denied​​解决方案​​：# 方法1：使用root权限执行 sudo -i crontab -e # 添加任务: * * * * * /opt/nginx/nginx_log.sh # 方法2：将用户加入sudoers echo "username ALL=(root) NOPASSWD:/bin/systemctl reload nginx" >> /etc/sudoers📅 按日期分割日志（Nginx配置）nginx.conf 中添加：http { map $time_iso8601 $logdate { ~^(?<ymd>\d{4}-\d{2}-\d{2}) $ymd; default 'nodate'; } server { access_log /var/log/nginx/access-$logdate.log; } }​​生效配置​​：nginx -s reload🔍 调试技巧​​查看定时任务日志​​tail -f /var/log/cron # CentOS tail -f /var/log/syslog # Ubuntu​​测试日志切割​​# 手动执行脚本 /opt/nginx/nginx_log.sh # 检查新日志是否生成 ls -l /usr/local/nginx/logs📦 最佳实践建议​​切割频率选择​​高流量站点：按小时切割（date +%Y%m%d%H）普通站点：按天切割（date +%Y%m%d）​​日志压缩归档​​在清理脚本中添加：find /log_path -name "*.log" -mtime +1 -exec gzip {} \;​​使用Logrotate替代方案​​/usr/local/nginx/logs/*.log { daily rotate 30 compress missingok sharedscripts postrotate [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) endscript }

Ubuntu虚拟机修改IP地址指南
type: item
date: 2025-06-01T20:51:20+08:00
description: Ubuntu虚拟机修改IP地址指南适用版本：Ubuntu 18.04及以上目录一、通过Netplan配置（推荐）二、使用nmcli工具三、虚拟机网络模式说明常见问题排查重要提示一、通过Netplan配置（推荐）1. 定位配置文件sudo nano /etc/netplan/*.yaml # 通常为00-installer-config.yaml2. 配置模板network: ethernets: ens33: # 使用`ip a`查询网卡名 addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] dhcp4: false version: 23. 生效配置sudo netplan apply ip addr show ens33 # 验证IP配置二、使用nmcli工具1. 查看当前连接nmcli connection show # 记录"NAME"列2. 设置静态IPsudo nmcli connection modify "连接名" \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8,114.114.114.114" \ ipv4.method manual3. 重启连接sudo nmcli connection down "连接名" && sudo nmcli connection up "连接名"三、虚拟机网络模式说明网络模式配置要点NAT需手动关闭DHCP桥接IP需与主机局域网同网段仅主机需开启VMware的DHCP或手动指定IP常见问题排查宿主机无法ping通虚拟机检查Windows防火墙ICMPv4入站规则确认VMware虚拟网络编辑器网关配置验证虚拟机防火墙状态：sudo ufw status # 检查Ubuntu防火墙配置后网络断开sudo netplan --debug apply # 查看详细报错检查YAML文件缩进（必须使用空格，不能使用Tab）确认网卡名称是否正确（使用ip a命令查看）验证网关是否可达重要提示⚠️ 操作前务必备份配置：sudo cp /etc/netplan/00-installer-config.yaml{,.bak}其他注意事项：修改后测试网络连接：ping 8.8.8.8 -c 4 # 测试外网连通性 ping 192.168.1.1 -c 4 # 测试网关连通性查看DNS解析：nslookup google.com如需恢复DHCP：dhcp4: true # 注释或删除addresses/gateway4配置提示：不同虚拟机软件（VMware/VirtualBox）的网络配置界面可能不同，但Ubuntu内部的配置方法一致。

Ubuntu 系统安装 Docker 和 Docker Compose 的完整步骤
type: item
date: 2025-06-01T20:48:00+08:00
description: Ubuntu Docker 环境部署指南适用版本：Ubuntu 20.04/22.04 LTS目录结构环境准备Docker安装Docker Compose安装配置优化附录环境准备系统要求(虚拟机)最小磁盘空间：2GB内存：建议2GB以上网络：需连接互联网清理旧版本sudo apt-get remove docker* containerd runcDocker安装步骤1：配置仓库sudo apt-get update sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release步骤2：添加密钥sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg步骤3：安装引擎sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.ioDocker Compose安装二进制安装法sudo curl -L "https://github.com/docker/compose/releases/download/v2.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose验证安装docker-compose --version # 预期输出：Docker Compose version v2.25.0配置优化用户组配置sudo usermod -aG docker $USER exec newgrp docker # 立即生效镜像加速(这里使用阿里云的镜像加速）创建配置文件 /etc/docker/daemon.json：{ "registry-mirrors": ["https://docker.xuanyuan.me"] }提示：这边使用的是轩辕的国内镜像源附录故障排查表现象解决方案E: Unable to locate package执行 sudo apt-get update权限拒绝错误检查用户是否在 docker 组拉取镜像超时更换 registry-mirrors常用命令速查docker ps -a # 查看所有容器 docker images # 列出镜像 docker system prune # 清理无用资源通过此指南，您已完成 Ubuntu 系统上的 Docker 及 Docker Compose 安装与基础配置。