月度归档: 2026 年 1 月

  • 终身学习:怎样与世界同步进化

    《终身学习:怎样与世界同步进化》这本书蕴含着丰富的思考维度!以下总结梳理了几个最值得深入思考的核心命题:

    🎯 终身学习的本质困境

    📖 读书是跨时空社交

    书是“不同时空里的人写的信”,读书本质是“跨时空社交”。在信息爆炸时代,我们需要思考:如何平衡碎片化阅读与深度思考?社交需求是否会让我们更依赖“被投喂”的知识,而非主动探索?

    😰 学习焦虑的深化

    学习从“谋生意义”深化为“求存意义”,知识现在直接体现为具体利益。这引发了一个关键问题:当学习成为生存必需,如何避免“为学习而学习”的功利化陷阱?

    💡 认知升级的路径与挑战

    🧠 认知四境界

    从“不知道自己不知道”到“不知道自己知道”,每个境界都有巨大价值。当下人类文明正处于“大拐弯”时代,认知能力是核心竞争力。

    👀 “两只眼”理论

    成功往往需要“两种优势”:一只眼盯着传统优势,另一只眼盯着新兴机会。在“终身跨界”的时代,如何平衡“深耕专业”与“拓展边界”?

    🌟 社会现象背后的深层逻辑

    🎲 概率权的争夺

    穷人倾向“拿确定的东西”,放弃“概率权”;富人则通过“概率下注”把握机会。普通人可通过学习、认知升级,从“确定的平庸”转向“不确定的机会”。

    💬 谈资成为新货币

    传统社会以“经济资本”定地位,现代社会以“谈资”(文化资本)定圈层。当“谈资”成为社交硬通货,我们是否会陷入“为炫耀而学习”的误区?

    🤔 思维工具与认知框架

    ❤️ 王阳明心学的现代意义

    “此心俱足,不假外求”强调向内求,拒绝依赖外部权威。在信息过载的时代,如何通过自我觉察而非外部知识获取力量?

    ⚙️ 第一性原理的力量

    马斯克用“第一性原理”拆解问题,拒绝“经验主义”。在复杂问题面前,如何剥离表象,找到事物的本质?

    🔍 科学思维与信息甄别

    🕵️ 阴谋论盛行的根源

    本质是人类“对控制感的需求”和“认知一致性”的进化结果。如何用科学思维(如贝叶斯定理)替代阴谋论思维?

    🧐 批判性思维的重要性

    警惕“绝对真理”,查理·芒格说:“要拒绝看似机会的杂七杂八诱惑,修炼自己的认知。”

    📚 终身学习的实践路径

    🔄 “二元学习法”

    快速建立新领域认知的方法:找到该领域“针锋相对的两位代表性人物”,吃透其思想。

    ❓ 问题比答案更重要

    知识增长伴随无知增长,“答案渐趋廉价,问题愈发珍贵”,好问题是创新的关键。

  • 运维复盘:WordPress 事故恢复与架构升级实战记录

    1. 事故背景
      现状:服务器上有运行中的 WordPress 和 MySQL 8.0 容器。

    问题:/root/wordpress-app/ 目录下的 docker-compose.yml 丢失,导致无法对现有容器进行升级、维护或修改。

    需求:

    100% 还原配置文件。

    解决站点健康中提示的“页面缓存”性能问题。

    提升安全性(更换默认/已知密码)。

    1. 阶段一:逆向工程——找回配置
      由于容器还在运行,我们通过 Docker 内部信息反推配置。

    找回密码:通过 docker inspect wordpress_app | grep WORDPRESS_DB_PASSWORD 获取了连接密码。

    定位数据卷:通过 docker inspect 确认了数据卷名为 wordpress-app_wp_data 和 wordpress-app_db_data。

    重构 YAML:

    关键点:在 volumes 部分必须标记 external: true。这告诉 Docker:“卷已经存在了,直接挂载就好,千万别给我创建新的空卷”,否则数据会丢失。

    1. 阶段二:性能飞跃——引入双层缓存
      为了解决 WordPress 提示的“页面缓存”告警,我们实施了架构升级。

    架构图示
    操作步骤
    修改配置:在 docker-compose.yml 中新增 redis 服务。

    配置注入:在 WordPress 环境变量中加入 WORDPRESS_CONFIG_EXTRA,自动将 Redis 链接信息写入 wp-config.php。

    应用变更:执行 docker compose up -d。此时 WordPress 容器被“Recreated”(重建),但由于数据卷是外部挂载的,文章和图片毫发无损。

    插件激活:

    WP Super Cache:实现页面级静态化(解决站点健康告警)。

    Redis Object Cache:实现数据库查询缓存(提升后台操作速度)。

    1. 阶段三:安全加固——修改数据库密码
      修改已运行中的 MySQL 密码不能只改配置文件,必须遵循“锁钥匙同步”原则。

    关键流程:
    手动换锁:进入容器内部修改 MySQL 用户表。

    Bash

    docker exec -it wordpress_db mysql -u root -p旧密码
    ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
    FLUSH PRIVILEGES;
    同步钥匙:将 docker-compose.yml 中的两处密码同步修改为新密码。

    重启生效:执行 docker compose up -d,让 WordPress 带着新钥匙重新连接数据库。

    1. 核心:最终版生产环境 docker-compose.yml
      YAML

    name: wordpress-app

    services:
    db:
    image: mysql:8.0
    container_name: wordpress_db
    restart: always
    environment:
    MYSQL_DATABASE: wordpress
    MYSQL_ROOT_PASSWORD: “你的新密码”
    volumes:
    – wordpress-app_db_data:/var/lib/mysql

    redis:
    image: redis:6-alpine
    container_name: wordpress_redis
    restart: always

    wordpress:
    image: wordpress:latest
    container_name: wordpress_app
    restart: always
    ports:
    – “8080:80”
    environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: root
    WORDPRESS_DB_PASSWORD: “你的新密码”
    WORDPRESS_CONFIG_EXTRA: |
    define( ‘WP_REDIS_HOST’, ‘redis’ );
    define( ‘WP_REDIS_PORT’, 6379 );
    volumes:
    – wordpress-app_wp_data:/var/www/html
    depends_on:
    – db
    – redis

    volumes:
    wordpress-app_wp_data:
    external: true
    wordpress-app_db_data:
    external: true

    1. 经验与教训 (Best Practices)
      配置文件是灵魂:一定要备份 docker-compose.yml 到云端或 Git。

    External 是护身符:只要使用了外部卷(External Volumes),容器随便怎么删,数据永远在宿主机磁盘上。

    缓存是刚需:对于 WordPress,WP Super Cache + Redis 是标配,能极大延长服务器寿命。

  • 🛡️ WordPress 后台安全加固总结

    1. 核心防御原理

    我们在 Nginx 反向代理层(也就是你服务器的最外层大门)建立了一套“白名单准入机制”。

    • 逻辑: 只有来自你授权的 IP 地址,Nginx 才会将请求转发给 Docker 里的 WordPress 容器;其他所有 IP 访问敏感路径时,直接由 Nginx 拦截并返回 403 Forbidden
    • 优势: 攻击者无法通过暴力破解尝试密码,因为他们连登录页面都打不开,同时也减轻了 WordPress 插件和数据库的运算压力。

    2. 配置结构梳理

    你在 /etc/nginx/sites-available/wordpress 中实现的规则分为三个层次:

    访问路径规则策略目的
    / (全站首页/文章)全员开放保证读者能正常访问你的网站内容。
    /wp-admin/admin-ajax.php全员开放关键点:保证前台功能的动态加载(如评论、翻页)不失效。
    wp-admin & wp-login.phpIP 白名单只有你的 IP 能看到后台登录框,彻底封死暴力破解入口。

    3. 故障排除回顾(解决冲突)

    在配置过程中,我们遇到了 conflicting server name 警告,这是新手常踩的坑:

    • 问题: defaultwordpress 两个配置文件同时声明了对 yaoyuan.me 的所有权。
    • 解决: 通过删除 /etc/nginx/sites-enabled/default 软链接,确保了 Nginx 路径唯一化,让新规则真正生效。

    4. 日常维护手册

    • 查看被拦下的倒霉蛋:使用 tail -f /var/log/nginx/error.log | grep “forbidden”。
    • 自己被锁在外面了:
      1. SSH 登录服务器。
      2. 执行 curl ifconfig.me 获取当前新 IP。
      3. 修改 allow 后的 IP,运行 nginx -s reload
    • 增加办公环境 IP:在 allow 下方直接增加一行 allow x.x.x.x; 即可,记得保留最后一行 deny all;。

  • 我的GitHub第一个项目

    🛡️ SpartanHost Monitor (Universal Edition)

    一款专为 Spartan Host 设计的工业级库存监控系统,支持多平台 Linux 自动适配。提供交互式部署流程、自动邮件提醒及 RESTful API 支持,能够轻松完成库存监控应用的搭建。


    License
    Issues
    Stars
    Node
    Lint
    Architecture
    Style
    Security

    🚀 技术栈支持


    ✨ 核心特性

    •  全系统适配:一键支持 Ubuntu, Debian, CentOS, AlmaLinux, Rocky, Fedora。
    •  交互式部署:安装时动态配置邮箱及密码,实现零代码基础配置。
    •  智能提醒:支持 Gmail 等 SMTP 服务,内置防骚扰冷却机制。
    •  安全加固:管理密码支持自定义或强随机生成,接口受鉴权保护。
    •  进程守护:基于 PM2 实现开机自启、崩溃重启及实时日志监控。
    •  RESTful API:预留库存数据及订阅者管理接口,方便二次开发。

    🚀 快速开始

    1️⃣ 克隆项目 (Git 方式)

    git clone https://github.com/yokopro/spartanhost-monitor.git
    cd spartanhost-monitor

    2️⃣ 执行一键部署脚本

    将自动识别系统环境并安装 Node.js 与 PM2

    # 修复换行符并赋予权限
    sed -i 's/\r$//' deploy.sh && chmod +x deploy.sh
    
    # 运行交互式安装
    ./deploy.sh

    3️⃣ 查看管理密码

    如果在安装时选择了随机生成密码,请运行以下命令查看密码:

    pm2 logs spartan-monitor --lines 50

    🛠️ 运维管理指令

    需求指令
    实时日志pm2 logs spartan-monitor
    状态面板pm2 status
    重启应用pm2 restart spartan-monitor
    停止监控pm2 stop spartan-monitor
    资源监控pm2 monit
    彻底卸载pm2 delete spartan-monitor && rm -rf $(pwd)

    🔗 API 接口文档

    系统默认运行在 3000 端口。

    1️⃣ 实时库存数据

    • EndpointGET /api/stock
    • 说明: 返回当前监控的所有产品及其库存状态。

    2️⃣ 查看订阅者清单

    • EndpointGET /api/subscribers
    • 认证: 需在 Request Header 中添加:password: 你的管理密码

    3️⃣ 系统健康检查

    • EndpointGET /health

    📂 项目结构

    ├── public/                # Web 前端页面 (订阅及展示)
    ├── server.js              # 后端核心逻辑与 API 服务
    ├── config.js              # 自动生成的配置文件 (由 deploy.sh 生成)
    ├── deploy.sh              # 终极全能交互式部署脚本
    ├── package.json           # 项目依赖清单
    └── subscribers.json       # 订阅用户数据存储 (本地 JSON)
    

    ⚠️ 注意事项

    1. Gmail 用户
      • 请务必开启“两步验证”并使用 16 位应用专用密码,而非邮箱登录密码。
    2. 防火墙设置
      • 本脚本会自动尝试开放 3000 端口,若无法访问,请检查云服务商的安全组设置。
    3. 隐私保护
      • .gitignore 已默认忽略 config.js,请勿手动取消,防止授权码泄露至公共仓库。

    联系我

    📧邮件:mail.yaoyuan(@)gmail.com 如果还有其他需求或特色添加,请随时告诉我! 😊