(译注:这篇文章主要还是针对于非专业人员及个人Drupal站长,对于专业的 Drupal 团队和公司而言 Drupal 的升级更新都有规范的操作流程,完全是家常便饭,不可能出现文中出现的这些情况。尽管如此,里面也还是有一些内容值得大家了解。)

  有时我希望Drupal的升级和维护能够像Wordpress那样简单就好了,轻轻一点,Wordpress就能够在不影响其运行的情况下完成自身以及所有插件的更新。Drupal则完全不一样,稍有不慎你就会把你的网站搞瘫。

  Drupal 之所以这么难搞是因为它的很多模块都需要依赖于其它模块才可以正常运行,这正是它得以模块化、灵活以及便于集成的优点,但这同时也是一件坏事,因为你必须对所有这些关系有所了解,才能在升级出现问题时进行排查。

  许多 Drupal 站点的管理者,并不了解蕴藏在 Drupal 表面之下的事物是怎样结合和运作的。所以当他们看到“你有可用的安全更新”时,便觉得有必要试试进行更新——“嘿,我可以更新Windows,更新一下Drupal能有多难?”——如果你不是Drupal工程师、建站人员或者任何了解站点构造的人,建议你还是寻求专业人事的帮助和支持。

使用Drupal内置更新功能进行更新?

  使用Drupal内置的更新机制进行更新是我们所知道的最常见错误。尽管表面上它看起来即简单又好用,但问题是如果一旦出错,你便无法回头了——Drupal崩溃后你便不再能够进入网站进行操作,即使有备份,也不能通过 Backup & Migrate 模块进行恢复。

导致Drupal崩溃或失败的常见原因有以下一些:

  • 下载内核或模块更新出错

  • 网络连接断开中断更新进程

  • 更新版本与其它模块不兼容

  • 更新版本与服务器上其它组件不兼容,如当前使用PHP版本

  • FTP出错

  • 文件系统出错(如权限出错)

  很多用户都是线上的网站直接进行操作,这样做最坏的情况是网站出错而不能用了,你的用户和客户会因此流失。如果网站下线时间过长,也可以同 Google 和百度说拜拜了。

使用FTP对Drupal进行更新?

  如果你比较精明,使用 FTP 对 Drupal 进行更新或升级,相对而言会安全很多,但也不是绝对安全。如果你对Drupal的目录结构不够了解,则很可能将文件上传到错误的目录、覆盖错误的文件,或者漏掉 .htaccess 这样的隐藏文件。

  曾经有一次,一个客户将同一个模块上传到3个不同的目录并疑惑网站为什么运行得那么慢。他并不知道,Drupal尝试3次加载那个模块并导致内存泄漏。所以最好知道东西应该放在哪里,否则很可能会出问题。

  使用FTP进行更新的另一个问题是,你依然是将更新模块上传到你的线上站点,不论是模块或PHP不兼容,都可能导致出错而让站点下线。除非你重新恢复之前的文件或者找到问题的解决办法。(译注:如果升级之后还运行了数据库更新,恢复文件可能也不能解决问题)

应该怎样正确地进行升级?

  首先,永远永远永远不要在线上站点直接进行内核或模块升级,永远不要。专业的Drupal团队会使用模拟服务器(或称开发服务器、测试服务器)对你的网站更新进行测试和调试,从而确认是否所有的更新都是无害且不会导致网站损坏。这样,可以在不影响线上网站正常运行的情况下对问题、错误进行处理和修复,尽量保证用户、客户、Google和百度不会因为网站升级出错而离你而去了。

  同时,使用 Git 对所有更新进行版本控制,以便确保当升级出现问题时,可以更方便地查找问题和进行恢复。

  一旦所有更新都确认OK,便可以放心的将它们上传到线上服务器。更新时使用 Rsync 或 Git,尽量不要使用FTP,前者会更快速、更智能。

写在最后

  当Drupal更新发布后,应该至少在一个月内进行更新,如果更新涉及安全问题,则更新周期还应该更短。(译注:如果是安全更新,应该尽快进行。如果非安全更新,不必操之过急

  虽然很可能平时 Drupal 网站的日常维护都是由你们自己负责,但需要对 Drupal 进行升级更新、或者网站出现问题、需要服务或技术支持时,还是应该将将其交由专业人士处理。这样会节省你的时间和减少头痛,并让你可以将精力集中你的公司业务而非网站上。

原文标题:为什么你不应该自行更新 Drupal 网站?

原文地址:http://drupalct.org/drupal-update/why-you-should-not-update-drupal-yourself.html

转载于:https://blog.51cto.com/11159747/1738318

为什么你不应该自行更新 Drupal 网站?相关推荐

  1. 这些优化 Drupal 网站速度的超简单办法,你忽略了多少?

    2019独角兽企业重金招聘Python工程师标准>>> "怎么样能让我的 Drupal 网站更快一些?"是我们最常遇到的一个问题.站点速度确实非常重要,因为它会影 ...

  2. 基于ECS部署LAMP环境搭建Drupal网站,云计算技术与应用报告

    实验环境: 建站环境:Windows操作系统,基于ECS部署LAMP环境,阿里云资源, Web服务器:Apache,关联的数据库:MySQ PHP:Drupal 8 要求的PHP版本為7.0.33的版 ...

  3. ahri8.php,松鼠症仓库自行更新规则后无法获取正确的title

    网址地址:[跳转页面]https://512539700c.top/dnew.php 或[原域名]https://ahri8.online/index.php 该网站的漫画标题用控制台可正常查看,但在 ...

  4. Drupal网站系统的应用

    Drupal网站管理系统 http://www.intematrix.cn/book/export/html/74 Drupal,全球最流行的开源网站的内容管理(CMS)和发布系统,它是用PHP写成的 ...

  5. 网络推广软文之文章更新对网站排名的影响!

    众所周知,网络推广软文的网站的流量和权重都是有着较为重要的作用的,尤其是网站内容优化也是一个很老生常谈的问题了,那么对于网站文章的更新对网站排名会有什么影响呢?下面网络推广软文就带大家一起来了解一下. ...

  6. CentOS6.2安装LAMP+DRUPAL网站(2)

    2安装drupal 前提:已经安装好mysql.php.apache2. 2.1安装pdo_mysql 到原始安装包目录: cd /usr/local/src/php-5.4.0/ext/pdo_my ...

  7. Drupal 网站漏洞修复以及网站安全防护加固方法

    2019独角兽企业重金招聘Python工程师标准>>> drupal是目前网站系统使用较多一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置,drupal的代 ...

  8. bing 怎么搜索关键词_Bing更新了网站站长指南,以包含关键字填充

    bing 怎么搜索关键词 While most people will wonder why the Bing team added something quite obvious to their ...

  9. 如何利用svn自动同步更新到网站服务器

    我们最终的目的是:当本地提交后,SVN服务器自动更新服务器端指定WEB目录内的文件 实现方法: 找到服务器端SVN版本库所在的目录(目录名称是Repositories),这个目录是在安装VisualS ...

最新文章

  1. Android线程池简单使用
  2. Oracle10g安装中遇到的错误及解决办法
  3. TensorFlow 2.0新特性解读,Keras API成核心
  4. Java Web 编程入门知识
  5. SQL中Case和convert()
  6. mysql中实现over partiton by,进行分组排序取topN
  7. ROS下获取kinectv2相机的仿照TUM数据集格式的彩色图和深度图
  8. Teradata Fastload 使用方法
  9. 哈佛大学刘小乐教授讲授的计算生物学和生物信息学导论 (2020 视频+资料)
  10. java字符串定义_java字符串基本概念
  11. 百度地图订单分布php,php与百度地图API实现注册用户分布图
  12. Qt中QString、int、char、QByteArray、std::string【八大转换】
  13. 随机课堂、随机提问、随机抽检、随机名单,可去重可重复
  14. BFS算法解题套路框架(附习题)
  15. linux qt 屏幕亮度,调整14.04.1 屏幕亮度
  16. 最小生成树 无根树转有根树 树形动态规划
  17. MYSQL_DQL语言的学习(1)
  18. Android Studio学习#2
  19. mysql error 1534_如何解決mysqlimport: Error: 13, Can”t get stat of 的問題 | 學步園
  20. MT6763 N1 色温模式功能的实现,手动调节色温。

热门文章

  1. Python学习笔记二:布尔表达式
  2. Mantis 缺陷管理系统配置与安装
  3. 在baidu上找到自己
  4. Winson.SqlPager 2.5 发布!
  5. 对比.Net PetShop和Duwamish来探讨Ado.Net的数据库编程模式
  6. Java的JSON操作存储List到Redis
  7. strcpy,memcpy和memmove区别
  8. 使用指针做函数返回值
  9. Ubuntu上通过android toolchain交叉编译Valgrind操作步骤
  10. Google Protocol Buffers介绍