为什么你不应该自行更新 Drupal 网站?
(译注:这篇文章主要还是针对于非专业人员及个人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
相关文章:

用友发布新一代企业智能商旅及费控服务平台
3月31日,“便捷商旅 智能费控—2022用友BIP|商旅及费控服务新品发布会”成功举行。作为新一代企业智能商旅及费控服务平台,用友BIP商旅及费控服务以“连接 高效 智能 合规”为核心价值理念,致力于让5000万报销人拥有极致的体验,让…

RNN,LSTM,GRU简单图解:
一篇经典的讲解RNN的,大部分网络图都来源于此:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 每一层每一时刻的输入输出:https://www.cnblogs.com/lovychen/p/9368390.html 带有权重标识的图:

ecshop模板smarty foreach详解 [ECshop]
{foreach},{foreachelse}{foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个{foreach}标…
自己动手,做一款抬头显示的「Todo Hud」
我用过好多款 TodoList 软件,但事情一多总还是丢三落四,原本计划好要做的事情总是安静地躺在某个角落,等我想起来要去扫一眼的时候,都已快「物是人非」。。。 要是能在桌面上实时显示 TodoList,那该多好!但…

微软语音扩展全球语言支持,发布160个新声音
导语:全世界有数千种语言,最具语言天赋的人也只能说数十种,普通人能够学会两三种语言已属不易。然而,在科技日新月异的今天,具备自然语言对话能力的AI已经能够掌握上百种语言,扩展人类自身能力,…

P4269 [USACO18FEB]Snow Boots G
思维题。 以地板为序构造链表,再排序,然后删除走不过去的地面。 删除的时候顺便维护最大的跨度,以此判断可行性。 总的来说利用了答案的单调性。 #include <cstdio> #include <cstring> #include <iostream> #include <…

GPT-3:现实版的“贾维斯”?还是真「人工」智能?
整理 | 章雨铭 责编 | 屠敏出品 | CSDN(ID:CSDNnews)GPT-3(Generative Pre-trained Transformer 3)自2020年推出以来就备受热议,它是一种由OpenAI开发的AI工具。发布的两年来,外媒The Verg…

SVN更换修改用户名
如果装了TortoiseSVN: Settings -> Saved Data -> Authentication Data -> clear。即可清除保存的上个用户登录信息;当再次用到svn时,会提示输入用户名密码,输入新的用户名密码即可。 或者,手动删除下面目录下…

启用CORS实现Ajax跨域请求
2019独角兽企业重金招聘Python工程师标准>>> 应用场景:想从a.com请求b.com上的资源,由于同源策略不允许请求。 解决办法:在请求的php文件中加入 header("Access-Control-Allow-Origin: http://b.com"); 这种比较安全&am…

Python机器学习实践指南pdf (中文版带书签)、原书代码、数据集
Python机器学习实践指南 目 录 第1章Python机器学习的生态系统 1 1.1 数据科学/机器学习的工作 流程 2 1.1.1 获取 2 1.1.2 检查和探索 2 1.1.3 清理和准备 3 1.1.4 建模…

虚拟机安装CentOS以及SecureCRT设置【完美无错版】
一、CentOS简介CentOS是Linux的发行版之一,它安全、稳定、高效,是我最喜欢的Linux发行版之一。CentOS根据Red Hat Enterprise Linux开放源代码编译而成,与RedHat Linux并没有什么本质上的差别。但Red Hat Enterprise Linux是商业软件…

Python 实现机器学习前后端页面的交互
作者 | 俊欣来源丨关于数据分析与可视化对于机器学习爱好者而言,很多时候我们需要将建好的模型部署在线上,实现前后端的交互,今天小编就通过Flask以及Streamlit这两个框架实现机器学习模型的前后端交互。模型的建立首先是模型的建立ÿ…

webpack入门(二)what is webpack
webpack is a module bundler.webpack是一个模块打包工具,为了解决上篇一提到的各种模块加载或者转换的问题。 webpack takes modules with dependencies and generates static assets representing those modules. webpack以依赖模块和生成 静态的资源来代表这些模…

vSAN读者交流之1-要为不同时间的服务器选择合适的系统版本
近期在我的虚拟化群中,有两个问题比较典型:在比较老的服务器安装新的VMware ESXi 6.7或vCenter Server 6.7出错。在比较新的服务器安装比较旧的ESXi版本5.5出错。因为每个人的实验环境不同、条件不同,用不同的服务器做实验,或者为…

ecshop中ajax的调用原理
1:首先ecshop是如何定义ajax对象的。ecshop中的ajax对象是在js/transport.js文件中定义的。里面是ajax对象文件。声明了一个var Ajax Transport;对象和一个方法Ajax.call Transport.run;2:ecshop中ajax可以使用两种方式传递数据.一种是get方式,一种是p…

IOS7原生API进行二维码条形码的扫描
2019独角兽企业重金招聘Python工程师标准>>> //需要真机 #import "ViewController.h" #import <AVFoundation/AVFoundation.h>interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//用于处理采集信息的代理 {AVCaptureSess…

元宇宙中可跨语种交流,Meta 发布新语音模型,支持128种语言无障碍对话
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 语言交流是人类互动一种自然的方式,随着语音技术的发展,我们可以与设备以及未来的虚拟世界进行互动,由此虚拟体验将于我们的现实世界融为一体。 然而,…

sql server几种读写分离方案的比较
原文:sql server几种读写分离方案的比较在生产环境中我们经常会遇到这种情况: 前端的oltp业务很繁忙,但是需要对这些运营数据进行olap,为了不影响前端正常业务,所以需要将数据库进行读写分离。 这里我将几种可以用来进行读写分离的…

Jquery和javascript常用技巧
var objSel document.getElementById("selOp"); //这是获取值 alert("当前值: " objSel.value); //这是获取文本 alert("当前文本: " objSel.options(objSel.selectedIndex).text);…

LeetCode刷题-1
数组-1.两数之和题目描述题目样例Java方法:暴力枚举思路及算法代码执行结果复杂度Java方法:哈希表思路及算法代码执行结果复杂度题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数…

测试驱动开发与行为驱动开发中的测试先行方法
Gil Zilberfeld将在 Agile Practitioners会议上举办小型研讨会,讨论测试先行(test first)方法,测试驱动开发(TDD)和行为驱动开发(BDD)的基础。 \\\ Test-First是一个很优秀的工具。它…

在jupyter notebook中同时安装python2和python3
环境 win10 已安装anaconda3 How 1.安装python27> conda create -n py27 python2.72. conda install --prefixD:\pyenv\py27 ipykernel(python27 指定路径:D:\pyenv\py27)3. activate py27(查看 conda info --envs)4. python -m ipykernel install --user5.启动j…

简化代码的微小修改
可选参数和命名实参 可选参数如果操作需要多个值,而有些值在每次调用的时候又相同,这时可以使用可选参数声明可选参数并在调用时省略它们#region 13-1声明包含可选参数的方法并调用static void Dump(int x, int y 20, int z 30)//声明包含了可选参数的…

windows版本下使用xdebug
下载xdebug: http://www.xdebug.org/download.php 这个版本: http://www.xdebug.org/files/php_xdebug-2.2.0-5.3-vc9.dll拷贝到php的ext目录 配置php.ini extensionphp_xdebug-2.2.0-5.3-vc9.dll;xdebug.profiler_enable1;xdebug.profiler_output_dir"E:\PHPn…

LeetCode刷题-2
数组-26.删除有序数组中的重复项题目描述题目样例Java方法:双指针思路及算法代码执行结果复杂度题目描述 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。不要使用额外的数组…

[设计模式]外观模式
1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更加容易使用。 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可以包装很多类࿰…

Oralce中的to_date()函数
Oralce中的to_date()函数to_date( ".$params[ORDER_TIME].",YYYY-MM-DD) TO_DATE(:BEGIN_DATE,yyyy-mm-dd hh24:mi:ss)Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为:to_date( string, [ format_mask ] , [ nls_lan…

LeetCode刷题-3
数组-27. 移除元素题目描述题目样例Java方法:双指针思路及算法代码执行结果复杂度Java方法:双指针优化思路及算法代码执行结果复杂度题目描述 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除…

Ubuntu下ssh免password登录安装
1、首先在本机安装openssh-server和openssh-client. 命令:sudo apt-get install openssh-server openssh-client 2、在检查当前的文件夹下有没有.ssh这个文件。没有的话就mkdir下。 3、生成公钥与私钥。命令:ssh-keygen -t rsa 4、将.ssh文件里的id_isa_…

npm中package-lock.json的作用:npm install安装时使用
简单理解: XYZ 的格式 对应为: 主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修…