核心迁移原则
- 备份是第一步,也是最重要的一步:在任何操作前,必须完整备份源网站的所有文件和数据库。
- 环境一致性:尽量保证新旧服务器的环境(PHP版本、MySQL版本、服务器软件如Nginx/Apache)一致,这能最大程度减少兼容性问题。
- 文件与数据分离:网站文件(代码、图片、附件)和数据库(网站内容、用户信息)是两部分,需要分别处理。
迁移步骤详解
整个过程可以分为三大阶段:迁移前准备、执行迁移、迁移后配置。
第一阶段:迁移前准备(源服务器操作)
步骤 1:完整备份网站文件
这是最关键的一步,确保你拥有网站所有代码和资源的副本。
- 通过FTP/SFTP连接:使用FileZilla等工具连接到你的源服务器。
- 下载整个网站目录:网站根目录是
public_html、www或htdocs,请将这个目录下的所有文件和文件夹下载到你的本地电脑。- 重点检查:确保
data、uploads、templets、special、a(文章目录)、images(图片目录) 等目录都已完整下载。 - 不要遗漏:
.htaccess(Apache) 或nginx.conf(Nginx) 等配置文件(如果有的话)。
- 重点检查:确保
步骤 2:完整备份数据库
文章、产品、分类、用户、评论等)都存储在数据库中。
- 登录phpMyAdmin:通过你的主机控制面板(如cPanel、Plesk)找到phpMyAdmin工具并登录。
- 选择数据库:在左侧列表中,选中你的DedeCMS数据库名称。
- 执行导出:
- 点击顶部的“导出”选项卡。
- 在“快速”选项卡下,选择“自定义” - 强烈推荐,因为可以确保所有表结构完整。
- 在“格式”中选择“SQL”。
- 确保“创建表”、“添加插入数据”、“自增值”等选项都已勾选。
- 点击“执行”按钮。
- 保存备份文件:浏览器会下载一个
.sql文件,将其保存到本地电脑,并记住文件名(dede_backup.sql)。
第二阶段:执行迁移
步骤 3:上传网站文件到新服务器
- 通过FTP/SFTP连接:使用同样的工具连接到你的新服务器。
- 上传文件:将你在步骤1中下载到本地的所有网站文件,上传到新服务器的网站根目录(同样是
public_html、www或htdocs)。 - 设置文件权限:上传完成后,为了安全,需要设置正确的文件和目录权限。
- 目录权限:通常设置为
755。 - 文件权限:通常设置为
644。 - 关键目录权限:
data、uploads、a、images等需要写入权限的目录,权限可以设置为777(仅在迁移后调试时使用,调试完成后务必改回755),或者更安全的755并确保所有者是Web服务器用户(如www-data,nginx,apache)。 - 重要文件:
data目录下的config_db.php数据库配置文件,权限建议设置为644或600。
- 目录权限:通常设置为
步骤 4:在新服务器上创建数据库和用户
- 登录新服务器的控制面板:找到数据库管理工具(如cPanel的“MySQL数据库”)。
- 创建新数据库:输入一个数据库名称(
dede_new_db),并点击创建。 - 创建新数据库用户:输入一个用户名(
dede_user),设置一个强密码,并点击创建。 - 授权用户:在“向用户添加权限”部分,选择你刚刚创建的数据库和用户,授予“所有权限”,然后点击“添加”。
步骤 5:导入数据库
- 登录新服务器的phpMyAdmin:使用新服务器的控制面板进入phpMyAdmin。
- 选择新数据库:在左侧列表中,选中你在步骤4中创建的新数据库名称。
- 执行导入:
- 点击顶部的“导入”选项卡。
- 点击“选择文件”按钮,选择你在步骤2中下载的
dede_backup.sql文件。 - 点击“执行”按钮,等待导入完成,你会看到成功的提示。
第三阶段:迁移后配置(新服务器操作)
这是最容易出错的地方,需要仔细修改配置文件,让新服务器“认识”新的环境。
步骤 6:修改数据库配置文件
这是连接网站和数据库的桥梁,必须更新。
-
找到文件:通过FTP/SFTP,在新服务器的网站根目录下,找到
data文件夹,里面的config_db.php文件。 -
编辑文件:用文本编辑器(如Notepad++, VS Code)打开这个文件。
-
修改信息:将文件中的数据库信息替换为新服务器的信息:
// $cfg_dbhost = 'localhost'; // 通常是localhost,除非有特殊配置 // $cfg_dbname = '你的旧数据库名'; // $cfg_dbuser = '你的旧数据库用户名'; // $cfg_dbpwd = '你的旧数据库密码'; // 修改为: $cfg_dbhost = 'localhost'; // 保持不变 $cfg_dbname = '你在步骤4创建的新数据库名'; // dede_new_db $cfg_dbuser = '你在步骤4创建的新数据库用户名'; // dede_user $cfg_dbpwd = '你在步骤4设置的新数据库密码'; // 你的新密码
-
保存文件:保存并上传回服务器,覆盖原文件。
步骤 7:修改网站根目录路径(非常重要!)
如果你的新旧服务器的网站根目录路径不同(例如旧的是 /home/user/www,新的是 /var/www/html),这一步必须做,否则网站上的所有图片、附件、链接都会失效。
-
找到文件:在新服务器的网站根目录下,找到
data文件夹,里面的config_base.php文件。 -
编辑文件:用文本编辑器打开它。
-
修改信息:查找并修改
$cfg_cmspath和$cfg_userpath这两个变量:// $cfg_cmspath = '/旧的服务器网站路径'; // $cfg_userpath = '/旧的服务器网站路径'; // 修改为新的路径: $cfg_cmspath = '/新服务器的网站根目录路径'; // /home/newuser/public_html $cfg_userpath = '/新服务器的网站根目录路径'; // 和上面保持一致
-
保存文件:保存并上传回服务器。
步骤 8:更新网站绝对路径
为了确保所有附件、链接都正确,最好再修改一下后台的全局配置。
- 登录DedeCMS后台:访问
你的新域名/dede/,用你的管理员账号登录。 - 进入系统设置:在左侧菜单中,找到“系统” -> “系统基本参数”。
- 修改站点根网址:
- 在“核心设置”里,找到“站点根网址”,确保它指向你的新域名(
http://www.your-new-domain.com)。
- 在“核心设置”里,找到“站点根网址”,确保它指向你的新域名(
- 修改网站根目录:
- 在“核心设置”里,找到“网站根目录”,将它修改为你在步骤7中设置的新路径(
/home/newuser/public_html)。
- 在“核心设置”里,找到“网站根目录”,将它修改为你在步骤7中设置的新路径(
- 保存:点击“保存”按钮。
步骤 9:清空缓存并检查网站
- 清空缓存:登录后台后,在“系统” -> “SQL命令运行工具”中,执行以下SQL语句来清空所有缓存表(如果有的话,或者直接通过FTP删除
/data/cache目录下的所有文件)。TRUNCATE TABLE `dede_arccache`; TRUNCATE TABLE `dede_homecache`; TRUNCATE TABLE `dede_indexcache`;
- 检查网站:
- 在浏览器中访问你的新域名,检查首页是否正常显示。
- 访问几个文章页面、栏目页,检查图片和链接是否正常。
- 尝试发布一篇文章或上传一张图片,看是否成功。
- 尝试登录后台,看是否能正常进入。
常见问题与解决方案
-
问题1:网站首页能打开,但所有图片和CSS/JS样式丢失。
- 原因:
config_base.php中的$cfg_cmspath和$cfg_userpath没有更新为新的服务器路径。 - 解决:重新检查并修改步骤7。
- 原因:
-
问题2:后台登录后,页面空白或显示“您还没有登录”。
- 原因:
data目录权限不正确(无法写入session)。- 数据库配置信息错误(
config_db.php)。 - 服务器开启了
open_basedir限制,导致后台程序无法访问include文件。
- 解决:检查文件权限,确认数据库配置,联系主机商检查
open_basedir设置。
- 原因:
-
问题3:上传的图片/附件无法显示。
- 原因:和问题1类似,路径错误,或者
uploads等目录没有写入权限。 - 解决:检查路径,并确保
uploads、a、images等目录有正确的写入权限(775或755,且所有者正确)。
- 原因:和问题1类似,路径错误,或者
-
问题4:网站打开非常慢或报错。
- 原因:PHP版本不兼容,或者服务器资源不足。
- 解决:联系主机商检查服务器状态,确认PHP版本是否与DedeCMS要求一致。
-
问题5:部分页面(如列表页、分页)内容为空或报错。
- 原因:数据库导入不完整,或者旧站点的数据表在新服务器上出现了字符集问题(如
latin1vsutf8mb4)。 - 解决:重新导入数据库,并在导入前在phpMyAdmin中确保新数据库的字符集是
utf8mb4_unicode_ci。
- 原因:数据库导入不完整,或者旧站点的数据表在新服务器上出现了字符集问题(如
迁移DedeCMS网站,备份和修改配置是两大核心,只要按照以上步骤,耐心细致地操作,绝大多数迁移问题都可以顺利解决,强烈建议在非业务高峰期进行迁移,并保留好源服务器的备份,直到新网站完全稳定运行一段时间后再删除。
