(译注:这篇文章主要还是针对于非专业人员及个人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

为什么你不应该自行更新 Drupal 网站?的更多相关文章

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

    “怎么样能让我的 Drupal 网站更快一些?”是我们最常遇到的一个问题.站点速度确实非常重要,因为它会影响你的 SEO排名效果.访客是否停留以及你自己管理网站所需要的时间. 今天我们就来看看那些通过 ...

  2. Win7-IIS7下运行PHP网站(以配置好的drupal网站为例)

    0.前提:IIS7已启用. drupal网站配置文件web.config中用到了“简洁链接”(URL重写),所以,还需要事先安装URL重写模块. URL重写模块(url rewrite)下载地址: r ...

  3. 如何查看Drupal网站使用的模块

    大家在学习使用Drupal的过程中,总喜欢去查看或借鉴那些做得十分优秀的drupal网站,很想知道这个drupal网站使用了哪些模块?其实很简单,已经有人帮我们实现了这个愿望. 那就是DrupalXr ...

  4. Drupal网站报错:PDOException: in lock_may_be_available()

    Drupal网站报错: 原因: windows中mysql的服务停止了: 解决办法: 在服务中,启动mysql服务 启动后,刷新页面,问题完美解决

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

    drupal是目前网站系统使用较多一个开源PHP管理系统,架构使用的是php环境+mysql数据库的环境配置,drupal的代码开发较为严谨,安全性较高,但是再安全的网站系统,也会出现网站漏洞,dru ...

  6. Drupal网站开发实践系列

    这一系列文章会记录我最近一个项目的开发历程.包括用到的模块,功能的具体实现,调用的API,还有主题的制作,一部分前端信息等. 该网站基于Drupal7+Commerce制作,主题部分基本完全自定义,没 ...

  7. Linux下svn提交文件后自动同步更新到网站目录

    有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkou ...

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

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

  9. centos6.9 svn提交更新到网站根目录

    一.首先创建网站根目录 ~] # mkdir -pv /export/home/cms/www_dyrs ~] # svn co svn://127.0.0.1/svn1 /export/home/c ...

随机推荐

  1. Nexus私服使Maven更加强大

    前边简单介绍了Maven,而Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的.如果我们没网了或者什么情况,我们怎么办?也就是说我们队中央仓库的依赖性太大.而N ...

  2. read,for,case,while,if简单例子

    Read多用于从某文件中取出每行进行处理 $ cat read.sh #!/bin/bash echo "using read" cat name.txt | while read ...

  3. C#属性访问器

    属性的访问器包含与获取或设置属性有关的可执行语句.访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含.声明采用下列形式之一:get {}set {} get 访问器get 访问器体与 ...

  4. C#中abstract和virtual区别

    在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...

  5. Linux 2.6 内核实时性分析 (完善中...)

      经过一个月的学习,目前对linux 下驱动程序的编写有了入门的认识,现在需要着手实践,编写相关的驱动程序. 因为飞控系统对实时性有一定的要求,所以先打算学习linux 2.6 内核的实时性与任务调 ...

  6. CentOs of Tomcat commands

    1.启动tomcat 进入tomcat目录的bin目录下 执行 [root@iZ253lxv4i0Z bin]# ./startup.sh Using CATALINA_BASE: /usr/loca ...

  7. [jQuery]attr和prop的区别

    转自:http://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html 在高版本的jquery引入prop方法后,什么时候 ...

  8. HDU 2717 Catch That Cow(BFS)

    Catch That Cow Farmer John has been informed of the location of a fugitive cow and wants to catch he ...

  9. java中四种引用类型(转)

    今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多, ...

  10. LPC1768之ISP

    一 使用到的芯片内部资源: 1必须是P2.10 2RESET引脚 3必须是串口0 4使用FLASH magic工具. 二操作方法: 先按下reset不放,然后按下ISP,抬起reset,抬起ISP就能 ...