阿里云服务器迁移网站的核心步骤包括备份旧站数据、创建并配置新实例、迁移网站文件与数据库、修改配置和权限、测试后切换域名解析。
备份原服务器数据
迁移前必须对原服务器做完整备份,避免数据丢失,网站文件通常位于/var/www、/home/wwwroot或宝塔面板的/www/wwwroot目录,使用tar命令打包压缩,例如将/var/www/html目录压缩为website_backup.tar.gz,压缩时应排除缓存目录和日志目录,以减少体积,数据库备份使用mysqldump,建议添加--single-transaction参数保证InnoDB表一致性,命令示例为mysqldump -u root -p --single-transaction database_name > db_backup.sql,备份完成后,用ls -lh查看文件大小,确认没有异常,随后将备份文件下载至本地,或通过scp命令直接传输到新服务器,如果网站数据量较大,可以使用rsync进行增量同步,命令为rsync -avzP /var/www/html/ root@新IP:/var/www/html/,这样可避免重复传输。

创建并配置阿里云ECS实例
登录阿里云控制台,进入ECS产品页面,点击“创建实例”,在创建页面中依次选择地域和可用区,建议选择与目标用户群体距离较近的地域,实例规格根据网站访问量选择,一般个人网站或中小企业站选择2核4G或4核8G即可,镜像建议选择与旧服务器相同的操作系统和版本,例如CentOS 7.9、Alibaba Cloud Linux 3或Ubuntu 22.04,这样可以减少环境兼容问题,系统盘容量应大于原服务器已用空间,并预留至少20%余量,网络类型选择专有网络VPC,分配公网IP地址,登录凭证可以选择密码或密钥对,密钥对安全性更好,确认订单后实例开始创建,通常几分钟内完成,创建完成后记录实例的公网IP和内网IP,后续步骤会用到。
配置安全组和防火墙
新创建的ECS实例默认安全组可能只放行22端口,需要手动添加规则,在控制台的安全组页面,添加入方向规则:放行TCP 80端口用于HTTP访问,放行TCP 443端口用于HTTPS访问,放行TCP 22端口用于SSH远程管理,如果网站后台需要访问数据库,不要直接放行3306公网端口,应仅对特定IP或内网开放,避免数据库暴露公网,除安全组外,还需要检查系统内部的防火墙,例如CentOS的firewalld或Ubuntu的ufw,如果有开启,添加对应端口放行命令,或者暂时关闭防火墙进行测试,安全组和防火墙配置完成后,可以使用telnet 新IP 80或curl -I http://新IP初步验证端口是否通。
安装基础运行环境
通过SSH工具登录新服务器,第一条命令建议更新系统软件源,例如yum update -y或apt update && apt upgrade -y,然后安装网站运行所需的环境,以常见的LNMP环境为例,需要安装Nginx、MySQL或MariaDB、PHP及常用扩展,如果是CentOS系统,可以使用yum install -y nginx mysql-server php-fpm php-mysql php-gd php-xml php-mbstring,安装完成后启动服务并设置开机自启:systemctl start nginx、systemctl enable nginx,MySQL和PHP-FPM同理,如果希望更简单地管理网站,可以安装宝塔面板,执行官方安装脚本后,在面板中一键创建网站、数据库和SSL证书,无论哪种方式,都要确保PHP版本与原网站兼容,尤其是老网站可能依赖PHP 5.6或7.4,需要额外安装对应版本。
迁移网站文件
将备份的网站压缩包上传到新服务器,如果备份文件在本地,可以使用SFTP工具或scp命令上传;如果已从旧服务器直接传输,则检查文件完整性,在新服务器上进入目标目录,例如/var/www/html,执行tar -xzvf /root/website_backup.tar.gz -C /var/www/html解压,解压后核对文件数量、目录层级是否与原服务器一致,特别是隐藏文件如.htaccess是否解压成功,接着修改网站文件的所有者和权限,Nginx和PHP-FPM通常以www或nginx用户运行,执行chown -R www:www /var/www/html,权限设置为chmod -R 755 /var/www/html,对于需要写入的目录如runtime、uploads、cache,权限设置为775或777,如果网站使用Apache,还需要确保.htaccess文件被保留且AllowOverride开启。
迁移数据库
将导出的SQL文件上传到新服务器,然后在MySQL中创建与旧库同名的数据库和数据库用户,登录MySQL:mysql -u root -p,执行创建命令,创建完成后退出MySQL,使用mysql -u root -p database_name < /root/db_backup.sql导入数据,导入大文件时可能超时,可以在my.cnf中调大max_allowed_packet和innodb_buffer_pool_size,或者使用source /root/db_backup.sql在MySQL交互模式中导入,导入完成后,登录MySQL,使用SHOW TABLES;和SELECT COUNT(*) FROM table_name;检查数据是否完整,如果原数据库使用UTF-8编码,需确认新数据库字符集为utf8mb4,避免中文乱码,同时创建数据库用户时,注意授予权限的host要与网站连接方式匹配,如果网站通过本地连接,使用localhost;如果远程连接,使用对应IP或。
修改网站配置和参数
网站文件和数据库就位后,需要修改网站根目录下的配置文件,将数据库主机、数据库名、用户名、密码更新为新服务器的信息,以WordPress为例,编辑wp-config.php中的DB_HOST、DB_NAME、DB_USER、DB_PASSWORD,其他程序如Discuz、ThinkPHP、Laravel等,配置位置不同,但核心都是数据库连接信息,同时检查配置文件中是否存在绝对路径,例如旧服务器的目录路径,如果有需要改为新服务器路径,对于Nginx站点配置,需要在/etc/nginx/conf.d/或/etc/nginx/sites-available/中创建或修改站点配置文件,设置server_name为当前域名或IP,root指向网站目录,并配置PHP处理规则,修改后执行nginx -t测试配置语法,通过后systemctl reload nginx重载配置。
配置SSL证书
如果原网站启用了HTTPS,需要为域名配置SSL证书,可以选择从旧服务器复制证书文件,或在新服务器重新申请证书,使用Let's Encrypt免费证书时,可以安装certbot工具,执行certbot --nginx -d yourdomain.com自动获取证书并配置Nginx,如果使用阿里云SSL证书服务,可以在控制台下载证书文件,上传到服务器指定目录,并在Nginx配置中指定ssl_certificate和ssl_certificate_key路径,配置完成后,使用curl -I https://yourdomain.com验证证书是否生效,并检查证书有效期。
测试网站
在正式切换域名解析之前,必须先进行测试,可以在本地电脑的hosts文件中添加一行:新服务器IP 你的域名,保存后通过浏览器访问域名,此时流量会指向新服务器而不会影响线上用户,测试内容包括:首页是否正常打开、静态资源加载是否完整、内页访问、用户登录注册、数据库读写、文件上传、搜索功能、邮件发送等,同时查看Nginx和PHP错误日志,路径一般为/var/log/nginx/error.log和/var/log/php-fpm/error.log,根据日志定位并修复问题,如果出现权限错误,检查目录所有者和SELinux状态;如果出现数据库连接错误,检查配置文件和数据库用户权限;如果出现404错误,检查伪静态规则是否生效。
切换域名解析
测试确认功能正常后,登录域名DNS管理平台,修改A记录将域名指向新服务器公网IP,如果网站使用CDN或负载均衡,修改回源地址为新服务器IP,修改前可以先将TTL值调低到600秒或300秒,这样解析变更生效更快,修改后使用ping或nslookup命令检查域名解析是否已经更新到新IP,解析生效期间,旧服务器暂时继续运行,并在两边同步数据,防止有用户因为DNS缓存仍访问旧服务器,可以观察一段时间后,确认旧服务器没有访问日志增长,再停止旧服务器。
十一、增量同步和收尾
切换解析后,如果旧服务器仍有少量新数据产生,需要执行最后一次增量同步,使用rsync同步网站文件,使用mysqldump导出旧数据库并导入新数据库,或者使用数据库主从同步工具,确认数据一致后,关闭旧服务器上的Web服务和数据库服务,避免继续产生数据,然后在新服务器上配置阿里云快照策略,定期对系统盘和数据盘创建快照,以便快速恢复,删除新服务器上的临时备份文件和安装包,清理系统日志,最后在阿里云控制台设置监控告警,当CPU、内存、磁盘使用率超过阈值时及时通知。