1. 迁移前的总体准备
1) 确认本地环境清单:操作系统、Web Server(如Nginx/Apache)、数据库(MySQL/Postgres)、PHP/Node版本。
2) 统计数据量和带宽:网站文件总量(例如:public_html 约 8.4GB)、数据库大小(例如:mysqldump 后 1.2GB),确定上传时间。
3) 备份策略:本地先做完整快照,导出数据库 SQL(mysqldump --single-transaction -u root -p db > dump.sql)。
4) 列出依赖:第三方服务(SMTP、OSS)、SSL 证书来源(Let’s Encrypt/自签),确保云端也能使用。
5) 准备账号与权限:阿里云账号实名认证、开通ECS、VPC、弹性公网IP、开通 CDN 与 Anti-DDoS 服务权限,记录AccessKey(若使用 API)。
6) 网络与合规检查:确认香港节点是否满足业务合规及延迟需求,测试本地到香港延迟(ping 约 60-80ms 为常见值)。
2. 选择并配置阿里云香港ECS实例(示例配置)
1) 选择地域与机型:Region 选择 “香港”,示例使用 ecs.c6.large(2 vCPU / 4GB 内存)。
2) 硬盘与带宽:系统盘 40GB SSD,数据盘 200GB 云盘;共享或专用带宽 10Mbps(带宽峰值决定流量费)。
3) 操作系统:推荐 Ubuntu 20.04 LTS 或 CentOS 7/8。
4) 安全组规则:开放 22(SSH)、80(HTTP)、443(HTTPS),限制管理端口仅白名单访问。
5) 弹性公网IP:绑定 EIP,用于网站对外访问,并记录公网 IP 例如 1.2.3.4。
6) 下表为示例配置对比(供参考)。
| 项 | 示例值 | 价格(预估/月) |
| 实例规格 | ecs.c6.large (2 vCPU / 4GB) | 约 ¥170 |
| 系统盘 | 40GB SSD | 约 ¥20 |
| 数据盘 | 200GB 云盘 | 约 ¥160 |
| 带宽 | 10Mbps 专用 | 约 ¥100 |
| Anti-DDoS | 基础防护 + 高防按需 | 视流量计费 |
3. 数据迁移:文件与数据库的具体步骤
1) 上传文件:推荐使用 rsync 或 scp,示例:rsync -avz --progress ./public_html/ root@1.2.3.4:/var/www/html/。
2) 导出数据库:mysqldump -u root -p --single-transaction --quick dbname > db.sql;传输 db.sql:scp db.sql root@1.2.3.4:/root/。
3) 导入数据库:在云端先创建库和用户,mysql -u root -p -e "CREATE DATABASE dbname; GRANT ALL ON dbname.* TO 'user'@'%' IDENTIFIED BY 'pwd';"; 然后 mysql -u user -p dbname < db.sql。
4) 权限与文件属主:chown -R www-data:www-data /var/www/html;调整 nginx/php-fpm 运行用户一致。
5) 大文件或大流量时用分片或 rsync --partial;如果有 8GB 文件、10Mbps 带宽,估算上传时间约 8*8 / 10 = 6.4 小时(理论)。
4. 应用环境配置与服务部署
1) 安装基本组件:apt update && apt install nginx mysql-server php-fpm -y(或使用 docker-compose 部署)。
2) Nginx 配置示例:server_name example.com; root /var/www/html; listen 80; 配置 HTTPS 使用 certbot:certbot --nginx -d example.com。
3) PHP/Node 版本:确保与本地一致(PHP 7.4 / Node.js 14+),可用 nvm 或 apt 配置。
4) 缓存与队列:建议开启 Redis(示例:redis-server)用于 session 和缓存,减少数据库负载。
5) 日志与监控:安装监控(阿里云云监控、Prometheus + Grafana),配置 logrotate 日志轮转,确保磁盘不会被日志填满。
5. 域名解析、CDN 与切换流量步骤
1) 域名准备:在域名控制面板删除旧的 A 记录或添加新的 A 记录指向 EIP(示例:A @ -> 1.2.3.4)。
2) TTL 策略:在切换前将旧记录 TTL 缩短到 300s,以便切换快速回滚。
3) CDN 配置:阿里云 CDN 添加域名,回源地址填写 EIP 或负载均衡域名,选择节点与缓存规则。
4) HTTPS 与证书:CDN 侧可接入证书或源站 HTTPS,建议在源站与 CDN 都配置证书。
5) 切换流量测试:先通过 hosts 文件将本机流量指向新服务器验证,确认无误后修改 DNS 全量切换。
6. 安全加固与DDoS防御建议
1) 安全组与防火墙:仅开放必要端口,使用 ufw/iptables 限制访问,示例:ufw allow 22/tcp from 203.0.113.5。
2) Anti-DDoS:启用阿里云 Anti-DDoS 基础防护,流量高峰可启用按需高防 IP 或高防服务,防护带宽按峰值计费。
3) Web 防火墙(WAF):开启阿里云 WAF,配置常见攻击策略(SQLi、XSS、CC 防护)。
4) Nginx 限速与访问控制:limit_req_zone $binary_remote_addr zone=one:10m rate=20r/s; 配置 fail2ban 拦截暴力登录。
5) 监控告警:设置云监控告警(突发流量、CPU、内存、磁盘IO),出现异常立即触发自动化脚本(如临时封禁 IP)。
7. 真实案例与回滚策略(示例)
1) 案例简介:某中型电商从本地机房迁移到阿里云香港 ECS,数据量:网站文件 8.4GB,数据库 1.2GB,日均带宽峰值 40Mbps。
2) 迁移流程:先在低流量时段 rsync 增量同步两次(第一轮全量、第二轮差异),切换时短暂停站,导出最后增量 SQL 并导入云端。
3) 遭遇问题:切换后发现支付回调丢失,原因为防火墙误封回调 IP,快速回滚 DNS 回到本地并修复白名单后再次切换。
4) 回滚步骤:1) 将 DNS TTL 设低并记录旧记录;2) 若需回滚,立即将域名指回旧 IP;3) 将云端改为维护页面并保留日志便于分析。
5) 经验总结:务必在切换前完整测试第三方回调与异步队列,准备回滚脚本并确保 TTL 足够短。
8. 验证上线后的检查清单与常见问题
1) 功能自检:首页、登录、支付、文件上传、邮件通知等关键路径全部通过。
2) 性能测试:使用 ab 或 wrk 压力测试,示例:wrk -t2 -c100 -d60s http://example.com/,记录 RPS 与 95% 响应时间。
3) 日志检查:tail -f /var/log/nginx/error.log /var/log/mysql/error.log,确认无致命错误。
4) 监控阈值:确认 CPU < 70%,内存 < 80%,磁盘 IO 正常;流量突增触发告警策略。
5) 常见问题与解决:数据库连接数过高(优化连接池或增加 RDS/读写分离)、静态资源缓存策略错误(调整 CDN 缓存规则)。
来源:迁移手册vps香港服务器阿里云从本地环境迁移云端的详细步骤