如何做网站搬家图解步骤
不做代码小白也能搞定网站搬家完整流程图解
很多老板想换个更稳的服务器,或者换个域名让品牌听起来更高级,但一想到要“搬家”,心里就发虚。担心不懂代码搞砸了,怕数据丢了客户找上门,更怕折腾半天网站打不开,生意停摆。其实,网站搬家没你想的那么玄乎,哪怕你一行代码都写不出来,只要跟着这套完整流程走,像搬家具一样,按步骤把东西从旧箱子搬到新箱子,就能稳稳当当落地。
今天咱们不聊高深的理论,就聊聊实操。我是做网站运维十年的,经手过上百个搬家案例,见过太多因为少了一步验证而导致的域名解析失败。这篇干货,我把最核心的坑都填平了,你只需要照做。
搬家前:别急着动手,先看清“家底”
在开始任何操作之前,先泼一盆冷水:不要直接断开旧服务器。这是新手最容易犯的错误,觉得“反正我数据拷出来了,旧的关掉没事”。错!只要你的网站还挂在旧服务器上,旧服务器就是你的“备胎”,也是你的“后悔药”。
1. 确认新环境是否“干净” 新服务器买回来,第一件事不是传文件,是检查环境。很多老板买的是“纯净系统”,但里面可能预装了一些奇怪的软件,或者PHP版本不对。
- Linux系统:检查Nginx/Apache是否安装,PHP版本是否匹配(比如旧站是PHP 7.4,新站也得是7.4,不然直接报错)。
- Windows系统:检查IIS版本,以及.NET框架版本。
- 测试连通性:在浏览器输入新服务器的IP地址,看看能不能打开默认的欢迎页。如果打不开,说明防火墙没开,或者Web服务没启动。这时候去问你的服务商技术支持,别自己瞎改端口,越改越乱。
2. 备份,备份,再备份 这是老生常谈,但也是最致命的环节。
- 数据库备份:登录宝塔面板(国内最流行的运维面板),进入数据库,点击“备份”。导出
.sql文件。注意,不要只备份当天的,最好备份最近三天的。 - 文件备份:打包网站根目录的所有文件。注意隐藏文件(Linux下以
.开头的文件)也要打包,很多配置文件藏在里面。 - 异地存储:备份文件不要只留在旧服务器本地。下载到你自己的电脑硬盘,或者上传到一个临时的网盘/OSS存储。万一旧服务器到期被释放,或者硬盘坏了,你手里有这份备份,命就保住了。
3. 检查域名与SSL证书状态 域名是谁的?是在新服务商手里,还是还在旧服务商那里?
- 如果域名在旧服务商,现在不用转,只需要改解析。
- 如果域名要转到新服务商,千万别急着转。域名转移通常需要5-7天,期间解析可能失效。建议先在新环境把网站跑通,等万无一失时,再改域名解析。
- SSL证书:检查证书有效期。如果证书快过期了,趁搬家的时候重新申请一个免费的Let's Encrypt证书,或者买一个新的。证书是绑定域名的,域名没变,旧证书理论上还能用,但最好在新服务器重新部署一下,确保证书文件存在且路径正确。
第一步:新环境搭建与文件传输
环境搭好了,文件备好了,接下来就是“搬砖”。这里分两种情况:你是用宝塔面板,还是用命令行。
方案A:使用宝塔面板(推荐小白使用) 宝塔面板可视化的操作,大大降低了出错率。
- 创建站点:登录新服务器的宝塔面板,点击“网站” -> “添加站点”。
- 域名填你的主域名(比如
www.yourdomain.com)。 - 根目录建议新建一个文件夹,比如
/www/wwwroot/yourdomain.com。 - PHP版本选择与旧站一致的版本。
- 数据库:先不创建,或者创建一个空的,稍后导入。
- 域名填你的主域名(比如
- 上传文件:
- 方法一:直接在新面板的“文件”菜单里,上传你之前打包好的
.zip或.tar.gz文件,解压到站点根目录。 - 方法二:使用FTP工具(如FileZilla)连接新服务器,把本地备份的文件传上去。注意,FTP连接时,用户名密码是新服务器的,端口默认21。
- 关键点:解压后,检查文件权限。Linux下,网站目录的权限通常要是
www用户可读可写。如果上传后发现图片打不开、后台无法登录,90%是因为权限问题。在宝塔面板里,对站点目录执行“授权”,选择www。
- 方法一:直接在新面板的“文件”菜单里,上传你之前打包好的
方案B:使用命令行(适合有基础运维人员) 如果你习惯用SSH终端,效率会更高。
# 1. 安装依赖(以CentOS为例,Ubuntu需换成apt)
yum install -y nginx php-fpm php-mysql php-gd php-xml# 2. 创建网站目录
mkdir -p /var/www/html/yourdomain.com# 3. 传输文件(假设你在本地用scp命令)
# 在本地终端执行:
scp -r ./backup_files/ root@new_server_ip:/var/www/html/yourdomain.com/# 4. 设置权限
chown -R www-data:www-data /var/www/html/yourdomain.com
chmod -R 755 /var/www/html/yourdomain.com# 5. 配置Nginx
# 编辑 /etc/nginx/conf.d/yourdomain.com.conf
Nginx配置文件示例:
server {listen 80;server_name yourdomain.com www.yourdomain.com;root /var/www/html/yourdomain.com;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
修改完配置后,重载Nginx:nginx -t && nginx -s reload。
第二步:数据库导入与配置修改
文件传完了,网站还是个“空壳”,因为数据在数据库里。
1. 创建数据库 在新服务器的数据库管理工具(phpMyAdmin或宝塔面板数据库菜单)里,创建一个新数据库。
- 数据库名:建议与旧站一致,或者随意起,但一定要记住。
- 用户名/密码:建议重新生成一套,不要沿用旧密码,安全第一。
- 字符集:极其重要! 必须选
utf8mb4。如果选错了,中文会变成乱码,而且很难修复。
2. 导入SQL文件
- 宝塔用户:进入新创建的数据库 -> “导入” -> 选择你之前备份的
.sql文件 -> 确定。 - 命令行用户:
如果文件很大,导入时间可能较长,耐心等进度条跑完。mysql -u root -p your_new_db_name < /path/to/your_backup.sql
3. 修改配置文件(核心步骤)
这是最容易出bug的地方。网站代码里通常有一个配置文件(比如WordPress是 wp-config.php,ThinkPHP是 .env),里面写着数据库的连接信息。
- 找到旧站备份里的这个文件。
- 打开它,修改三个值:
DB_HOST:改为127.0.0.1(如果数据库在本地)或新数据库服务器的IP。DB_NAME:改为新数据库的名字。DB_USER和DB_PASS:改为新数据库的用户名和密码。
- 保存并上传:把这个改好的文件覆盖到新服务器对应目录。
4. 检查伪静态规则 很多CMS系统(如WordPress、织梦、帝国)依赖伪静态规则(Rewrite Rules)。
- 如果是Apache,检查
.htaccess文件是否存在且内容正确。 - 如果是Nginx,检查
nginx.conf里的rewrite规则是否匹配你的CMS。 - 测试:在浏览器输入
http://新服务器IP/某篇文章的URL。如果直接显示404,说明伪静态没生效。这时候去搜一下你用的CMS对应的Nginx伪静态规则,复制进去。
第三步:域名解析切换与验证
现在,新服务器上的网站已经能跑了(通过IP可以访问),接下来就是把“路牌”指过来。
1. 修改DNS解析 登录你的域名注册商后台(比如阿里云、腾讯云、GoDaddy)。
- 找到
A记录,主机记录通常是@(主域名)和www。 - 把原来的旧服务器IP,改成新服务器IP。
- TTL值:如果之前TTL是600秒或更高,建议提前一天改成60秒,这样解析生效更快。如果你没提前改,那就要等待原来的TTL过期(通常24-48小时,实际可能几分钟到几小时不等)。
2. 监控生效情况 修改完解析,不要立马关旧服务器!
- 使用在线工具(如
ping.chinaz.com或dnschecker.org)查询你的域名。 - 观察全球各地的节点是否都指向了新IP。
- 在国内,通常主要看电信、联通、移动的节点。如果这三个运营商都解析到了新IP,基本就稳了。
3. 浏览器测试
- 强制刷新浏览器(Ctrl+F5),清除缓存。
- 访问
http://yourdomain.com和https://yourdomain.com。 - 检查SSL:如果是HTTPS,点击锁头图标,看证书是否有效。如果提示不安全,检查新服务器是否安装了证书,以及Nginx/Apache是否配置了
ssl_certificate路径。
4. Google Search Console 验证 对于外贸站或重视SEO的站点,这一步不能省。
- 登录 Google Search Console (GSC)。
- 添加新站点(如果域名没变,通常不需要重新添加,但建议检查索引状态)。
- 提交站点地图(Sitemap):
/sitemap.xml。 - 在GSC中查看“覆盖率”报告,确保没有大规模的“已删除”或“服务器错误”。如果搬家后短期内流量下滑,多半是GSC还没重新抓取新服务器,提交Sitemap可以加速这个过程。
常见问题与急救包
Q1:搬家后图片全是404?
原因:文件路径不对,或者文件没传全。
对策:检查 .htaccess 或 Nginx 配置中的 root 路径是否指向了正确的文件夹。用FTP工具对比新旧服务器文件列表,看是否有缺失。特别是图片目录,有时候会被防火墙拦截,检查服务器安全组是否放行了80/443端口。
Q2:后台能登录,但前台打不开,或者显示数据库错误?
原因:数据库配置没改对,或者数据库没启动。
对策:查看网站错误日志(Linux在 /var/log/nginx/error.log 或 /var/log/php-fpm/error.log)。错误信息通常会明确提示“Access denied for user”或“Unknown database”。根据提示修正 config.php 或 .env 文件。
Q3:移动端显示错位? 原因:CSS文件加载失败,或者CDN缓存了旧样式。 对策:如果用了CDN,记得在CDN后台刷新缓存。如果是本地文件,检查CSS文件是否上传成功,权限是否可读。
Q4:SEO流量掉了怎么办? 原因:搬家期间网站不可用,导致搜索引擎爬虫抓取失败。 对策:这是正常的短期波动。确保新服务器稳定运行后,持续提交Sitemap。如果流量长期不恢复,检查是否有301重定向配置错误。确保旧域名(如果有变更)正确301跳转到新域名。
优化建议:让新站飞起来
搬家不只是“活着”,还要“活得更好”。
1. 开启全站HTTPS 现在搜索引擎(包括Google和百度)都把HTTPS作为排名因素之一。确保新服务器部署了SSL证书,并在Nginx/Apache配置中强制HTTP跳转HTTPS。
# Nginx 强制跳转示例
server {listen 80;server_name yourdomain.com;return 301 https://$host$request_uri;
}
2. 配置Gzip压缩 压缩HTML、CSS、JS文件,能显著提升加载速度。
- Nginx:在
http块中添加gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - Apache:启用
mod_deflate模块并配置AddOutputFilterByType DEFLATE。
3. 设置浏览器缓存 对于静态资源(图片、CSS、JS),设置较长的缓存时间(如1个月)。这样用户第二次访问时,不需要重新下载这些文件,速度飞快。
4. 监控与报警 不要等用户投诉才发现问题。
- 使用UptimeRobot或Pingdom等服务,设置每5分钟监控一次网站可用性。
- 一旦网站宕机,通过邮件或短信通知你。
- 在服务器安装
fail2ban,防止暴力破解SSH或FTP密码。
结尾:你踩过哪些建站的坑?
网站搬家,看似简单,实则步步惊心。它考验的不是你的编程能力,而是你的细心程度和备份习惯。记住,没有备份的搬家,就是在裸奔。
我在十年运维生涯中,见过太多老板因为“省事”跳过备份步骤,结果数据丢失,几个月的心血白费。也见过有人因为没检查字符集,导致整个网站的中文变成问号,花了三天才修复。
这些坑,我帮你填平了。但你的项目可能有特殊性,比如用了特殊的插件,或者数据库结构很复杂。
你在建站或运维过程中,踩过哪些让你“头秃”的坑?是域名解析不生效,还是服务器被黑,亦或是代码兼容性问题?欢迎在评论区留言交流,咱们互相支招,少走弯路。
