跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) 聊天机器人(10) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) 编程语言(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

category

Drupal可以配置为从一个代码库为多个网站提供服务。这样的Drupal安装被称为多站点。使用一个Drupal来运行多个网站的能力是很好的,但另一方面,需要一些考虑。在这篇文章中,我将详细讨论Drupal多站点,让您深入、完整地了解多站点是如何工作的,为什么使用它,何时有意义以及何时避免它。


什么是Drupal多站点及其工作方式

Drupal多站点安装是指在单个代码库上支持多个Drupal网站的安装。
多站点是通过在Drupal系统的/sites/文件夹中为每个网站创建一个单独的文件夹来实现的。例如

  1. /sites/website-one.com/ 
  2. /sites/website-two.com/


每个网站文件夹都包含自己的settings.php文件,并连接到一个单独的数据库。它还包含自己的二进制文件(图像、上传等)。
当请求到达服务器时,Drupal可以根据请求来自特定文件夹的域来映射请求,并加载正确的数据库和配置(启用的模块、主题、内容等),为我们提供一个完全独立的网站。
此外,我们可以控制哪个网站可以使用哪些模块和主题,将它们放在只有特定网站才能访问的正确文件夹中。
关于所有技术细节的非常深入的文章,请参阅一篇关于drupal如何在引擎盖下工作的博客文章。
这是一个相当简单的概念,它为我们提供了巨大的力量来构建一个强大的平台,该平台可以从一个代码库成功地为数百个网站提供服务。


Drupal多站点vs Drupal多域(消歧)


在我们进一步讨论Drupal多站点之前,我们首先必须明确区分Drupal安装可以服务于多个网站的两种不同方法:Drupal多网站与Drupal多域。
在上面(以及本文中)描述的多站点方法中,我们使用单个代码库并在其上创建单独的网站。每个网站都有自己的数据库和内容,本质上,所有网站都是完全独立的。它们甚至可以托管在单独的服务器上。
在多域方法中,我们不使用如上所述的多站点功能。相反,我们使用域访问模块来引入我们网站的可变性,这取决于请求来自哪个(域)。
在多域方法中,只有一个数据库,但根据域的不同还有其他设置。我们可以控制很多事情,比如:

 

  • 可以访问什么内容,
  • 哪些用户可以登录,
  • 哪个主题被启用,或者,
  • 这些块被放置在区域中。


我们也可以有单独的菜单和各种其他东西。
我们可以创建对最终用户来说似乎完全独立的网站,但在多领域中,它们本质上是一个不可分割的系统。
我不会在这里详细解释多域是如何工作的,它的优点和缺点是什么。根据经验:

 

  • 如果您的目标是重复使用功能、标准化代码和功能、减少对多个网站的维护并快速启动多个网站(例如,每个品牌的网站、每个国家的网站等)->请使用多站点方法
  • 如果你想在几个网站之间共享用户、内容、数据等,这些网站在性质上非常相似,并且在某种程度上相互关联->请使用多域方法

 

多站点设置的好处是什么?


Drupal多站点可以帮助建立一个标准化系统,这将有助于有效地启动和管理一批网站。

多站点允许重复使用为一个网站所做的工作


构建一次功能并部署到所有网站。这是多站点的圣杯。实际上,您确实重复使用了代码。

当然,你可以在没有多站点的情况下做到这一点,但在实践中,如果网站不在一个平台上,那真的很困难。由于有了多站点,为一个网站构建的功能可以与其他网站开箱即用。

然而,这不仅仅是功能重用。由于有了多站点,您可以利用Drupal的主题继承机制。您可以构建一个基本主题,然后创建其他主题,这些主题继承了基本主题,但添加了额外的重音符号。

这节省了大量的前端工作时间。你要确保基本主题在所有设备上都能工作,然后所有子主题都能开箱即用。

多站点减少了代码量和维护量


代码越少麻烦就越少。如果您有一个系统,那么与有多个系统相比,要管理的代码要少得多。它使代码管理更加容易。

  • 确保它是最新的
  • 查看它
  • 保持高标准


如果你修复了一个影响某些东西的错误(例如安全问题或菜单在移动设备上的工作方式),你可以一次将其部署到所有网站。

修复一次部署到所有

多站点(通常)可减少技术债务


当开发团队为了快速交付结果而做出妥协时,就会产生技术债务,这可能会在以后的更新或使用中产生问题。

在Drupal机构工作了10多年,我看到了许多由不同团队在大机构和小机构建立的网站。通常情况下,为了满足网站通常具有的严格截止日期,会做出一些妥协。

总体技术债务并不是一件坏事,而是一个商业决策——让我们快速发货,稍后进行重构。它完成了任务,但可能会产生连锁反应。

然而,许多网站的问题是,这笔债务从未偿还。一旦网站上线,就没有预算可以返回、重构、修复和改进。团队转移到下一个网站,那里的截止日期相似,然后是下一个。每次转让都会获得一些债务。最终,该公司有很多代码(每个网站都有单独的代码),每个代码都有一些债务。

当必须对网站进行更新或更改(例如品牌重塑等)时,这种债务就会随之而来。突然间,事实证明,更新和更改所花费的时间比预期的要多,因为系统没有我们希望的那么灵活,或者有些事情没有正常工作。这种情况在每个网站上都会发生,而且每个网站的形式都有所不同。

多站点方法经常会消除此问题。

首先,你拥有更少的代码这一事实已经减少了你的技术债务。

其次,多站点系统通常比“许多单独的网站”提供更高的质量。有几个因素导致了这种情况:

  • 该公司可能需要时间为其所有网站选择合适的供应商,因为这可能是一个过于昂贵和复杂的过程,无法在网站前完成
  • 开发团队会更加谨慎地进行创建。灵活而持久的解决方案,如果他们知道这将不仅仅是一个网站,而是多个网站,并且所产生的任何债务都会很快反噬他们。
  • 如果在许多网站上使用重构,而不是在一个网站上使用,那么向管理层推销重构的必要性也会更容易。

 

要了解更多关于多站点和技术债务的信息,请参阅我关于通过构建Drupal多站点来减少技术债务的博客文章。

多站点使公司能够快速启动网站


许多公司在决定建立多站点时,都希望能够更快、更低地推出网站。

具有内置安装配置文件的Drupal多站点可以在数小时(如果不是几分钟的话)内启动新的网站样板,为内容输入做好充分准备,并获得IT的有限支持。

Drupal安装概要文件是一种捕获许多功能和配置的方法,这些功能和配置曾经构建在可安装包中,然后可以一次又一次地启动。需要快速建立许多网站的公司可以通过使用多站点方法获得巨大的好处。

安装配置文件一键部署

阅读有关多站点中安装配置文件的更多信息。

多站点可降低维护成本


如果我们有一个代码库,维护它会更便宜。在上面提到的关于减少技术债务的帖子中,我做了一个简短的计算,如果一家公司有50个网站,每个网站每月需要20个小时,那么仅仅维护一个网站,很快就会增加到每月1000个小时。多站点可以显著减少这种情况,因为对一个网站所做的许多操作都会自动传播到所有其他网站。

多站点方法的缺点是什么?


与每个解决方案一样,多站点也有一些需要考虑的因素。

它的技术更先进


与构建多个完全独立的Drupal网站相比,构建和维护一个成功的多站点安装需要更多的技术才能。还有更多的事情需要考虑,还有更多的设置需要管理。总体而言,该系统更为复杂。

一个经验不足的团队可能会陷入问题和问题,这将减缓开发速度,并且可能永远无法获得多站点的好处。选择合适的Drupal开发团队对项目的成功至关重要。如果该公司以前有Drupal多站点的经验,那将是最好的。

需要更多的规划


如果你建立一个网站,那么快速迭代、更改和适应要容易得多。如果您正在构建一个多站点,更改请求可能需要更大的重构。

你正在为许多网站做计划。每当你更改某个内容时,你都必须考虑它将如何影响所有其他网站。你必须考虑你希望所有网站如何整体工作,而不是你希望这个特定的横幅或表单如何在一个网站上工作。
多站点中的更改需要更多的重构,而且成本更高。如果你需要新的东西或对一个网站进行更改,通常你可能需要更改安装配置文件,并为已经创建的和实时的网站编写更新。这是一个比仅仅更改一个网站更困难的过程。

网站应遵守一个标准


Multisite非常棒,因为它允许您重用以前构建的组件。然而,这是一把双刃剑。这些组件按原样工作。为了能够使用现有的组件,您必须遵守以前设置的一些标准。例如,如果您创建一个发布工作流,如果所有网站都遵循它,那就太好了。

幸运的是,在Drupal中,你几乎总是可以在每个网站的基础上更改内容,但你做得越多,多网站的好处就越少。

何时使用多站点


我们现在知道了多站点是如何工作的以及有哪些好处。那么,什么时候应该使用多站点方法呢?

当你必须建立许多类似的网站时


组织通常需要建立许多网站,这些网站的内容大多不同,但总体上具有相同或非常相似的功能和外观:每个国家、每个品牌的网站,每年为某个活动提供相同类型的网站,或大学每个系的网站。

每个国家的网站

当有2个或更多网站时


显然,你不可能拥有一个只有一个网站的多站点。不过,我想说的是,只为两个网站创建一个多站点是有意义的。它们越大,这样做就越有意义。

如果他们不在多站点上,他们的代码将越来越不同,一个团队将更难维护它们。

如果你的团队只需要担心一个代码库,他们会有更好的专注力。

何时不使用多站点


多站点是构建高质量系统的好方法,这些系统可以运行多个网站。也就是说,创建一个多站点并不总是一个好主意。多站点的优势在于事物的可重用性——一次创建,处处使用。此外,它是共享维护-一次修复一个错误-部署到所有网站。如果我们不能实现这些好处,多站点可能不是正确的方法。

如果网站差异很大


如果你必须建立没有共同点的网站,在一个多网站上建立这些网站不会给你带来任何好处。例如,如果你必须建立一个电子商务网站、营销网站、内联网和社交网站,它们的工作方式和外观都不同,那么你最好将它们分开构建。

您也许可以重复使用一些组件,但可能不多,而且额外的技术复杂性很可能不会带来回报。

如果单独的团队要建立网站


多站点需要良好的规划和技术协调,以确保所构建的内容在所有网站上都有效。如果有一位技术负责人能够验证计划并接受可交付成果,这是最好的实现方式。如果单独的团队并行构建网站,可能很难协调以取得好的结果。

也就是说,在拥有数百个网站的公司中,建立一个具有安装配置文件的多站点平台,然后邀请单独的团队来调整网站以适应各种要求(例如,当地市场)是非常流行的。

团队无法更改多站点本身。它只能在有限的范围内工作——通常只为特定网站添加子主题和模块。如果本地见解很重要,并且确实需要数百个网站,而一个团队无法在合理的时间内交付,那么这种方法可能是一个很好的折衷方案。

多站点的其他多站点注意事项


确保您的主机支持它


因为多站点需要一种机制来管理多个域,精确地指向您希望它们指向的位置,并且部署机制与您的要求完全一致,所以您必须确保您的托管提供商允许这样做。大多数大型托管提供商都允许,但不是全部,所以在选择之前请检查。

自动化部署


如果你真的想建立一个强大的多站点,你必须确保你有良好的DevOps流程来支持它。
因为将更改部署到多站点意味着同时将更改部署在多个网站上,因此自动化流程是确保可预测性和避免错误的一个非常好的方法。

自动化测试


因为默认情况下,您将部署的每个更改都必须部署到所有网站,所以您必须确保没有破坏任何实时网站上的任何内容。如果你管理的网站很多,手动操作可能会非常乏味和耗时。

验证新更改不会破坏任何网站功能的最佳方法是自动测试。现在有许多工具可以帮助您测试网站的功能和外观,甚至在许多浏览器和设备上也是如此。自动化将确保长时间的高质量。

总结


Drupal多站点允许公司在同一代码库上构建多个网站。这是一个减少代码量和维护时间的好方法。由于安装配置文件和在许多网站上重复使用相同的功能,它可以帮助组织更快、更高质量地构建网站。它可以节省时间和金钱。另一方面,它要求执行团队有更大的规划和更高的技术能力。

如果你必须建立和维护多个网站,你绝对应该考虑多站点的方法。

文章链接

标签