platformsh/drupal8

此软件包已被废弃,不再维护。没有建议的替代软件包。

此模板基于“Drupal 推荐”Composer项目构建Drupal 8,用于Platform.sh。

8.8 2019-12-13 21:00 UTC

This package is not auto-updated.

Last update: 2023-09-28 00:14:05 UTC


README

存档模板

此模板已存档。您仍然可以将其用作参考,但我们的团队不再定期更新。

68747470733a2f2f706c6174666f726d2e73682f6c6f676f732f726564657369676e2f506c6174666f726d73685f6c6f676f5f626c61636b2e737667

header.svg

在Platform.sh上部署Drupal 8

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

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

Open issues    Open PRs    License   

内容

关于       入门       迁移       学习       贡献      

关于

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

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

功能

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

入门

部署

快速入门

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


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

composer create-project platformsh/drupal8 -s dev

注意

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

其他部署选项

以下所有选项,请先克隆此仓库

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

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

然后您可以使用以下命令在本地克隆副本:git clone git@github.com:YOUR_NAMESPACE/drupal8.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安装程序。您不会要求提供数据库凭据,因为这些凭据已经提供。

本地开发

本节提供了运行与活跃的Platform.sh环境上的实时数据库实例连接的drupal8模板的本地指令。

对于所有使用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 令牌
  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 支持 PHP 应用程序,这些应用程序配置为在 Platform.sh 上运行,并通过其自己的配方和插件从 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 drupal8 && cd drupal8
$ 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 8.9.20

添加和更新文件

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

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

查看文件
文件 目的
config/sync/.gitkeep 新增
web/sites/default/settings.php 更新

Drupal设置文件已更新,以导入并使用web/sites/default/settings.platformsh.php
web/sites/default/settings.platformsh.php 新增

包含Platform.sh特定的配置,即设置数据库连接到MariaDB服务和通过Redis进行缓存。
.environment 新增

.environment文件是一个方便的地方,可以设置与应用程序相关的环境变量,这些变量可能依赖于当前环境。它在启动命令运行之前作为deploypost_deploy钩子的第一步和您SSH进入应用程序容器时每个会话的开始时被引用。它使用破折号编写,因此请注意与bash的差异。

它可以用来设置任何环境变量,包括依赖于Platform.sh提供的变量(如PLATFORM_RELATIONSHIPSPLATFORM_ROUTES)的变量,或者修改PATH。此文件不应产生输出

在此,Composer配置和PATH被更新,以便可以从路径(即drush)运行可执行的应用程序依赖项。
.gitignore 新增

由于.gitignore文件不包括在上游中,因此已添加。
.lando.upstream.yml 新增

此文件配置了Lando作为此模板的本地开发选项。有关配置的更多信息,请参阅Platform.sh Lando插件文档。关于如何开始本地开发的更多信息,请参阅此README的本地开发部分。
.platform.app.yaml 新增

此文件是必需的,用于定义Platform.sh上所有应用程序容器的构建和部署过程。在此文件中,配置了运行时版本、与服务容器的关联以及可写挂载。它还在此文件中定义了要安装的依赖项、安装时间以及将使用哪个包管理器进行安装。

有关配置的更多详细信息,请参阅应用程序文档。有关从构建到部署导致事件序列的更多信息,请参阅构建和部署时间线文档

此模板使用Composer 2在build钩子之前使用默认的composer 构建风味安装依赖项。Drush任务在deploy钩子期间运行,并在定义的cron作业期间再次引用。
drush/platformsh_generate_drush_yml.php 新增

已包含此文件,以便在每次部署时生成drush yaml配置。
.platform/services.yaml 新增

Platform.sh提供了一系列按需管理的服务,可以轻松添加到您的项目中。每个服务的版本、名称、资源和附加配置都在此文件中设置。有关配置、版本和服务可用性的更多详细信息,请参阅服务文档

在此模板中,已配置了MariaDB和Redis。
.platform/routes.yaml 新增

此文件是部署到Platform.sh所必需的,因为它定义了平台如何处理请求。在此文件中可以配置重定向和基本缓存。有关更多配置详细信息,请参阅路由文档

php.ini 新增

还添加了一个初始的php.ini文件。这些设置是性能测试和来自Blackfire.io的最佳实践推荐的结果。它们将为生产应用程序初始化Drupal,并补充.blackfire.yml中指定的许多测试。
.blackfire.yml 新增

已添加此文件,以帮助您开始在您的项目中使用Blackfire.io。有关如何开始的信息,请参阅下面的Blackfire部分
.lando.upstream.yml 新增

此文件配置了Lando作为此模板的本地开发选项。有关配置的更多信息,请参阅Platform.sh Lando插件文档。关于如何开始本地开发的更多信息,请参阅此README的本地开发部分。
.ddev/providers/platform.yaml 新增

此文件将ddev配置为该模板的本地开发选项。有关配置的更多信息,请参阅Platform.sh ddev集成文档。有关如何开始的信息,请参阅此README的本地开发部分。请确保遵循通过ddev CLI和该文件注释部分提供的说明来正确配置ddev以适应您的项目。

依赖项和配置

有时,为了在Platform.sh上部署,有必要安装额外的依赖项并修改上游项目的配置。当我们这样做时,我们会尽力将这些修改限制在必要的最小范围内。运行以下命令以在模板中重现依赖项。

$ composer require platformsh/config-reader drush/drush:^10.6 drupal/console 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 命令,或者从当前分支打开一个简单的拉取请求。

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

之后,以下是一些您在继续迁移到 Platform.sh 过程中可能会感兴趣的资源集合

学习

故障排除

访问日志

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

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      


感谢所有杰出的贡献者!


68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d706c6174666f726d73682d74656d706c617465732f64727570616c38

contrib.rocks打造