织梦网站迁移服务器步骤
服务器迁移是织梦运维中的高风险操作,涉及文件、数据库、配置、域名解析多个环节。任何一个步骤遗漏都可能导致迁移后白屏、数据库连接失败、图片 404、生成静态异常。下面是一套经过实战验证的迁移流程,可最大限度降低风险。
一、迁移前的准备
1. 信息盘点
- 当前织梦版本:
cat /include/common.inc.php | grep cfg_version; - PHP 版本与扩展:新服务器 PHP 版本必须与原服务器兼容(建议同为 7.4 或 8.0);
- 数据库版本与字符集:
SHOW VARIABLES LIKE 'character_set%';; - 域名与 SSL 证书到期时间。
2. 新服务器环境准备
- 安装相同或兼容版本的 PHP、MySQL、nginx;
- 创建站点目录
/www/wwwroot/dede/; - 创建数据库
dedecms,字符集utf8mb4; - 创建数据库用户并授权。
3. 选择低峰期
迁移会暂停写入,建议选在凌晨或周末低峰期,并在站点公告维护时间。
二、第一步:备份源站
# 文件备份
cd /www/wwwroot
tar -czf dede_full_$(date +%F).tar.gz dede/
# 数据库备份
mysqldump -u root -p --single-transaction --default-character-set=utf8mb4 \
dedecms | gzip > dedecms_$(date +%F).sql.gz
# nginx 配置备份
cp /etc/nginx/conf.d/dede.conf /root/dede_nginx.conf.bak
三、第二步:传输到新服务器
# 通过 rsync 传输(推荐)
rsync -avzP --progress /www/wwwroot/dede_full_$(date +%F).tar.gz \
newuser@new-server:/tmp/
rsync -avzP dedecms_$(date +%F).sql.gz \
newuser@new-server:/tmp/
四、第三步:新服务器部署文件
cd /www/wwwroot
tar -xzf /tmp/dede_full_$(date +%F).tar.gz
chown -R www:www dede/
find dede -type d -exec chmod 755 {} \;
find dede -type f -exec chmod 644 {} \;
# 写权限目录
chmod -R 775 dede/uploads/ dede/data/cache/ dede/data/sessions/ dede/data/backupdata/ dede/a/
五、第四步:导入数据库
# 创建数据库
mysql -u root -p -e "CREATE DATABASE dedecms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 创建用户并授权
mysql -u root -p -e "CREATE USER 'dedeuser'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON dedecms.* TO 'dedeuser'@'localhost';
FLUSH PRIVILEGES;"
# 导入数据
gunzip < /tmp/dedecms_$(date +%F).sql.gz | mysql -u dedeuser -p dedecms
六、第五步:修改数据库连接配置
编辑 /www/wwwroot/dede/data/common.inc.php:
<?php
// 数据库连接信息
$cfg_dbhost='localhost';
$cfg_dbname='dedecms';
$cfg_dbuser='dedeuser';
$cfg_dbpwd='strong_password';
$cfg_dbprefix='dede_';
$cfg_db_language='utf8mb4';
?>
七、第六步:修改站点配置
1. 修改域名与路径
登录数据库更新 dede_sysconfig:
-- 站点根网址
UPDATE dede_sysconfig SET value='https://www.example.com' WHERE varname='cfg_basehost';
-- 站点根目录
UPDATE dede_sysconfig SET value='/' WHERE varname='cfg_cmspath';
-- 文档保存目录
UPDATE dede_sysconfig SET value='/a' WHERE varname='cfg_arcdir';
2. 修改 data 目录路径
若新服务器 data 目录路径与原服务器不同,需修改 /include/common.inc.php:
define('DEDEDATA', '/www/wwwroot/dede/data/');
3. 清空缓存
cd /www/wwwroot/dede/data
rm -rf cache/* sessions/* tplcache/*
迁移后必须清空缓存目录,否则旧路径的缓存会导致前台白屏或样式错乱。
八、第七步:配置 nginx
server {
listen 80;
server_name www.example.com;
root /www/wwwroot/dede;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 安全加固
location ^~ /data/ { deny all; return 404; }
location ^~ /include/ { deny all; return 404; }
location ^~ /templets/ { deny all; return 404; }
location ^~ /install/ { deny all; return 404; }
location ~* /uploads/.*\.(php|phtml)$ { deny all; return 404; }
}
九、第八步:本地验证
修改本地 hosts 把域名指向新服务器 IP,验证:
- 首页、栏目页、文章页正常打开;
- 图片、CSS、JS 加载正常;
- 后台可登录,可生成 HTML;
- 采集、上传、评论等模块正常;
- 验证码能正常显示。
十、第九步:切换域名解析
- 原服务器设为只读,停止写入;
- 同步最新增量数据到新服务器;
- DNS 解析切换到新服务器 IP;
- TTL 设置为 300 秒,加速全球生效;
- 观察 24 小时,确认无异常后下线原服务器。
十一、注意事项
- PHP 版本差异是迁移失败高发原因,7.x → 8.x 可能导致老插件不兼容;
- 数据库字符集必须一致,utf8 与 utf8mb4 混用会导致中文乱码;
- 静态化目录
/a/若未迁移,需重新生成全站 HTML; - SSL 证书需重新部署,或从原服务器导出
.pfx后导入; - CDN 回源 IP 需更新为新服务器 IP。
织梦站点迁移看似复杂,但拆解为"备份—传输—部署—配置—验证—切换"六步后并不难。关键是把每步都验证到位,尤其是缓存清理、数据库连接、域名配置三个最易出错的环节。建议迁移前先在新服务器跑通完整流程,再选择低峰期切换解析。完成后保留原服务器 7 天作为回滚保障,确认无异常再正式下线。