从虚拟主机迁移到云服务器
发布时间:2025-12-18 19:55       
更新时间:2025-12-19 04:34
虚拟主机用久了,换云服务器的念头大多出现在两次限流之间:装不了 redis,改不了 php.ini,流量一涨就提醒超额。迁移没想象中难,按下面的步骤走一遍就能完成。
准备阶段
先把老站的东西凑齐:源码从虚拟主机面板打包下载,数据库用面板自带的数据库管理工具导出成 sql 文件,顺手记下 PHP 版本和已启用的扩展,这些信息在老面板的应用信息页里都有。老环境用了伪静态的,把 .htaccess 规则一并导出,nginx 不认这套语法,后面要翻译成 rewrite 规则。面板里伪静态规则的截图也存一张,翻译时对着抄省事。
初始化云服务器
买一台云服务器,装上 LNMP 环境。以 Ubuntu 为例:
apt update && apt install nginx mysql-server php-fpm php-mysql -y
云服务器和虚拟主机最大的差别在权限:你有完整 root,能装任何组件、改任何参数,php.ini 想调 memory_limit 就调,这是迁移带来的最大红利。
nginx 的站点配置给个最小样例:server 块里写 listen 80; server_name 域名; root /var/www/site; index index.php;,伪静态用 try_files $uri $uri/ /index.php?$query_string; 兜住。
上传与导库
源码用 rsync 传上去:rsync -avz ./site/ root@新机IP:/var/www/site/。数据库在新机执行 mysql -uroot -p 库名 < dump.sql 完成导入。注意配置文件里的数据库地址、账号、密码要跟老环境核对,不能照抄。库大的话,导入前先建库并指定字符集:CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4; 再导,免得默认字符集对不上。
配置与解析
nginx 的 server 块配好 root 和伪静态,多数程序的 rewrite 规则官方包里有现成模板。域名解析加一条 A 记录指向新 IP,TTL 先调到 300,方便随时回退。
验证与收尾
浏览器把站点过一遍,重点看上传功能和伪静态页面。再补两个小检查:curl -I 看响应头确认已经走新机;后台登录、图片上传、表单提交各做一次,这几个交互动作最容易暴露权限和路径问题。常见报错两个:页面 404 多半是伪静态没生效;图片裂图是目录权限问题,chown -R www-data:www-data /var/www/site 解决。
老站保留两周再注销,观察期平安度过,这次迁移才算真正结束。