platformsh/drupal9

此模板根据“Drupal推荐”的Composer项目构建了基于Platform.sh的Drupal 9。

dev-master 2024-09-21 19:27 UTC

This package is auto-updated.

Last update: 2024-09-21 19:27:36 UTC


README

在Platform.sh上部署Drupal 9

贡献,请求功能或查看我们的资源

加入我们的社区       文档       博客       报告一个错误       请求一个功能

Open issues    Open PRs    License   

内容

关于       入门       迁移       学习       贡献      

关于

此模板使用“Drupal推荐”的Composer项目构建了Drupal 9。它已预先配置为使用MariaDB和Redis进行缓存。Drupal安装程序将跳过询问数据库凭据,因为这些凭据已提供。

Drupal是一个基于PHP的灵活和可扩展的CMS框架。

特性

  • PHP 8.1
  • MariaDB 10.4
  • Redis 6
  • 包含Drush
  • 自动TLS证书
  • 基于Composer的构建

入门

部署

快速入门

在Platform.sh上部署此模板最快的方法是点击下面的按钮。这将自动为您创建一个新的项目并初始化存储库。

Deploy on Platform.sh


您还可以使用以下命令快速在本地上重新创建此项目

composer create-project platformsh/drupal9 -s dev

注意

Platform.sh模板优先考虑上游发布版本,而不是我们自己的。尽管如此,我们根据计划定期更新模板依赖项,独立于这些上游。因此,模板存储库不包含发布版本。这可能在将来改变,但在此之前,使用composer create-project需要使用-s dev标志。

其他部署选项

对于以下所有其他选项,首先克隆此存储库

git clone https://github.com/platformsh-templates/drupal9

如果您尝试从GitHub部署,您可以通过点击此页面上方的使用此模板按钮,首先在自己的命名空间中生成此仓库的副本。

然后您可以使用以下命令在本地克隆其副本:git clone git@github.com:YOUR_NAMESPACE/drupal9.git

直接从命令行部署到Platform.sh
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置项目远程

    通过运行命令platform project:list找到您的PROJECT_ID

    +---------------+------------------------------------+------------------+---------------------------------+
    | ID            | Title                              | Region           | Organization                    |
    +---------------+------------------------------------+------------------+---------------------------------+
    | PROJECT_ID    | Your Project Name                  | xx-5.platform.sh | your-username                   |
    +---------------+------------------------------------+------------------+---------------------------------+

    然后在本地副本内部,运行命令platform project:set-remote PROJECT_ID

  4. 推送

    git push platform DEFAULT_BRANCH
与GitHub仓库集成并部署拉取请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与https://YOUR_NAMESPACE/nextjs-drupal中设置的相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置集成

    参考GitHub集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在GitHub上创建访问令牌。

与GitLab仓库集成并部署合并请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

    在GitLab上创建一个新的仓库,将其设置为本地副本的新远程,并推送到默认分支。

  4. 设置集成

    参考GitLab集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在GitLab上创建访问令牌。

与Bitbucket仓库集成并部署拉取请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

    在Bitbucket上创建一个新的仓库,将其设置为本地副本的新远程,并推送到默认分支。

  4. 设置集成

    参考Bitbucket集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在Bitbucket上创建访问令牌。

安装后

像平常一样运行Drupal安装程序。您不会要求提供数据库凭据,因为这些凭据已经提供。

本地开发

本节提供了在连接到活跃的Platform.sh环境上的实时数据库实例的情况下运行drupal9模板的说明。

对于所有使用Platform.sh进行开发的案例,重要的是要在隔离的环境中开发 - 不要在本地开发时连接到生产环境上的数据。以下所有选项都假定您已经将此模板部署到Platform.sh,并且已经部署了以下起始命令

$ platform get PROJECT_ID
$ cd project-name
$ platform environment:branch updates
Drupal:使用ddev
有关最新说明,请参阅我们在Platform.sh文档中的使用DDEV进行本地开发指南。
Drupal:使用Lando

Landó支持在Platform.sh上配置的PHP应用程序,并通过其自己的配方和插件,从Platform.sh在远程环境中使用的相同容器注册中心进行拉取。

  1. 安装Landó.
  2. 请确保Docker已经运行 - Landó会尝试为您启动Docker,但最好在开始之前在后台运行。
  3. 使用lando start命令启动您的应用程序和服务。
  4. 要获取来自您的Platform.sh环境的最新数据(服务和挂载),请运行lando pull命令。
  5. 如果您任何时候都更新了您的Platform.sh配置文件,请运行lando rebuild命令。
  6. 当您完成工作后,请运行lando stoplando poweroff

注意

对于上述许多步骤,如果您不在项目目录中或环境与现有的拉取请求相关联,您可能需要包括CLI标志-p PROJECT_ID-e ENVIRONMENT_ID

迁移

以下步骤概述了将您的应用程序迁移到Platform.sh的重要步骤 - 例如,添加所需的配置文件和依赖项。并非每个步骤都适用于每个人的迁移。这些步骤实际上假设了可能的最早期起点 - 本地没有任何代码,并且此模板存储库将完全从头开始重建。

如果您已有要迁移的代码,请专注于与您的应用程序最相关的步骤,并跳过第一部分。

入门

假设您的起点没有本地代码,以下步骤将设置一个起始存储库,我们可以从中开始进行更改,以重建此模板并将其迁移到Platform.sh。如果您正在尝试迁移现有的代码库,请转到下一步 - 添加和更新文件 - 并用其他分支名称替换对默认分支main的任何引用。

$ mkdir drupal9 && cd drupal9
$ git init
$ git remote add upstream https://github.com/drupal/recommended-project.git
$ git branch -m main
$ git fetch --all --depth=2
$ git fetch --all --tags
$ git merge --allow-unrelated-histories -X theirs 9.3.9

添加和更新文件

此时需要添加或修改您的存储库中的少量文件。其中一些文件明确配置了应用程序在Platform.sh上的构建和部署方式,而其他文件则仅修改您可能已经本地拥有的文件,在这种情况下,您需要复制这些更改。

打开下面的下拉菜单,查看您在迁移过程中需要复制的所有添加更新文件。

查看文件

依赖项和配置

有时需要安装额外的依赖项并修改上游项目的配置才能在Platform.sh上部署。在这种情况下,我们尽量将这些修改保持到最小。运行以下命令以在模板中复现依赖项。

$ composer require platformsh/config-reader drush/drush drupal/redis
$ composer config allow-plugins.composer/installers true --no-plugins
$ composer config allow-plugins.drupal/core-composer-scaffold true --no-plugins
$ composer config allow-plugins.drupal/core-project-message true --no-plugins
$ composer config allow-plugins.cweagans/composer-patches true --no-plugins

部署到Platform.sh

您的存储库现在拥有部署到Platform.sh所需的全部代码。

直接从命令行部署到Platform.sh
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置项目远程

    通过运行命令platform project:list找到您的PROJECT_ID

    +---------------+------------------------------------+------------------+---------------------------------+
    | ID            | Title                              | Region           | Organization                    |
    +---------------+------------------------------------+------------------+---------------------------------+
    | PROJECT_ID    | Your Project Name                  | xx-5.platform.sh | your-username                   |
    +---------------+------------------------------------+------------------+---------------------------------+

    然后在本地副本内部,运行命令platform project:set-remote PROJECT_ID

  4. 推送

    git push platform DEFAULT_BRANCH
与GitHub仓库集成并部署拉取请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与https://YOUR_NAMESPACE/nextjs-drupal中设置的相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置集成

    参考GitHub集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在GitHub上创建访问令牌。

与GitLab仓库集成并部署合并请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

    在GitLab上创建一个新的仓库,将其设置为本地副本的新远程,并推送到默认分支。

  4. 设置集成

    参考GitLab集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在GitLab上创建访问令牌。

与Bitbucket仓库集成并部署拉取请求
  1. 创建免费试用

    在Platform.sh注册30天的免费试用。注册完成后,选择“从头开始创建”项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。

  2. 安装Platform.sh CLI

    按照说明为您的操作系统安装Platform.sh CLI。您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

    在Bitbucket上创建一个新的仓库,将其设置为本地副本的新远程,并推送到默认分支。

  4. 设置集成

    参考Bitbucket集成文档以完成将仓库连接到Platform.sh上的项目。为此,您需要在Bitbucket上创建访问令牌。

迁移您的数据

如果您正在将现有网站迁移到Platform.sh,那么除了代码外,您还需要迁移您的数据。这意味着您的数据库和文件。

导入数据库

首先,从您当前的网站获取数据库转储,并将您的转储文件保存为database.sql。然后,使用CLI将数据库导入到您的Platform.sh站点。

platform sql -e main < database.sql
导入文件

您首先需要从您当前的主机环境中下载您的文件。最简单的方法可能是使用rsync,但请咨询您旧主机的文档。

platform mount:upload 命令提供了一个简单的方法,可以将整个目录一次性上传到您在 .platform.app.yaml 文件中定义的 mount。在内部,它使用 SSH 隧道和 rsync,因此尽可能高效。(您还可以使用 platform mount:download 命令稍后下载文件。)从您的本地 Git 仓库根目录运行以下命令(如果需要,请修改 --source 路径,并将 BRANCH_NAME 设置为您正在使用的分支)。

以下列出了几个示例,但对于您希望迁移的所有包含数据的目录都需要重复执行。

$ platform mount:upload -e main --mount web/sites/default/files --source ./web/sites/default/files
$ platform mount:upload -e main --mount private --source ./private

请注意,rsync 对其尾部斜杠很挑剔,所以务必包含这些。

下一步

现在您的应用程序已部署到 Platform.sh,事情变得更加有趣。运行您的项目的 platform environment:branch new-feature 命令,或者从当前分支打开一个简单的拉取请求。

生成的环境是生产环境的 精确 复制品。它包含与您配置文件中定义的相同的基础设施,并且在其服务中还包括从生产环境复制的数据。在这个隔离的环境中,您可以自由地对应用程序进行任何必要的更改,并真正测试它们在生产环境中的表现。

在此之后,这里收集了一些您在继续迁移到 Platform.sh 过程中可能会感兴趣的额外资源。

学习

故障排除

访问日志

环境部署完成后,您可以使用 CLI 调查启动时发生的问题、deploypost_deploy 钩子以及通常在运行时的问题。运行以下命令

platform ssh

如果您在项目副本之外运行此命令,您还需要包括 -p(项目)和/或 -e(环境)标志。连接到容器后,日志 可在 /var/log/ 中供您调查。

重建缓存

您可能会在最初在您的生产环境中安装 Drupal 后遇到数据库错误。要修复,请 SSH 进入应用程序容器(platform ssh)并使用 Drush 重建缓存。

drush cache-rebuild
默认 hash_salt 行为

Drupal 的 默认设置集hash_salt 设置为空字符串

$settings['hash_salt'] = '';

以前,Platform.sh 模板已覆盖此值

$settings['hash_salt'] = $settings['hash_salt'] ?? $platformsh->projectEntropy;

此设置不足以覆盖某些用户配置 - 例如,当应用程序依赖于 hash_saltNull 值时。

现在,此设置在 settings.platformsh.php 中看起来如下

$settings['hash_salt'] = empty($settings['hash_salt']) ? $platformsh->projectEntropy : $settings['hash_salt'];

此更改将 hash_salt 设置为内置环境变量 PLATFORM_PROJECT_ENTROPY 的值,如果项目包含默认设置或 Null。如果您的应用程序代码 依赖于 空值,您可以随意取消注释该行,或在文件中稍后重新设置。

请随时访问 platformsh-templates/drupal9#73 以获取有关此讨论的更多详细信息。

Blackfire.io:创建持续可观察性策略

此模板包含一个起始的.blackfire.yml文件,可用于在您的项目中启用应用程序性能监控性能分析构建性能测试。Platform.sh在应用容器上预装了Blackfire,且配置需要最少的配置

资源

联系

此模板由Platform.sh开发者关系团队维护,他们将会被通知您在此处打开的所有问题和拉取请求。

  • 社区:与社区分享您的问题,或者查看它是否已经被问过在我们的社区网站上。
  • Slack:如果您还没有这样做,您可以在Platform.sh的公共Slack频道加入,并用任何问题ping @devrel_team

关于Platform.sh

此模板专为在Platform.sh上部署而设计。

什么是Platform.sh?

Platform.sh是一个统一的、安全的、企业级平台,用于构建、运行和扩展Web应用程序。我们是Fleet Ops的领导者:从开始,您就可以从我们的平台获取管理您的网站和应用程序所需的一切。因为基础设施和工作流程从一开始就得到处理,应用程序就能正常工作,因此团队可以专注于真正重要的事情:更快地进行更改、自信地协作和负责任地扩展。无论是管理十个还是十个千个网站和应用程序,Platform.sh都是开发者首选的扩展解决方案。

我们的关键特性包括

  • GitOps:Git作为真理的来源

    每个分支都成为开发环境,没有提交任何东西都不能改变。

  • 包含所有功能:管理型基础设施

    YAML中的简单抽象用于提交和配置基础设施、完全管理的补丁更新以及24个运行时服务,只需一行代码即可添加。

  • 即时克隆:分支、合并、重复

    可重用构建和自动继承的生产数据提供了真正的预发布环境——隔离实验,测试,然后销毁或合并。

  • FleetOps:舰队管理平台

    利用我们的公共API以及自定义工具如源操作活动脚本管理数千个应用程序——它们的依赖更新、新内容和上游代码。

要了解更多信息,请查看下面的演示并访问我们的网站


The Platform.sh demo

贡献

帮助我们保持顶级模板!

我们所有的模板都是开源的,它们对于第一次尝试部署到Platform.sh或更好地了解该平台的用户来说都是重要的资源。它们充当入门指南,同时也包含了一些在处理特定语言和框架时非常有用的技巧和最佳实践。

发现这个模板有错误需要修复吗?文档中有不清楚或缺失的内容?告诉我们吧!

如何贡献

报告一个错误       提交功能请求       发起一个pull请求      


需要帮助?

向Platform.sh社区提问       加入我们的Slack频道      


感谢所有我们了不起的贡献者!


contrib.rocks 制作