az-digital/az_quickstart

亚利桑那快速启动

安装次数: 39,991

依赖项: 1

建议者: 0

安全性: 0

星标: 30

关注者: 18

分支: 20

公开问题: 578

类型:drupal-custom-profile

2.11.3 2024-09-19 00:02 UTC

This package is auto-updated.

Last update: 2024-09-26 20:23:02 UTC


README

演示/启动 Drupal 分发和安装配置文件,其中包含符合社区最佳实践和UArizona品牌策略的各种功能。

完整的自定义 Drupal

AZ 快速启动是流行的 Drupal 内容管理系统的一个完整自定义版本,而不是现有基于 Drupal 的网站的附加组件。以前,要启动一个新的 Drupal 网站,您需要准备一个 Web 服务器和数据库,然后按照其安装 Drupal 文档和用户指南中的安装章节安装核心软件。这将生成一个具有最小功能且没有内容的网站,您可以通过添加主题和模块来自定义它以适应您的需求。然而,越来越多人可以安装 Drupal 分发,这些分发不仅包含核心,还包括完整的扩展集,使其几乎立即适用于特定目的,例如在线商店。AZ 快速启动是提供许多亚利桑那大学特定功能的分发,而不是空网站,它还可以包含一些演示内容(尽管可以立即关闭)。

如何贡献

请参阅我们的贡献文档,以获取有关如何贡献的详细说明,包括

在哪里安装您的快速启动站点

大学的校园网络服务团队为不熟悉 Web 开发或系统管理的人员提供基于快速启动的现成网站。幕后,一个名为 Pantheon 的 Web 托管服务托管这些网站,因此,当人们需要比这些提供更多的控制性和灵活性时,他们也有方法可以在 Pantheon 上独立托管它,并且许多重要的大学网站已经在那里。然而,还有许多其他基于亚利桑那快速启动的网站托管选项;唯一的限制是,遵循这些选项的任何人必须负责维护系统网站的安全性并及时更新。一种已经存在多年的通用托管选项被称为 LAMP:Linux 操作系统、Apache Web 服务器、MySQL 数据库和 PHP 脚本语言的组合,因此值得更详细地举例说明,但许多变体很常见(例如,用 Nginx 替换 Apache Web 服务器软件)。

系统要求

亚利桑那快速启动的系统要求几乎与Drupal的要求相同,特别是 Drupal 9 的要求。一些需要强调或检查的附加事项包括

  • 确保系统有足够的内存:即使运行的网站消耗很少,更新和安装都是内存密集型的。
  • 检查 PHP 的配置是否允许其使用内存(请参阅内存要求部分)。
  • 再次检查是否添加了所需的 PHP 扩展:在最近的系统上,通常的包装机制应该足以添加它们(例如 Debian 或 Ubuntu 版本的 Linux 上的 apt)。
  • 请检查Apache配置是否启用了mod_rewrite模块,以及使其能够与PHP一起工作的模块。
  • 检查运行中的Web服务器的用户和组:在许多基于Debian的Linux系统中,这些将是www-data,但并非所有系统(这些信息用于稍后设置文件和目录权限)。
  • 以普通(非root)用户身份安装和配置软件,当需要提升权限时可以使用sudo;将该用户添加到Web服务器使用的同一个组中(在/etc/group文件中,您将看到类似www-data:x:33:normaluser的内容)。
  • Composer的最新版本是必需的,而不是选择性的——删除任何之前安装但过时的版本,并按照https://getcomposer.org.cn/download/说明安装它,或者如果可以升级,请尝试命令sudo -H composer self-update --2

Web服务器配置

如果您的快速入门站点将被公开展示,并且不仅仅是临时的开发站点,那么您应该使用TLS(SSL,URL中使用https://而不是http://)。现在有几种简单且便宜的方法可以实现这一点,例如通过大学获取InCommon证书,在AWS环境中获取证书,或使用免费的自动续签的Let's Encrypt证书。Apache的默认设置通常需要一些强化(至少禁用过时的协议),但关于如何操作的指南有很多,还有在线工具可以帮助您。将快速入门站点的配置放在Apache的<VirtualHost>指令中是一个好习惯,即使服务器上只有一个站点。您也可以从快速入门站点本身添加安全相关的标题,但提前使用Apache配置设置这些标题也无妨,例如

    Header always set Content-Security-Policy "frame-ancestors 'self'"
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
    Header always set X-XSS-Protection 1

Drupal的一般Web服务器要求并不特别严格。在尝试快速入门安装之前,请确保Web服务器可以正常工作(例如,一个静止的静态站点),但请注意,您应该在初始测试之后更改Apache的DocumentRoot指令到新的位置:快速入门的DocumentRoot将是在安装期间创建的目录(该目录不能已经存在)。

数据库服务器配置

Drupal的数据库要求的主要点是它不支持旧版本的数据库服务器软件,但它支持软件本身的几种不同变体。快速入门需要配置MySQL或类似的数据库,并在数据库服务器内设置一个具有访问此数据库完整权限的用户。在许多最近的Linux发行版中,最终系统管理员账户(root)无需密码即可完全访问数据库服务器,但没有合理的办法将这些权限传递到快速入门配置中,并且在任何情况下,创建一个专门的管理用户都是最佳实践。一个典型的设置可能如下所示

sudo /usr/bin/mysql -e "DROP DATABASE IF EXISTS azqslampdb;"
sudo /usr/bin/mysql -e "CREATE USER 'azqslampdbadmin'@'localhost' IDENTIFIED BY 'turn_over_an_old_leaf_at_Ardtun';"
sudo /usr/bin/mysql -e "GRANT ALL ON azqslampdb.* TO 'azqslampdbadmin'@'localhost' WITH GRANT OPTION;"

一些旧代码示例将CREATE USERGRANT合并为一个命令,但MySQL 8不再支持这一点。WITH GRANT OPTION在实际中可能是不必要的,但并不隐含在ALL中。

使用Composer安装

创建一个目录是一个好主意,这个目录允许非特权系统用户写入,同时Web服务器也能访问。例如

cd /var/www
sudo mkdir drupalsites
sudo chown normaluser drupalsites

然后您可以直接在这个目录中安装快速入门

cd /var/www/drupalsites
composer create-project az-digital/az-quickstart-scaffolding:2.0.x-dev azqs --no-interaction --no-dev

这将产生一条长消息列表,看起来像

Creating a "az-digital/az-quickstart-scaffolding:2.0.x-dev" project at "./azqs"
Installing az-digital/az-quickstart-scaffolding (2.0.x-dev 238cc222d24ca1fdcbd1dbfc5ea249f4ae0ac440)
  - Downloading az-digital/az-quickstart-scaffolding (2.0.x-dev 238cc22)
  - Installing az-digital/az-quickstart-scaffolding (2.0.x-dev 238cc22): Extracting archive
Created project in /var/www/drupalsites/azqs
> QuickstartProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies                                 
Lock file operations: 240 installs, 0 updates, 0 removals
  - Locking alchemy/zippy (0.4.9)
  - Locking asm89/stack-cors (1.3.0)
  - Locking az-digital/arizona-bootstrap (v2.0.11)
  - Locking az-digital/az-quickstart-dev (dev-main 01fcacb)
  - Locking az-digital/az_quickstart (2.0.0-rc1)
 ...
   - Copy [web-root]/site.webmanifest from assets/site.webmanifest
Scaffolding files for az-digital/az-quickstart-scaffolding:
  - Copy [project-root]/.editorconfig from web/core/assets/scaffold/files/editorconfig
  - Copy [project-root]/.gitattributes from web/core/assets/scaffold/files/gitattributes
PHP CodeSniffer Config installed_paths set to ../../drupal/coder/coder_sniffer,../../phpcompatibility/php-compatibility,../../pheromone/phpcs-security-audit,../../sirbrillig/phpcs-variable-analysis
> QuickstartProject\composer\ScriptHandler::createRequiredFiles
Created a sites/default/settings.php file with chmod 0666
Created a sites/default/files directory with chmod 0777

这将创建一个顶级目录(例如,本例中的azqs),其中包含一个名为web的子目录,该子目录是Web服务器的实际DocumentRoot。此时更新Apache配置以反映这一点很重要,因此示例中会有一个DocumentRoot /var/www/drupalsites/azqs/web指令,以及相应的<Directory /var/www/drupalsites/azqs/web>(以设置如AllowOverride All等项)。一旦Apache使用新配置重启,有两种方式可以完成安装。网站本身将显示一个变化后的初始Drupal安装表单(标题为“亚利桑那快速启动”),允许您填写数据库用户和密码等详细信息;但初始构建包含流行的drush工具(位于供应商子目录中),因此可以使用类似以下命令的纯命令行安装:

/var/www/drupalsites/azqs/vendor/drush/drush/drush si --db-url=mysql://azqslampdbadmin:turn_over_an_old_leaf_at_Ardtun@localhost/azqslampdb --account-name=azadmin --account-pass=flour_85_percent_extraction --account-mail=webmaster@lamp.arizona.edu --site-mail=admin@development.lamp.arizona.edu --site-name='LAMP Development' --verbose --yes az_quickstart

在本例中,请注意,数据库凭据与之前设置的凭据匹配(此处显示的其他详细信息也应使用您自己的设置进行自定义)。目前的一个棘手细节是,您可能必须手动创建一个顶级config/sync目录(例如,本例中的/var/www/drupalsites/azqs/config/sync)。如果一切顺利,您将能够使用您设置的凭据登录到新网站。一旦登录,您需要立即关注的第一个问题是/admin/reports/status#error报告。可能有一个信任主机设置错误,需要手动更改设置文件,并且需要注意一些需要放宽权限的目录权限,以便Web服务器可以写入。

在Lando和VSCode中使用Xdebug

此存储库包含在Lando应用程序容器中运行Xdebug所需的配置。

要开始调试会话,请执行以下步骤

  1. 在VSCode中,转到扩展标签。
  2. 在搜索栏中输入@recommended
  3. 安装所有工作区推荐的扩展。
  4. 使用lando start启动Lando。
  5. 使用lando xdebug-on启动Xdebug。
  6. 在VSCode窗口的左下角,单击小绿色图标。
  7. 选择Attach to Running Container...并选择运行中的Lando实例的appserver
  8. 一旦新的VScode窗口弹出,回到扩展标签。
  9. 在搜索栏中输入@recommended
  10. 安装所有工作区推荐的扩展。
  11. 在VSCode中,转到调试标签。
  12. 单击右上角的Listen for XDebug旁边的绿色三角形。
  13. 在VSCode中,回到代码标签。
  14. 设置任何所需的断点。
  15. 您现在可以开始调试了。

分发更新

在现有网站上更新代码库时,您应始终检查是否需要应用分发更新。

这可以通过您网站上的管理员角色的用户在此路径上完成:/admin/config/development/distro

在页面上方的“高级”手风琴中更新代码库后,您应该能够看到要应用的上游更新。