作者: yangyang

  • 使用区块主题时发现找不到自定义CSS界面怎么办?

    1. 经典主题的直接路径

    大多数情况下,你可以直接在浏览器地址栏输入:

    你的域名/wp-admin/customize.php?autofocus[section]=custom_css

    • 说明: 这个 URL 会直接触发 WordPress 的 Customizer 并定位到“额外 CSS”选项卡。
    • 前提: 你必须已经登录了管理员账号。

    2. 其他相关的后台路径

    如果你想找的是物理文件路径或对应的后台编辑器:

    • 后台编辑器路径: 你的域名/wp-admin/theme-editor.php?file=style.css (注意:除非是子主题,否则不建议在这里改,更新主题会丢代码)
    • 常规后台首页: 你的域名/wp-admin/

    3. 为什么有时候找不到?

    如果你在 wp-admin 后面输入上述路径显示 “权限不足”“页面不存在”,通常有以下两种可能:

    1. 权限限制: 你当前的账号不是“管理员(Administrator)”级别。
    2. 区块主题(FSE): 如果你使用的是最新的区块主题(如 Twenty Twenty-Four),WordPress 默认隐藏了传统的“自定义”菜单。

    针对区块主题强行开启“自定义”界面的方法: 直接访问:你的域名/wp-admin/customize.php 虽然菜单里没有,但这个页面路径通常依然有效,进去后依然能看到“额外 CSS”选项。

  • docker部署wordpress

    1. 创建并进入目标目录

    首先,在 /opt 下创建一个专属目录。由于 /opt 权限通常较高,需要使用 sudo

    sudo mkdir -p /opt/wordpress-app
    sudo chown $USER:$USER /opt/wordpress-app  # 将所有权改为当前用户,方便操作
    cd /opt/wordpress-app

    2. 编写 docker-compose.yml

    在该目录下创建配置文件。我们将使用 相对路径,这样 Docker 会自动在 /opt/wordpress-app 下创建数据文件夹。

    cd /opt/wordpress-app  # 进入项目目录里
    
    nano docker-compose.yml

    粘贴以下内容

    services:
      db:
        image: mariadb:10.11
        restart: always
        environment:
          # 1. 数据库超级管理员 (root) 的密码
          # 建议设置一个非常复杂的密码,仅用于后台维护,WordPress 运行不直接使用它。
          MYSQL_ROOT_PASSWORD: your_root_password
          # 2. 自动创建的数据库名称
          # WordPress 的数据都会存放在这个名为 "wordpress" 的库里。
          MYSQL_DATABASE: wordpress
          # 3. WordPress 专用数据库用户名
          # 为了安全,不建议让网页程序直接使用 root 账号,这里创建一个普通用户。
          MYSQL_USER: wordpress_user
          # 4. WordPress 专用数据库用户的密码
          MYSQL_PASSWORD: your_password
        volumes:
          # 数据将存储在 /opt/wordpress-app/db_data
          - ./db_data:/var/lib/mysql
    
      wordpress:
        image: wordpress:latest
        restart: always
        ports:
          - "80:80"  # 如果没被占用,直接用 80 端口
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress_user
          WORDPRESS_DB_PASSWORD: your_password
          WORDPRESS_DB_NAME: wordpress
        volumes:
          # 代码和图片将存储在 /opt/wordpress-app/wp_data
          - ./wp_data:/var/www/html
        depends_on:
          - db

    3. 启动容器

    如果出现此类报错

    root@VM-4-5-debian:/opt/wordpress-app# docker-compose up -d
    
    -bash: docker-compose: command not found

    更换较新的指令

    docker compose up -d

    如果出现这个错误原因很简单,服务器无法连接到 Docker Hub 官方镜像库

    具体来说,i/o timeout(连接超时)通常是由以下两个原因导致的:

    IPv6 优先问题:报错信息中出现了 [2a03:2880...],这说明你的系统正尝试通过 IPv6 连接 Docker 官网,但腾讯云的公网环境可能对 IPv6 支持不畅。

    网络环境限制:在国内直接拉取 docker.io 的镜像经常会遇到网络波动或被屏蔽的情况。

    root@VM-4-5-debian:/opt/wordpress-app# docker compose up -d
    [+] up 2/2
     ✘ Image mariadb:10.11    Error failed to resolve reference "docker.io/library/mariadb:10.11": failed to do request: Head "https://registry-1.docke...       30.0s
     ! Image wordpress:latest Interrupted                                                                                                                        30.0s
    Error response from daemon: failed to resolve reference "docker.io/library/mariadb:10.11": failed to do request: Head "https://registry-1.docker.io/v2/library/mariadb/manifests/10.11": dial tcp [2a03:2880:f10e:83:face:b00c:0:25de]:443: i/o timeout
    root@VM-4-5-debian:/opt/wordpress-app# 

    🛠️ 解决方案

    彻底禁用 IPv6(针对腾讯云最有效的方案)

    从报错日志看,Docker 一直在尝试通过 IPv6 (2a03:2880...) 连接。国内很多环境的 IPv6 虽然能分配地址,但路由是不通的。

    最简单的办法:让 Debian 彻底优先使用 IPv4。

    1. 打开文件:
    sudo nano /etc/gai.conf

    找到第 54 行左右的这行代码: #precedence ::ffff:0:0/96 100

    去掉前面的 #,保存退出(Ctrl+O, Enter, Ctrl+X)。

    无需重启,直接再次执行:

    docker compose up -d

    依旧失败,不着急国内的环境就是复杂一些。

    最后更换公共代理加速器

    换成目前国内维护比较勤快的第三方代理加速器。

    1. 修改 daemon.json

    将你之前的 registry-mirrors 内容替换为以下几个(这是目前 2026 年比较稳定的几个):

    sudo nano /etc/docker/daemon.json

    修改为:

    {
      "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.net"
      ],
      "log-driver": "json-file",
      "log-opts": { "max-size": "100m", "max-file": "3" },
      "live-restore": true
    }

    重启docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    启动(在wordpress-app目录里执行)

    docker compose up -d

    1.确认容器运行状态

    docker compose ps

    2.开放防火墙(腾讯云关键步骤)

    你的 Docker 映射了端口(比如 8080:8080:80),但腾讯云默认的安全组可能拦截了外部访问:

    • 登录 腾讯云控制台 -> 云服务器 -> 实例。
    • 点击 安全组 -> 修改规则
    • 添加一条:协议端口 TCP:80 (或者你设置的 8080),来源选择 0.0.0.0/0(全开)。

    3. 完成 Web 安装

    在浏览器输入:http://你的服务器公网IP

    • 看到 WordPress 著名的“五分钟安装”界面,就说明成功了!
    • 数据库连接信息如果你按之前的配置填,主机名(Host)记得填 db(这是 Compose 内部的服务名),而不是 localhost
    点击继续

    填写基本信息

    完结撒花

    通过域名访问wordpress

    1. 准备 Nginx 配置文件

    /opt/wordpress-app 目录下创建一个 nginx 文件夹,用来存放配置:

    mkdir -p /opt/wordpress-app/nginx/conf.d

    创建一个名为 default.conf 的配置文件:

    nano /opt/wordpress-app/nginx/conf.d/default.conf

    写入以下内容(记得替换域名):

    server {
        listen 80;
        server_name yourdomain.com; # 替换成你的域名
    
        location / {
            proxy_pass http://wordpress:80; # 这里的 wordpress 对应 compose 里的服务名
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    2. 更新 docker-compose.yml

    修改你现有的配置文件,把 Nginx 加进去,并注意端口冲突(WordPress 容器不需要再向外暴露 80 端口了,交给 Nginx 暴露)。

    services:
      db:
        image: mariadb:10.11
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: your_root_password
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress_user
          MYSQL_PASSWORD: your_password
        volumes:
          - ./db_data:/var/lib/mysql
    
      wordpress:
        image: wordpress:latest
        restart: always
        # 删掉之前的 ports: - "80:80",因为我们不需要外部直接访问 WP
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress_user
          WORDPRESS_DB_PASSWORD: your_password
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - ./wp_data:/var/www/html
        depends_on:
          - db
    
      nginx:
        image: nginx:alpine
        restart: always
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./nginx/conf.d:/etc/nginx/conf.d
        depends_on:
          - wordpress

    3. 部署并验证

    1. 域名解析:在你的域名服务商处,将域名指向腾讯云服务器的公网 IP
    2. 重启服务
    cd /opt/wordpress-app
    docker compose up -d

    访问域名看看效果

    最后需要到wordpress后台设置里

    访问:http://你的域名/wp-admin/

    填写完,保存更改就可以通过域名访问我们的网站了。

  • 腾讯云服务器Debian12升级Debian13

    升级前准备

    1. 快照备份(非常重要): 在腾讯云控制台为你的服务器创建云硬盘快照。如果升级失败导致系统无法启动,这是唯一的“后悔药”。
    2. 更新现有系统: 确保当前 Debian 12 是最新状态。
    sudo apt update && sudo apt upgrade -y && sudo apt full-upgrade -y

    升级步骤

    1. 修改软件源

    Debian 的升级核心在于更换 /etc/apt/sources.list 中的代号。你需要将 bookworm 替换为 trixie

    sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
    sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list

    注意: 对于腾讯云内网源(mirrors.tencentyun.com),通常只需执行上述替换即可。

    2. 更新软件包列表

    告知系统你现在指向的是 Debian 13 的仓库。

    sudo apt update

    3. 执行最小升级 (Minimal Upgrade)

    为了降低冲突风险,建议先升级基础软件包。

    sudo apt upgrade --without-new-pkgs -y

    4. 执行全量升级 (Full Upgrade)

    这是最关键的一步,系统会删除旧包并安装 Debian 13 的新包(包括内核)。

    sudo apt full-upgrade -y

    交互提示: 升级过程中,系统可能会询问你是否保留现有的配置文件(如 sshd_config)。如果你之前对服务器做过特殊配置,建议选 N(保留当前版本);如果不确定,通常选 Y(使用开发者版本)

    5. 清理与重启

    删除不再需要的旧依赖包并重启服务器。

    sudo apt autoremove -y
    sudo reboot

    验证升级结果

    重启后重新连接 SSH,查看内核和系统版本:

    cat /etc/debian_version
    # 应该显示 13.x 或 trixie/sid
    uname -a
    # 查看新内核是否生效

    完结撒花

  • remnawave 数据备份与迁移

    remnawave项目结构

    容器名称镜像类型存放的数据内容
    remnawaveBackend (Node.js)配置文件 .env(连接数据库的钥匙)
    remnawave-dbPostgres 17.6最核心: 用户信息、节点配置、所有业务数据
    remnawave-redisValkey 8.1缓存数据(如果丢失,登录状态会失效,但业务不丢)
    remnawave-nginxNginx证书文件(SSL)和反向代理配置

    执行停机

    先进入(项目根目录)

    cd /opt/remnawave

    在项目目录里运行:

    docker compose down

    你可以看到如下信息

    [+] down 4/4
     ✔ Container remnawave       Removed                                                                                                                          1.1s
     ✔ Container remnawave-redis Removed                                                                                                                          0.5s
     ✔ Container remnawave-db    Removed                                                                                                                          0.5s
     ! Network remnawave-network Resource is still in use 

    在服务器上打包

    确保你还在 /opt/remnawave 目录下,执行以下命令将整个项目(包括配置、数据库和缓存数据)打包成一个压缩文件:

    cd /opt
    tar -czvf remnawave_backup_2026.tar.gz remnawave/

    执行完成会看到如下信息

    remnawave/
    remnawave/.env
    remnawave/docker-compose.yml
    remnawave/nginx/
    remnawave/nginx/fullchain.pem
    remnawave/nginx/privkey.key
    remnawave/nginx/docker-compose.yml
    remnawave/nginx/nginx.conf
    root@yangnode:/opt# ls -lh remnawave_backup_2026.tar.gz
    -rw-r--r-- 1 root root 6.4K Apr  9 03:29 remnawave_backup_2026.tar.gz
    

    回到项目目录(/opt/remnawave)

    cd /opt/remnawave

    执行这条命令可以看到备份的数据

    ls -lh remnawave_backup_2026.tar.gz

    下载数据压缩包

    数据包完整结构

    回到ssh客户端执行下面命令回到项目目录里

    cd /opt/remnawave

    再次执行

    docker compose up -d

    检查运行状态

    docker ps

    看看服务状态

    至此备份结束。如果迁移服务器,新的服务器需要重新安装项目,备份数据直接上传解压替换即可。

    权限修复(如果需要)

    由于打包和上传可能会改变文件的“主人”,导致 Docker 容器启动后没权限读写数据库,建议执行一次权限重置:

    chown -R root:root /opt/remnawave
    chmod -R 755 /opt/remnawave

    ⚠️ 两个需要注意的“坑”

    1. 数据库版本一致性: 你在旧服务器用的是 postgres:17.6。在新服务器启动时,Docker 会自动下载最新的 17.6 镜像。只要大版本号一致,直接替换 /data 文件夹里的物理文件是没问题的。警示:千万不要随意把 17.6 改成 18 或其他大版本,否则数据库会因为格式不兼容而无法启动。
    2. 网络与证书: 如果你之前在 Nginx 里配置了 SSL 证书,且证书路径是绝对路径(比如 /etc/letsencrypt),记得也要把这些证书文件同步迁移过去,或者在新服务器上重新申请。

    参考文档:https://docs.rw/

    总结: 迁移不是“覆盖安装”,而是**“物理移动整个项目目录”**。只要路径一致、环境对齐、权限正确,Remnawave 就能在新服务器上无缝复活。

  • 使用uptime_kuma

    Uptime Kuma 是一款开源、自托管的监控工具,因其界面精美、操作简单而在开发者和自建服务爱好者中极受欢迎。它的设计风格非常现代化,类似于商业级的 UptimeRobot,但你可以完全掌控自己的数据。

    以下是关于 Uptime Kuma 的详细介绍:


    核心功能

    • 多类型监控:支持 HTTP(s)、TCP、Ping、DNS 记录、Push、Steam 游戏服务器、Docker 容器等多种协议的存活检查。
    • 精美的仪表盘:提供直观、响应式的 UI,支持深色/浅色模式(且支持跟随系统或手动切换),图表展示了服务的延迟和可用率。
    • 状态页 (Status Page):可以创建公开的状态页,向用户展示服务的实时运行状况,无需登录即可查看。
    • 丰富的通知渠道:支持超过 90 种通知方式,包括 Telegram、Discord、飞书、钉钉、微信(通过插件)、邮件 (SMTP) 以及 Webhook 等。
    • 多语言支持:原生支持中文在内的多种语言。
    • 代理支持:如果你的服务器无法直接访问某些目标,可以通过设置代理来进行监控。

    为什么它受到欢迎?

    1. 部署极其简单

    它非常适合使用 Docker 运行。只需一行命令即可启动,且所有数据都存储在一个 SQLite 数据库文件中,备份和迁移非常方便。

    2. 交互体验优秀

    与传统的监控工具(如 Zabbix 或 Nagios)不同,Uptime Kuma 的配置几乎是“零门槛”的。添加一个监控项通常只需要填写 URL 并点击保存。

    3. 轻量化

    它采用 Node.js 和 Vue 编写,对系统资源的占用非常低,即便是 1 核 1G 的轻量云服务器也能流畅运行。


    监控网站项目

    传送门

    监控服务器项目

    传送门

  • Docker 服务器完整运维指南(个人服务器推荐架构)

    随着越来越多服务可以通过 Docker 部署,很多个人服务器都会运行多个项目,例如博客、密码管理器、数据库等。

    如果一开始没有规划好服务器结构,后期往往会出现:

    • 项目目录混乱
    • 数据难以备份
    • 迁移服务器困难
    • 运维成本越来越高

    本文整理了一套 个人服务器 Docker 运维方案,适用于长期稳定运行。

    一、服务器目录规划

    Linux 系统推荐遵循 Filesystem Hierarchy Standard。

    其中:

    • /opt 用于存放第三方软件
    • 非系统程序建议统一放在 /opt

    因此推荐目录结构:

    /opt

     └── docker

          ├── nginx

          ├── wordpress

          ├── bitwarden

          ├── mysql

          └── redis

    说明:

    目录用途
    /opt/docker所有 Docker 项目
    nginx反向代理
    wordpress博客系统
    bitwarden密码管理
    mysql数据库
    redis缓存服务

    这样规划的优点:

    • 结构清晰
    • 运维简单
    • 迁移服务器方便

    二、Docker 项目标准结构

    每个 Docker 项目建议统一结构:

    project-name

     ├── docker-compose.yml

     ├── data

     ├── config

     └── logs

    例如 WordPress:

    /opt/docker/wordpress

     ├── docker-compose.yml

     ├── data

     ├── db

     └── logs

    说明:

    目录用途
    docker-compose.yml容器启动配置
    data程序数据
    config配置文件
    logs日志

    三、推荐部署的基础服务

    一台个人服务器通常包含以下服务:

    1 Nginx 反向代理

    推荐使用 Nginx 统一反向代理。

    目录结构:

    /opt/docker/nginx

     ├── docker-compose.yml

     ├── conf

     │    ├── blog.conf

     │    ├── panel.conf

     │    └── vault.conf

     ├── html

     └── logs

    用于反代:

    • 博客
    • 面板
    • API 服务

    2 WordPress 博客

    博客系统推荐使用 WordPress。

    优点:

    • 插件丰富
    • 主题丰富
    • SEO 友好
    • 社区活跃

    目录:

    /opt/docker/wordpress

    3 Bitwarden 密码管理

    密码管理推荐自建 Bitwarden。

    优点:

    • 开源
    • 支持浏览器插件
    • 支持手机 App
    • 支持自托管

    目录:

    /opt/docker/bitwarden

    四、Docker 常用运维命令

    查看容器:

    docker ps

    查看日志:

    docker logs 容器名

    进入容器:

    docker exec -it 容器名 bash

    重启容器:

    docker restart 容器名

    停止项目:

    docker compose down

    启动项目:

    docker compose up -d

    五、服务器迁移方法

    如果需要更换服务器,只需要迁移 /opt/docker 目录。

    1 停止容器

    docker compose down

    2 打包数据

    tar -czvf docker-backup.tar.gz /opt/docker

    3 传输到新服务器

    scp docker-backup.tar.gz root@新服务器:/opt

    4 解压

    tar -xzvf docker-backup.tar.gz

    5 启动服务

    cd /opt/docker

    docker compose up -d

    完成迁移。

    六、Docker 数据备份

    建议每天备份服务器数据。

    备份命令:

    tar -czvf /backup/docker-$(date +%F).tar.gz /opt/docker

    定时任务:

    crontab -e

    加入:

    0 3 * * * tar -czvf /backup/docker-$(date +\%F).tar.gz /opt/docker

    每天凌晨 3 点自动备份。

    七、服务器安全建议

    1. 使用 SSH Key 登录
    2. 禁止 root 远程登录
    3. 开启防火墙
    4. 定期更新系统
    5. 定期备份数据

    八、推荐服务器运维习惯

    1️⃣ 所有项目统一 /opt/docker

    2️⃣ 每个项目独立目录

    3️⃣ 使用 docker-compose 管理

    4️⃣ 所有数据必须挂载

    5️⃣ 定期备份服务器

    九、总结

    通过合理规划服务器结构,可以获得以下优势:

    • 清晰的项目结构
    • 简单的服务器迁移
    • 方便的数据备份
    • 更专业的运维管理

    这套结构非常适合:

    • 个人博客服务器
    • 自建云服务
    • 开发测试服务器

    长期使用也不会混乱。

    如果需要进一步提升运维效率,可以继续优化:

    • 自动备份脚本
    • 自动 SSL 证书
    • 统一反向代理
    • Docker 一键部署脚本

    这样就能打造一套稳定的个人服务器环境。

  • Spartan Host 斯巴达西雅图 AS9929 限量版深度测评

    🏆【传家宝系列】Spartan Host 斯巴达西雅图 AS9929 限量版深度测评

    测评声明: 本报告基于 2024 年首发批次硬件参数及 2025-2026 年网络链路实测整理。


    📌 产品背景

    在 VPS 圈内,Spartan Host(斯巴达) 一直以“稳如泰山”的口碑和高性价比的 Cera 线路闻名。2024 年上半年,官方低调推出了基于 AS9929(联通精品网) 线路的限量版套餐。这款年付 $122.40(原价 $153 使用永久 8 折优惠码)的产品,凭借其顶级的硬件配置和近乎完美的网络表现,迅速成为二级市场的“理财产品”。


    🛠 核心硬件规格

    这款机器之所以被称为“水桶机”,是因为它在硬件上没有任何缩水:

    规格项目详细参数
    处理器 (CPU)AMD Ryzen 9 7950X (2 vCPU) – 旗舰级高频表现
    内存 (RAM)2GB DDR5 – 读写速度极快
    存储 (Disk)50GB NVMe SSD – 高 IOPS 保证
    流量 (Traffic)1TB / 月 – 1Gbps 峰值带宽
    防御 (DDoS)默认 20Gbps (由 CeraNetworks 提供,可洗 CC)
    续费价格$122.40 / 年 (永久 8 折后价格)

    🌐 网络线路深度解析

    1. 三网回程 AS9929 (CU II)

    该产品最大的卖点在于其回程线路。AS9929 是联通的精品骨干网,定位对标电信的 CN2 GIA:

    • 电信用户: 借由 Cera 优化的中转,回程强制走 9929,绕过了拥堵的 163 骨干网。
    • 联通用户: 核心受众,直连精品网,延迟与稳定性达到极致。
    • 移动用户: 同样通过 9929 优化回国,解决了西雅图方向延迟抖动较大的通病。

    2. 晚高峰表现

    根据长期监测,该机房在晚高峰(20:00 – 23:00)的丢包率通常保持在 1% 以下,4K 视频起步速度极快,是追求极致观影和远程办公体验的首选。


    🚀 性能实测 (Benchmark)

    CPU 跑分

    得益于 Ryzen 7950X,其单核性能堪称恐怖。在 Geekbench 测试中:

    • 单核得分: ~2100+
    • 多核得分: ~4000+

    注:这使得它在运行 WordPress、Docker 容器或复杂脚本时,响应速度比普通的 Xeon 核心快出 50% 以上。

    磁盘 IO 测试

    “`text
    Reading speed: 2.2 GB/s
    Writing speed: 1.8 GB/s

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

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

    🎯 终身学习的本质困境

    📖 读书是跨时空社交

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

    😰 学习焦虑的深化

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

    💡 认知升级的路径与挑战

    🧠 认知四境界

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

    👀 “两只眼”理论

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

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

    🎲 概率权的争夺

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

    💬 谈资成为新货币

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

    🤔 思维工具与认知框架

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

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

    ⚙️ 第一性原理的力量

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

    🔍 科学思维与信息甄别

    🕵️ 阴谋论盛行的根源

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

    🧐 批判性思维的重要性

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

    📚 终身学习的实践路径

    🔄 “二元学习法”

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

    ❓ 问题比答案更重要

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

  • 运维复盘: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;。