如何在不先删除 drupal 模块的情况下更新它?
How do I update a drupal module without deleting it first?
如何将新版本的模块上传到我的站点?如果我通过管理页面选择 "Install new module",我会收到一条消息,指出该模块已安装。我发现了两种变通方法,但其中 none 看起来很理想,而且是您应该采用的方法。
我可以先删除旧模块,再上传安装新版本。但是,如果模块有与之关联的数据,那么这些数据将会丢失。
我可以替换服务器上的模块文件。这似乎不是一个干净的方法,我宁愿遵循更标准的流程,如果有的话。
那么最好的方法是什么?
谢谢!
- 备份...以防万一。
- 将您的网站置于维护模式。
- 用更新的版本覆盖你的模块文件(先删除旧的模块文件)
- 运行 /update.php 来自浏览器或来自控制台 运行
drush updb
如果您安装了 drush(如果有任何类似的东西,则进行数据库更改)。
- 再次将您的站点置于 "normal" 模式...检查是否一切正常。
MilanG在第3步的回答不正确。你没有覆盖,你需要删除现有的模块文件,然后将新的模块文件放在它的位置。这是因为新模块版本可能包含已删除的文件,有时如果这些文件未删除,您就会遇到问题。
所以...
备份(drush 站点存档)
将站点置于维护模式(drush vset maintenance_mode 0)
- 完全删除旧模块的目录 (rm -fr path/to/modulename)
- 下载最新版本的模块(drush dl 模块名)
- 运行 update.php (drush -y updb)
- 关闭维护模式(drush vset maintenance_mode 1)
使用 drush 只需编写包装器脚本并 运行 按模块编写就非常容易,这样您就可以执行 "drush update-module modulename" 和其他步骤。
如何将新版本的模块上传到我的站点?如果我通过管理页面选择 "Install new module",我会收到一条消息,指出该模块已安装。我发现了两种变通方法,但其中 none 看起来很理想,而且是您应该采用的方法。
我可以先删除旧模块,再上传安装新版本。但是,如果模块有与之关联的数据,那么这些数据将会丢失。
我可以替换服务器上的模块文件。这似乎不是一个干净的方法,我宁愿遵循更标准的流程,如果有的话。
那么最好的方法是什么?
谢谢!
- 备份...以防万一。
- 将您的网站置于维护模式。
- 用更新的版本覆盖你的模块文件(先删除旧的模块文件)
- 运行 /update.php 来自浏览器或来自控制台 运行
drush updb
如果您安装了 drush(如果有任何类似的东西,则进行数据库更改)。 - 再次将您的站点置于 "normal" 模式...检查是否一切正常。
MilanG在第3步的回答不正确。你没有覆盖,你需要删除现有的模块文件,然后将新的模块文件放在它的位置。这是因为新模块版本可能包含已删除的文件,有时如果这些文件未删除,您就会遇到问题。
所以...
备份(drush 站点存档)
将站点置于维护模式(drush vset maintenance_mode 0)
- 完全删除旧模块的目录 (rm -fr path/to/modulename)
- 下载最新版本的模块(drush dl 模块名)
- 运行 update.php (drush -y updb)
- 关闭维护模式(drush vset maintenance_mode 1)
使用 drush 只需编写包装器脚本并 运行 按模块编写就非常容易,这样您就可以执行 "drush update-module modulename" 和其他步骤。