1. 准备与选区
在 Linode 控制台创建新实例:选择靠近台湾的机房(如新加坡或东京,如果 Linode 已有台北节点则选台北),建议选择 2GB+ 内存的实例作为应用节点,另外准备 1-2 台同规格用于水平扩展,此外建议使用 Linode Managed Database 或单独部署一台做数据库主节点并配置备份。
2. SSH 与基本安全
创建实例后用 SSH 登录:ssh root@your_ip。更新系统并创建非 root 用户:apt update && apt upgrade -y;adduser deploy;usermod -aG sudo deploy。配置公钥登录、禁用密码登录,配置 UFW:ufw allow OpenSSH; ufw allow http; ufw allow https; ufw enable。
3. 安装 LEMP(Nginx + MariaDB + PHP)
以 Ubuntu 22.04 为例:apt install nginx mariadb-server php-fpm php-mysql php-xml php-curl php-gd unzip -y。调整 php-fpm 池文件 /etc/php/8.1/fpm/pool.d/www.conf,将 user/group 改为 www-data,重启 php-fpm 与 nginx。
4. 数据库高可用策略
推荐用 Linode Managed Databases(有自动备份与只读副本)或自行搭建 MariaDB 主从。若手工:在主库启用 binary-log、设置 server-id,导出并导入到从库,配置 CHANGE MASTER TO ... START SLAVE; 并在 WordPress 使用主库写、只读副本做读扩展(使用 ProxySQL 或应用层读写分离)。
5. 文件/媒体的高可用方案
不要把上传文件放在单台实例:使用 Linode Object Storage(S3 兼容)存储媒体,安装并在 WP 使用插件(如 WP Offload Media)或用 rclone/s3cmd 同步。配置步骤:在对象存储创建 bucket,记录 endpoint/key/secret,然后在 WP 插件中填写。
6. 负载均衡与会话处理
使用 Linode NodeBalancer 或自行部署 HAProxy:将多台后端 Web 实例绑定到负载均衡器,配置健康检查(HTTP /wp-admin/ 或 /index.php 返回 200)。如果有登录会话,使用 redis/memcached 作会话与对象缓存(在 wp-config.php 中配置 persistent cache)。
7. SSL 与域名
建议在 NodeBalancer 或反向代理上终止 SSL:使用 Let's Encrypt certbot 在负载均衡器或每个实例上申请证书。命令示例:apt install certbot python3-certbot-nginx; certbot --nginx -d example.com。确保证书自动续期(cron 或 systemd timer)。
8. 自动化与部署
使用 git + CI(GitHub Actions/GitLab CI)自动部署代码到后端实例;或用 Ansible 批量配置。示例任务:拉取代码、composer/npm 构建、同步 wp-content(注意不要覆盖 uploads)、重启 php-fpm。
9. 备份与监控
开启 Linode 的自动备份,定期对数据库执行 mysqldump 并上传到对象存储;配置监控(Linode Longview/Prometheus + Grafana),设置告警(磁盘、CPU、数据库延迟、HTTP 状态码)。
10. 测试与故障切换
演练:模拟某台后端宕机,确认 NodeBalancer 自动移除后端并保持服务;验证数据库主宕机时是否可快速提升从库为主(提前写好提升脚本并测试)。配置 Floating IP(林克 IP)可在实例间快速漂移以做紧急切换。
11. 性能优化与安全加固
开启 Nginx 缓存、启用 gzip、配置 HTTP/2;使用 Fail2ban、防火墙白名单限制 SSH;将数据库配置调优(innodb_buffer_pool_size、query_cache)并定期清理 slow query。
12. 日常运维要点
定期更新系统与依赖、定期验证备份可恢复、监控证书到期、做好日志集中(ELK 或 Loki),并记录故障恢复步骤文档以降低恢复时间。
13. 问:Linode 在台湾没有节点,是否影响部署?
答:可以选择最近的节点(东京或新加坡)以降低延迟;同时通过使用 CDN(Cloudflare 等)和 NodeBalancer+多区域后端来提升用户访问性能与冗余。
14. 问:如何实现数据库真正的高可用而不是单点?
答:最佳做法是使用托管数据库(自带主从与自动故障切换)或部署 Galera/Percona XtraDB Cluster 实现多主复制,并结合自动故障检测与提升脚本。
15. 问:第一次部署如何快速恢复流量?
答:准备好浮动 IP 或在 DNS 上使用低 TTL,NodeBalancer 或浮动 IP 可在几秒到几分钟内将流量切换到备用实例;平时演练并记录脚本与步骤以保证切换顺利。
来源:如何在vps linode 台湾机房部署WordPress站点实现高可用性