platformsh / drupal8
此模板基于“Drupal 推荐”Composer项目构建Drupal 8,用于Platform.sh。
Requires
- composer/installers: ^1.2
- drupal/console: ^1.9
- drupal/core-composer-scaffold: ^8.8
- drupal/core-project-message: ^8.8
- drupal/core-recommended: ^8.8
- drupal/redis: ^1.2
- drush/drush: ^10.1
- platformsh/config-reader: ^2.3
Conflicts
This package is not auto-updated.
Last update: 2023-09-28 00:14:05 UTC
README
存档模板
此模板已存档。您仍然可以将其用作参考,但我们的团队不再定期更新。
在Platform.sh上部署Drupal 8
贡献、请求功能或查看我们的资源
加入我们的社区 文档 博客 报告错误 请求功能
关于
此模板使用“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
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
设置项目远程
通过运行命令
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
。 -
推送
git push platform DEFAULT_BRANCH
与GitHub仓库集成并部署拉取请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与您在
https://YOUR_NAMESPACE/nextjs-drupal
中设置的相匹配。 -
安装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
)来验证安装。 -
设置集成
参考GitHub集成文档以完成将您的仓库连接到Platform.sh上的项目。您需要在GitHub上创建访问令牌来完成此操作。
与GitLab仓库集成并部署合并请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
创建仓库
在GitLab上创建一个新的仓库,将其设置为本地副本的新远程仓库,并推送到默认分支。
-
设置集成
参考GitLab集成文档以完成将仓库连接到Platform.sh上的项目。您需要在GitLab上创建访问令牌来完成此操作。
与Bitbucket仓库集成并部署拉取请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
创建仓库
在Bitbucket上创建一个新的仓库,将其设置为本地副本的新远程仓库,并推送到默认分支。
-
设置集成
参考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 变得简单。请查阅集成提供者文档以获取最新信息。
通常,步骤如下
- 安装 ddev.
- 在
.ddev/providers/platform.yaml
中已提供配置文件,因此您不需要运行ddev config
。 - 通过管理控制台获取组织的 API 令牌。
- 更新您的 dedev 全局配置文件以使用您刚刚获取的令牌
web_environment: - PLATFORMSH_CLI_TOKEN=abcdeyourtoken`
- 运行
ddev restart
。 - 使用
platform project:info
获取项目 ID。如果您尚未将本地仓库与项目连接(例如,源集成默认情况下),您可以使用platform project:list
来定位项目 ID,并使用platform project:set-remote PROJECT_ID
来配置本地 Platform.sh。 - 更新
.ddev/providers/platform.yaml
文件以匹配您的当前设置environment_variables: project_id: PROJECT_ID environment: CURRENT_ENVIRONMENT application: drupal
- 使用
ddev pull platform
获取当前环境的数据。 - 完成工作后,运行
ddev stop
和ddev poweroff
。
Drupal:使用 Lando
Lando 支持 PHP 应用程序,这些应用程序配置为在 Platform.sh 上运行,并通过其自己的配方和插件从 Platform.sh 在远程环境中使用的同一容器注册库中提取,以便在本地构建时使用。
注意
对于上述许多步骤,如果您不在项目目录中或环境与现有拉取请求相关联,您可能需要包含 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 文件是一个方便的地方,可以设置与应用程序相关的环境变量,这些变量可能依赖于当前环境。它在启动命令运行之前作为deploy 和post_deploy 钩子的第一步和您SSH进入应用程序容器时每个会话的开始时被引用。它使用破折号编写,因此请注意与bash的差异。它可以用来设置任何环境变量,包括依赖于Platform.sh提供的变量(如 PLATFORM_RELATIONSHIPS 和PLATFORM_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
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
设置项目远程
通过运行命令
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
。 -
推送
git push platform DEFAULT_BRANCH
与GitHub仓库集成并部署拉取请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与您在
https://YOUR_NAMESPACE/nextjs-drupal
中设置的相匹配。 -
安装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
)来验证安装。 -
设置集成
参考GitHub集成文档以完成将您的仓库连接到Platform.sh上的项目。您需要在GitHub上创建访问令牌来完成此操作。
与GitLab仓库集成并部署合并请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
创建仓库
在GitLab上创建一个新的仓库,将其设置为本地副本的新远程仓库,并推送到默认分支。
-
设置集成
参考GitLab集成文档以完成将仓库连接到Platform.sh上的项目。您需要在GitLab上创建访问令牌来完成此操作。
与Bitbucket仓库集成并部署拉取请求
-
创建免费试用
在Platform.sh注册30天免费试用。完成注册后,选择从头创建项目选项。给您的项目命名,并选择您希望部署的区域。至于生产环境选项,请确保与此仓库的设置匹配,或者与您在本地更新默认分支的设置相匹配。
-
安装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
)来验证安装。 -
创建仓库
在Bitbucket上创建一个新的仓库,将其设置为本地副本的新远程仓库,并推送到默认分支。
-
设置集成
参考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 过程中可能会感兴趣的资源集合
学习
故障排除
访问日志
环境部署完成后,您可以调查启动过程中发生的问题、deploy
和 post_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_salt
的 Null
值时。
现在,在 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,并且 设置需要最少的配置。
- 什么是 Blackfire?
- 在 Platform.sh 项目上配置 Blackfire.io
- Blackfire.io Platform.sh 文档
- 分析食谱
- 监控食谱
- 测试食谱
- 使用构建
- 配置集成
资源
联系方式
此模板由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以及自定义工具,如源操作和活动脚本,来管理数千个应用程序 - 他们的依赖项更新、新鲜内容和上游代码。
了解更多信息,请查看下面的演示并访问我们的网站。
贡献
帮助我们保持高质量的模板!
我们所有的模板都是开源的,对于试图首次部署到Platform.sh或更好地了解平台的用户来说,它们都是重要的资源。它们充当入门指南,但也包含了一些有用的提示和最佳实践,尤其是在使用某些语言和框架时。
您发现此模板中有需要修复的错误?文档中的某些内容不清晰或缺失?请告诉我们!
需要帮助?
向Platform.sh社区提问 加入我们的Slack