platformsh/drupal10

此模板根据 "Drupal 推荐" Composer 项目构建了适用于 Platform.sh 的 Drupal 10。

dev-master 2024-09-19 19:32 UTC

README

在 Platform.sh 上部署 Drupal 10

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

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

Open issues    Open PRs    License   

内容

关于       入门       迁移       学习       贡献      

关于

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

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

功能

  • PHP 8.2
  • MariaDB 10.11
  • Redis 7.2
  • 包含 Drush
  • 自动 TLS 证书
  • 基于 Composer 的构建

入门

部署

快速入门

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

Deploy on Platform.sh


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

composer create-project platformsh/drupal10 -s dev

注意

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

其他部署选项

对于下面的所有其他选项,首先克隆此仓库

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

如果您想从GitHub部署,您可以首先通过点击本页顶部的使用此模板按钮,在您自己的命名空间中生成此存储库的副本。

然后,您可以使用git clone git@github.com:YOUR_NAMESPACE/drupal10.git在本地上克隆它的副本。

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

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

  2. 安装Platform.sh CLI

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(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

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置集成

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

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

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

  2. 安装Platform.sh CLI

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

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

  4. 设置集成

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

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

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

  2. 安装Platform.sh CLI

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

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

  4. 设置集成

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

安装后

像往常一样运行Drupal安装程序。您不会要求输入数据库凭证,因为它们已经提供。

本地开发

本节提供了运行drupal10模板的说明,该模板连接到活跃的Platform.sh环境上的实时数据库实例。

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

$ platform get PROJECT_ID
$ cd project-name
$ platform environment:branch updates
Drupal:使用ddev

ddev提供了与Platform.sh的集成,使得本地开发Drupal变得简单。请查看提供商文档以获取最新信息。

一般步骤如下:

  1. 安装ddev.
  2. 配置文件已经提供在.ddev/providers/platform.yaml中,因此您无需运行ddev config
  3. 通过管理控制台获取您组织的API令牌。[获取令牌](https://docs.platform.sh/development/cli/api-tokens.html#get-a-token)。
  4. 更新您的dedev全局配置文件以使用您刚刚获取的令牌
    web_environment:
    - PLATFORMSH_CLI_TOKEN=abcdeyourtoken`
  5. 运行ddev restart
  6. 使用platform project:info获取您的项目ID。如果您尚未将本地仓库与项目连接(例如,源集成默认情况下就是这样),可以运行platform project:list以定位项目ID,并运行platform project:set-remote PROJECT_ID来配置Platform.sh本地。
  7. 更新您的当前设置的.ddev/providers/platform.yaml文件
    environment_variables:
    project_id: PROJECT_ID
    environment: CURRENT_ENVIRONMENT
    application: drupal
  8. 使用ddev pull platform获取当前环境的数据。
  9. 完成工作后,运行ddev stopddev poweroff
Drupal:使用Lando

Lando支持配置为在Platform.sh上运行的PHP应用程序,并通过其自己的配方和插件从相同的容器注册中心拉取,在本地构建期间从Platform.sh在远程环境中使用。

  1. 安装Lando.
  2. 确保Docker已经运行 - Lando会尝试为您启动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 drupal10 && cd drupal10
$ 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 10.0.0-rc1

添加和更新文件

此时需要添加或修改存储库中的少量文件。其中一些文件明确配置了应用程序在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

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(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

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 设置集成

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

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

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

  2. 安装Platform.sh CLI

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(platformsh login)并列出您的项目(platform project:list)来验证安装。

  3. 创建仓库

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

  4. 设置集成

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

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

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

  2. 安装Platform.sh CLI

    Linux/OSX

    curl -sS https://platform.sh/cli/installer | php

    Windows

    curl -f https://platform.sh/cli/installer -o cli-installer.php
    php cli-installer.php

    您可以通过登录(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 命令,或从您当前的分支打开一个 trivial pull request。

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

在此之后,以下是一些您在继续迁移到 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或更好地理解该平台的新用户来说,它们是非常重要的资源。它们作为入门指南,同时包含在处理某些语言和框架时的许多有用提示和最佳实践。

您发现这个模板有需要修复的错误吗?文档中有什么不清楚或缺失的地方?告诉我们!

如何贡献

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


需要帮助?

向Platform.sh社区求助       加入我们的Slack频道      


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


contrib.rocks制作