作者: 启鑫

  • 使用 Docker 一键部署本地 WordPress 开发环境

    下面是一份适合完全新手的 WordPress 本地安装教程(使用 Docker Desktop + docker compose)

    1. 为什么选择 Docker 部署 WordPress?

    对于初学者来说,Docker 就像是一个“虚拟打包盒”。它将 WordPress 运行所需的所有组件(数据库、PHP、Web服务器等)打包在隔离的环境中运行,完全不干扰你的电脑主机系统。

    主要优势对比:传统环境 vs. Docker 容器

    特性传统安装 Docker 容器化部署
    环境配置需手动安装和配置 PHP、MySQL、Nginx/Apache,易出现版本冲突和依赖错误。仅需一个配置文件 (docker-compose.yml),环境自动搭建,保证一次成功。
    系统侵入安装组件会修改操作系统配置,可能与其他软件冲突。环境完全隔离,零侵入主机系统,不产生任何“数字垃圾”。
    可移植性难以将环境从一台电脑迁移到另一台,或从本地迁移到云服务器。极高的可移植性。只需复制项目文件夹,即可在任何支持 Docker 的机器上一键还原
    启动/停止需要分别启动和关闭 Web 服务、数据库服务等多个进程。使用 docker compose up -ddown 命令,一键管理所有服务。

    简而言之,Docker 是现代本地开发的首选方案。它帮你彻底告别环境配置的噩梦,让你将所有精力集中在 WordPress 本身,实现真正的即开即用。

    2. 安装 Docker Desktop 与创建独立项目目录

    2.1 安装 Docker Desktop (核心工具)

    访问 Docker 官方网站下载并安装适用于您操作系统的版本:

    https://www.docker.com/products/docker-desktop/

    安装完成后,请打开 Docker Desktop 应用程序,并确保左下角的状态显示为 Running(正在运行)。

    2.2 创建项目工作目录

    在您喜欢的位置(如桌面或文档文件夹),创建一个新的空文件夹,作为您的 WordPress 项目目录。所有配置文件和数据都将保存在这里。

    wordpress-docker

    3. 核心配置:编写 docker-compose.yml 文件

    进入 wordpress-docker 文件夹,新建一个名为 docker-compose.yml 的文件。

    把下面内容完整粘贴进去:

    services:
    
      db:
        image: mysql:8.0
        restart: always
        environment:
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: wordpress
          MYSQL_ROOT_PASSWORD: qixinlee.com
        volumes:
          - ./mysql:/var/lib/mysql
        networks:
          - wordpress_network
    
      wordpress:
        image: wordpress:latest
        restart: always
        ports:
          - "80:80"
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: wordpress
          WORDPRESS_DB_NAME: wordpress
        volumes:
          - ./web:/var/www/html
          - ./logs:/var/log/apache2  
        networks:
          - wordpress_network
    
      phpmyadmin:
        image: phpmyadmin:latest
        restart: always
        ports:
          - "8080:80"
        environment:
          PMA_HOST: db
        networks:
          - wordpress_network
    
    networks:
      wordpress_network:

    保存文件即可。

    4. 执行部署:启动容器并验证服务状态

    这是最关键的一步,我们将通过终端命令启动 WordPress 环境。

    4.1 打开终端并导航到项目目录

    首先,根据您的操作系统,打开相应的终端工具:

    系统终端工具
    WindowsPowerShell / CMD
    Mac / LinuxTerminal

    如何确定路径?

    您需要告诉终端工具您的项目文件夹 wordpress-docker 位于电脑的哪个位置。

    1. 找到项目位置: 找到您在 步骤 2 中创建的 wordpress-docker 文件夹。
    2. 复制完整路径:
    • Windows 用户: 在文件管理器中,点击地址栏并复制完整的路径(例如 C:\Users\YourName\Desktop\wordpress-docker)。
    • Mac / Linux 用户: 右键点击文件夹,选择“获取信息”或“属性”,然后复制路径。

    执行导航(cd 命令):

    使用 cd (Change Directory) 命令进入该文件夹。请将下面的示例路径替换为您自己电脑上的实际路径(YourName 也要替换)。

    • 如果您的文件夹在 Windows 桌面:
    cd C:\Users\YourName\Desktop\wordpress-docker
    • 如果您的文件夹在 Mac/Linux 桌面:
    cd /Users/YourName/Desktop/wordpress-docker

    成功进入文件夹后,您就可以进行下一步的启动操作了。

    4.2 执行启动命令

    运行以下命令来启动所有服务。-d 参数表示在后台(分离模式)运行容器:

    docker compose up -d

    提示: 第一次运行会自动下载 WordPress、MySQL 和 phpMyAdmin 的镜像文件——请耐心等待下载和创建过程完成。

    4.3 验证服务状态

    启动完成后,运行以下命令检查容器状态:

    docker compose ps

    如果看到以下三个服务都显示为 running,则表示部署成功:

    服务状态
    dbrunning
    wordpressrunning
    phpmyadminrunning

    5. 首次访问:通过浏览器完成 WordPress 首次安装

    浏览器访问:

    http://localhost

    第一次访问会进入 WordPress 安装向导:

    1. 选择语言
    2. 输入站点名称、管理员账号密码
    3. 完成安装并进入后台

    之后,你就能正常管理网站、安装主题、安装插件、写文章了。

    6. 数据库管理:通过 phpMyAdmin 图形界面管理数据库

    phpMyAdmin 是一个流行的、基于 Web 的 MySQL 数据库管理工具。如果你需要手动检查 WordPress 的数据表结构、备份数据,或进行高级的数据库操作,可以使用这个工具。

    浏览器访问:

    http://localhost:8080

    登录时,请使用您在 docker-compose.yml 文件中为 db 服务配置的凭证:

    字段
    用户名wordpress
    密码wordpress

    7. 容器操作:停止、重启与日志查看

    动作命令
    停止所有服务docker compose down
    重启所有服务docker compose restart
    查看日志docker compose logs -f

    停止不会删除数据,因为数据库文件和网站文件都保存在你本地文件夹里。

    现在你成功拥有了本地 WordPress 环境

    以后开发或者测试主题、插件,都只需要:

    docker compose up -d

    就能一键启动 WordPress

  • AWS、Azure、GCP 服务器选型深度对比:网站架构师的决策指南

    选择合适的云平台是现代网站架构成功的关键第一步。从核心计算、网络性能、成本结构、安全合规和运维工具链这五个关键维度,对 AWS、Azure 和 Google Cloud Platform (GCP) 进行深入比较

    一. 核心计算服务对比:性能与弹性

    网站的核心是其运行的计算实例。三大云平台都提供了强大的虚拟机 (VM) 服务,但各有侧重。

    1. 基础虚拟机 (VM) 与服务器性能

    平台核心服务性能优势
    AWSEC2 (Elastic Compute Cloud)实例类型最丰富,硬件迭代快,适用于各类工作负载。
    AzureVirtual Machines与 Windows Server 生态深度集成,提供针对 HPC 的高性能实例。
    GCPCompute Engine提供自定义机器类型,以 Live Migration (实时迁移) 闻名,在单核性能上表现突出。

    弹性伸缩:

    • AWS 的 Auto Scaling Group (ASG) 是行业标杆。
    • Azure Scale Sets 易于配置,尤其适合微软技术栈。
    • GCP 的实例组在网络性能和启动速度上具有优势。

    2. 云原生:容器与无服务器计算

    对于追求敏捷性和成本效益的现代网站,容器和无服务器是首选。

    • Kubernetes (K8s): GCP GKE 作为 Kubernetes 的发源地,在集群管理、自动化升级和安全性方面处于行业领先地位,是云原生应用的理想选择。AWS EKS 和 Azure AKS 同样成熟,但 GKE 的管理体验往往更胜一筹。
    • Serverless 容器: GCP Cloud Run 允许开发者将任何容器化应用部署为完全无服务器服务,按请求计费,极大地提高了灵活性和资源利用率。AWS Fargate 和 Azure Container Apps 提供了类似服务,但 Cloud Run 在容器 Serverless 领域具有独特性。
    • 函数即服务 (FaaS): AWS Lambda 依然是市场领导者,生态系统最成熟,集成服务最多。Azure Functions 擅长与 Azure 内部服务和事件集成,而 GCP Cloud Functions 简洁高效。

    二. 网站关键交付、全球网络与速度特性

    网络的低延迟和高吞吐量对用户体验至关重要。

    1. 全球骨干网与网络速度

    • GCP 的核心优势在于其全球骨干网。 Google 拥有庞大的私有光纤网络,可以确保跨区域甚至跨大洲的数据传输延迟极低。对于目标用户分布在全球的网站、游戏后端或实时通信应用,GCP 在网络速度上通常表现突出。
    • 负载均衡: AWS ELB (ALB/NLB) 功能全面。GCP Cloud Load Balancing 强调高性能的全球单 IP 模式,实现真正的全球统一入口。

    2. 内容分发网络 (CDN)

    • AWS CloudFront: 接入点 (PoP) 数量众多,与 AWS S3 和 EC2 集成度最高,生态成熟。
    • GCP Cloud CDN: 利用 Google 骨干网,缓存命中率高,尤其适合搭配 GCP 的存储服务。
    • 选择依据: 客户地理位置、缓存策略和与云主机服务的集成便利性。

    3. 数据库服务

    • AWS: RDS 提供了 MySQL、PostgreSQL 等托管服务,而 Aurora 则是其高性能、兼容 MySQL/PostgreSQL 的云原生数据库旗舰,是关系型数据库的首选。
    • GCP: Cloud Spanner 提供了全球分布式、强一致性的关系型数据库,适用于对数据一致性要求极高的金融或全球应用;Firestore 适合实时 Web 应用。
    • Azure: Cosmos DB 是强大的多模型(文档、键值、图形)全球分布式 NoSQL 数据库。

    三. 定价、成本控制与灵活性

    数据出站 (Egress) 费用是网站运营的主要隐藏成本。

    1. 核心计算折扣机制

    • AWS: 主要依赖 Reserved Instances (RI)Savings Plans。Savings Plans 提供了跨实例、跨区域的高度灵活性,但需要用户做出提前承诺。
    • GCP: 提供独特的持续使用折扣 (SUC),即 VM 实例运行时长达到一定阈值后,无需提前承诺,折扣会自动应用。这对于流量波动较大的网站尤其友好;同时提供灵活的承诺使用折扣 (CUD)。
    • Azure: 主要通过 Reserved VM Instances (RIs) 提供折扣;对使用 Windows Server 的客户,其授权费用集成在价格中,具有优势。

    2. 数据出站 (Egress) 成本

    所有云平台都对数据出站收费,这是公有云最昂贵的服务之一。AWS 和 Azure 的出站基础费率相对较高,需要通过 CDN 大幅降低成本。GCP 在跨区域互联和出站费用上通常更具竞争力,特别是利用其全球骨干网进行区域间传输时。

    四. 安全与合规性

    1. 身份与访问管理 (IAM)

    • AWS IAM: 最为复杂,权限控制粒度最细,但也最难配置。其默认策略是“拒绝一切”,安全性高。
    • Azure AD: 与企业级 Active Directory 深度集成,是组织管理用户身份和权限的首选,非常适合已使用微软服务的企业。
    • GCP IAM: 基于资源层次结构,权限模型相对简洁,易于理解和实施最小权限原则。

    2. 基础网络安全与防护

    三大平台均提供 Web 应用防火墙 (WAF) 和 DDoS 防护服务。AWS WAF/Shield、Azure Front Door/WAF 和 GCP Cloud Armor 是各自的旗舰产品,功能类似,主要区别在于与各自生态系统的集成度。

    五. 运维、监控与工具链

    1. 托管平台服务 (PaaS) 易用性

    对于希望最小化运维投入的网站,PaaS 是理想选择。

    • Azure App Service: 提供了极简化的 PaaS 体验,支持多语言,运维投入极低,是快速部署 Web App 的利器。
    • GCP Cloud Run: 提供了容器即服务的 PaaS 体验,兼具 Serverless 的优势和容器的灵活性,是现代应用的首选 PaaS。
    • AWS Elastic Beanstalk: 易于初次部署,但长期运维和定制化配置相对复杂。

    2. 监控与可观测性

    • AWS CloudWatch: 成熟、全面,与所有 AWS 服务深度集成。
    • GCP Cloud Operations (Stackdriver): 功能强大,在日志聚合和故障诊断方面表现优异,尤其是在 K8s 监控方面。
    • Azure Monitor: 提供全面的指标和日志收集,与 Azure 服务和混合云环境集成良好。

    六. 场景分类

    根据网站的关键需求,以下是云平台的选择建议:

    场景分类网站特点首选云平台选型理由
    全球化与低延迟应用用户分布全球、游戏、实时通信GCP卓越的全球骨干网,跨区域低延迟,高性能单 IP 负载均衡。
    云原生与容器化应用使用 Docker/K8s、追求 ServerlessGCPGKE 行业领先;Cloud Run 提供了终极容器 Serverless 体验。
    传统企业与微软生态大量使用 .NET、Windows Server、SQL ServerAzure与企业 Active Directory 和微软技术栈深度集成,方便混合云迁移。
    生态工具链与市场主导追求功能最全、社区资料最多、不惧怕复杂性AWS最庞大的服务目录和最大的市场份额,资源和解决方案最丰富。
    成本敏感型与初创型预算有限、流量波动大GCP自动应用的持续使用折扣 (SUC);灵活的 Serverless 选项(Cloud Run)。
  • 小米 Redmi 5 Plus (vince) 刷入 postmarketOS 教程

    在 Debian 13 系统环境下完全通过命令行为小米 Redmi 5 Plus (vince) 手机刷入轻量级的 postmarketOS 移动操作系统

    1. 前提条件

    1. 您的 Redmi 5 Plus 必须已经 解锁 Bootloader
    2. 电脑已安装 Debian 13 系统。

    2. 安装必要工具

    2.1 安装 Python(推荐使用 Miniconda)

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash ~/Miniconda3-latest-Linux-x86_64.sh
    python --version

    提示: 安装完成后,您可能需要重启终端或运行 source ~/.bashrc 让python命令生效。

    2.2 安装 fastboot

    sudo apt install android-sdk-platform-tools-common android-sdk-platform-tools

    2.3 安装 pmbootstrap

    git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
    cd pmbootstrap
    pip install .
    pmbootstrap --version

    3. 初始化 pmbootstrap 配置

    运行初始化命令并根据提示进行配置。

    pmbootstrap init

    配置选项及推荐值:

    序号选项描述 (原文/翻译)您的输入/选择目的或说明
    1Work path (工作路径)回车 (默认)默认路径通常最佳。
    2pmaports path (pmaports 路径)回车 (默认)存放 postmarketOS 软件包定义文件的路径。
    3Available postmarketOS release (选择发行版)v25.06选择您希望安装的 postmarketOS 版本。
    4Vendor (选择设备厂商)qcomRedmi 5 Plus 采用高通芯片。
    5Device codename (选择设备型号)msm8953Redmi 5 Plus 所属的平台代号。
    6Username (设置用户名)qixinlee替换为您想要的用户名。
    7Available providers for postmarketos-base-ui-wifi (选择 WiFi 后端)回车 (默认)默认选择 default 即可。
    8User interface (选择用户界面)phosh推荐 Phosh,它是一个基于 GNOME 的移动界面。
    9Install systemd? (是否安装 systemd)回车 (默认)默认选择 y
    10Change them? (y/n) (更改额外选项)回车 (默认 n)通常无需更改。
    11Extra packages (额外软件包)回车 (默认 none)暂不添加额外软件包。
    12Use this timezone instead of GMT? (使用此本地时区)回车 (默认 y)使用本地时间而非 GMT。
    13Locale (选择本地化语言环境)回车 (默认 en_US)推荐使用 en_US,以确保兼容性。
    14Device hostname (设置设备主机名)回车 (默认)设备在网络上的名称。
    15Build outdated packages? (构建过时包)回车 (默认 y)允许构建可能过时的包,提高成功率。
    16Zap existing chroots…? (清空已有 chroot)回车 (默认 y)确保配置能立即生效。

    4. 构建系统 (Install)

    开始构建 postmarketOS 系统镜像。

    pmbootstrap install

    系统会提示设置用户登录密码,请根据提示输入两次密码:

    *** SET LOGIN PASSWORD FOR: 'qixinlee' ***
    New password:
    Retype new password:

    5. 电脑连接设备进行刷写

    将手机进入 Fastboot 模式:关闭手机电源,然后同时按住 音量下键电源键,直到屏幕上出现 Fastboot 字样,连接电脑。

    5.1 确认设备已连接

    sudo fastboot devices

    提示: 如果能看到设备序列号,则连接成功。

    5.2 刷入 lk2nd (引导加载程序)

    pmbootstrap flasher flash_lk2nd

    5.3 刷入 rootfs (系统文件系统)

    pmbootstrap flasher flash_rootfs

    5.4 重启设备

    sudo fastboot reboot

    设备将自动启动进入您所选择的 postmarketOS 用户界面

  • 用 GitHub Pages 创建个人静态网站

    GitHub Pages 是一个免费的静态网站托管服务,你可以用它来展示个人主页、项目网站

    一、注册 GitHub 账户

    1. 打开GitHub 官网注册一个新账户。
    2. 选择一个你喜欢的用户名(USERNAME)。

    这个用户名将在后续作为你网站的域名的一部分,例如:USERNAME.github.io

    二、创建仓库(Repository)

    1. 登录 GitHub 后,在右上角点击 “+” → “New repository”
    2. Repository name 中填写:
    USERNAME.github.io
    1. 其余选项保持默认,然后点击 “Create repository”

    三、安装并使用 GitHub Desktop 客户端

    1. 下载并安装 GitHub Desktop。
    2. 登录你的 GitHub 账户,并将刚创建的仓库克隆(Clone)到本地。
    3. 将你编写好的网页文件(如 index.html)放入该仓库文件夹中。
    4. 打开 GitHub Desktop,点击 “Commit to main” 提交更改。
    5. 点击 “Push origin”(或 “Fetch origin”)上传代码到 GitHub。

    四、访问你的网站

    上传成功后,在浏览器中访问:

    https://USERNAME.github.io
  • 从 0 到 1:使用 Qwen CLI 快速搭建炫酷个人主页

    想拥有一个效果炫酷的个人页面,却对编程一窍不通?没关系!带你一步步使用强大的 Qwen CLI 工具,让你在 20 分钟内,亲手完成制作个人主页的全过程。

    前提条件

    在开始之前,请确保你已准备好以下环境:

    1. 一台可以正常联网的电脑
      Qwen CLI 在写代码时需要联网。
    2. 操作系统和终端支持中文/英文显示
      确保你的操作系统(Windows/macOS/Linux)和终端可以正常显示和输入中英文字符。

    第一步:注册Qwen 账号

    首先,你需要一个Qwen的账号来授权 CLI 工具。

    1. 访问官网:使用 Chrome 浏览器
    2. 完成注册/登录:点击页面右上角的 “登录 / 注册” 按钮,按照指引完成账号创建。
    3. 记住账号信息:请记住你的注册方式(如手机号或邮箱),后续 CLI 登录会用到。

    第二步:安装 Node.js (CLI 的运行环境)

    Qwen CLI 是基于 Node.js 开发的,因此我们需要先安装这个运行环境。

    1. 访问下载页:打开 Node.js 官方下载页面
    2. 选择 LTS 版本:根据你的操作系统(Windows / macOS / Linux)下载 LTS (长期支持) 版本,这是最稳定和推荐的版本。
    3. 执行安装:双击下载的安装包,安装过程中保持默认选项,一路点击“下一步”即可。
    4. 验证安装:安装完成后,打开你的终端(或命令提示符),分别输入并执行以下两个命令:
    # 检查 Node.js 和 npm 版本
    node -v
    npm -v

    如果终端分别显示版本号,那就说明 Node.js 环境已成功安装!

    第三步:安装 Qwen CLI (核心工具)

    现在,我们可以安装主角——Qwen CLI 了。

    1. 打开终端:
    • Windows: 按 Win + R 键,输入 cmd 后回车。
    • macOS: 打开“应用程序” -> “实用工具” -> “终端 (Terminal)”。
    • Linux: 打开终端
    1. 执行安装命令:在终端中,输入以下命令并回车,它会从网络上下载并全局安装 Qwen CLI。
    npm install -g @qwen-code/qwen-code@latest
    1. 验证安装:安装完成后,输入以下命令验证:
    qwen --version

    如果显示出版本号,说明 Qwen CLI 已成功安装。

    第四步:登录你的 Qwen 账号

    在使用前,需要让 CLI 工具获取你的账号授权。

    1. 启动登录流程:在终端中,直接输入 qwen 命令并回车。
    qwen
    1. 浏览器授权:
    • CLI 会自动在你的默认浏览器中打开一个授权页面。
    • 如果你已在浏览器中登录了 Qwen 账号,只需点击 “授权” 即可。
    • 如果未登录,请先在网页上登录你的 Qwen 账号,然后进行授权。
    • 授权成功后,网页会提示“登录成功”,此时你可以关闭该网页。
    1. 返回终端:你会看到终端显示登录成功的欢迎信息,这表示 CLI 已经准备就绪!

    第五步:开始编程 – 创建你的个人主页项目

    最激动人心的部分来了!我们将用一句话让 Qwen CLI 为我们创建项目。

    1. 发送指令:在终端里,像聊天一样对 Qwen CLI 说出你的需求。你可以大胆发挥想象力,指令描述得越具体、越清晰,生成的效果可能就越符合你的预期!
    帮我使用nodejs制作个人介绍页面,使用中文语言,页面炫酷漂亮
    1. 确认项目创建:Qwen CLI 会理解你的需求并自动创建项目名称。
    2. 进入项目目录:项目创建完成后,根据提示按回车确认最终完成后终端会显示一个本地网址,通常是 http://localhost:3000
    3. 在浏览器中打开这个网址,你就能看到你的个人主页的雏形了!最棒的是,当你修改内容时在终端对话框输入你要表述的即可
  • macOS 15(Intel 版本)修复 rsync 同步问题

    macOS 15 (Intel 版本) 中,Apple 默认提供的 rsync 实际上是 openrsync 的一个版本。虽然它能完成基础同步任务,但与我们日常使用的、功能更强大的 GNU rsync参数兼容性、功能完整性上存在显著差异。这常常导致在执行复杂同步脚本或使用特定参数时遇到报错、同步失败或功能缺失等问题。

    1. 安装功能完整的 GNU rsync

    我们将使用 macOS 上最流行的包管理器 Homebrew 来安装官方的 GNU rsync。如果你还没有安装 Homebrew,请先进行安装。

    打开终端,执行安装命令:

    brew install rsync

    等待安装完成。Homebrew 会将新安装的 GNU rsync 放置在标准路径下:

    /usr/local/bin/rsync

    2. 确认 GNU rsync 安装成功

    安装完成后,我们必须验证当前使用的是否为我们需要的 GNU 版本

    检查版本号

    通过完整路径运行 rsync,检查其版本信息:

    /usr/local/bin/rsync --version

    此时的输出应该类似于:

    rsync  version 3.x.x  protocol version 32

    关键点: 如果你看到 rsync version 3.x.x,这就确认你成功安装了 GNU rsync,它拥有比系统自带 openrsync 更完整的功能集。

    3. 永久切换默认 rsync 版本

    虽然已经安装了 GNU rsync,但系统默认执行 rsync 命令时仍会优先调用 /usr/bin/rsync(即 openrsync)。为了避免每次都输入完整路径,我们需要修改 Shell 的 PATH 环境变量

    修改 Shell 配置文件

    编辑你的 Shell 配置文件。macOS 默认使用 zsh,所以我们编辑 ~/.zshrc

    # 你可以使用 nano 或 vim 编辑器打开 ~/.zshrc 文件
    # nano ~/.zshrc

    在文件的末尾添加以下一行配置:

    export PATH="/usr/local/bin:$PATH"

    这行配置的目的是将 Homebrew 的安装路径(/usr/local/bin)移到环境变量的最前端,确保系统在查找 rsync 命令时,会优先使用我们安装的 GNU rsync。

    激活配置并最终验证

    保存文件后,执行 source 命令使配置在当前终端会话中立即生效:

    source ~/.zshrc

    最后,运行 which rsync 命令进行最终确认:

    which rsync

    输出应该是:

    /usr/local/bin/rsync

    这表明系统已默认使用 GNU rsync。可以放心地执行各种同步任务和备份脚本了!