islandora/islandora-starter-site

Islandora网站的模板项目。

1.9.0 2024-06-12 18:47 UTC

README

Asset 2

Islandora Starter Site

Minimum PHP Version Contribution Guidelines LICENSE

为Islandora网站提供的Drupal配置起点。

什么是起点网站?

起点网站是一个可定制的Drupal网站,展示了Islandora的功能。它可以作为您网站的模板,但一旦开始使用,您的网站(及其所有配置)将由您管理。就像Microsoft Word文档的模板一样,您在开始使用模板之后所做的更改不能且不会自动转移到您的副本(在这种情况下,您的Islandora网站)中。如果您需要此类服务,请查看我们的服务提供商。但是,如果您愿意,我们将努力记录和传达更改。

起点网站包含设置Drupal网站的说明,但一些功能需要外部服务的存在,如Fedora、Solr等(见下面的安装说明)。

起点网站现在使用类似语义的版本控制,但这只是为了与安装它的工具兼容。当起点网站需要其创建环境(Playbook/ISLE)的新功能时,它将更改主要版本。

快速安装

要启动一个完全功能性的Islandora起点网站以及支持它的(非Drupal)工具和服务,请尝试以下Islandora部署工具之一

  • Islandora Playbook - 基于Ansible,可在本地与VirtualBox和Vagrant一起工作。
    • 使用starter(默认)或starter_dev选项
  • ISLE-DC - 基于 Docker
    • 使用make startermake starter_dev选项
  • ISLE 网站模板 - 基于 Docker
    • 默认的安装说明使用起点网站。

手动安装

起点网站中的配置文件假定有一整套外部服务。如果您不需要所有外部服务(如Fedora),则可以跳过它们,但您也需要调整Drupal配置。此类部分安装超出了本文件的范畴。

先决条件

  1. 已安装PHP和Composer
  2. 已安装并配置了数据库服务器
    • 起点网站安装了MySQL/MariaDB/Percona(mysql)、PostgreSQL(pgsql)和SQLite(sqlite)的驱动程序。使用其他(贡献)驱动程序需要额外的安装/配置,且超出了本文件的范畴。
  3. Fedora Commons (FCRepo)已安装
    1. Syn已安装并使用密钥进行了配置。
  4. 已安装Triplestore
  5. 已安装Cantaloupe
    1. 期望IIIF URL可解析,并接受完整的URL作为资源ID。如果URL不是http://127.0.0.1:8080/cantaloupe/iiif/2,则需要设置(见使用步骤5)。
  6. ActiveMQ/Alpaca/Crayfish安装
    1. 期望ActiveMQ在tcp URL上监听STOMP消息。如果不是默认的tcp://127.0.0.1:61613,则需要设置(见使用步骤5)
    2. 队列(及其基础(微)服务)配置得当
  1. 兼容Drupal的Web服务器
  2. 已安装FITS Web ServiceCrayFits
  3. 安装了Solr服务器或可用,并已设置核心
    • 有关Drupal的Search API Solr模块的更多详细信息。
    • 如果不在127.0.0.1:8983,或者核心名称不是ISLANDORA,则需要设置相关信息(参见使用步骤5)

使用方法

  1. 基于此存储库创建一个项目

    composer create-project islandora/islandora-starter-site

    这应该

    1. 获取代码和所有PHP依赖项,
    2. 搭建站点,并确保default站点的settings.php指向我们包含的配置,以便进行下一步。
  2. 在站点的settings.php中配置Flysystem的fedora方案

    $settings['flysystem'] = [
      'fedora' => [
        'driver' => 'fedora',
        'config' => [
          'root' => 'http://127.0.0.1:8080/fcrepo/rest/',
        ],
      ],
    ];

    http://127.0.0.1:8080更改为指向您的Fedora安装。

  3. 安装站点

    composer exec -- drush site:install --existing-config

    在此步骤之后,您应该配置您的Web服务器以将web/目录作为其文档根。

  4. fedoraadmin角色添加(或创建)用户;例如,为默认的admin用户分配角色

    composer exec -- drush user:role:add fedoraadmin admin
  5. 配置外部服务的位置。

使用任何方法(GUI、drush csetsettings.php中的配置覆盖...)更改以下Drupal配置为您的值

  1. 通过以下方式之一(或通过某些组合)使Syn/JWT密钥可供我们的配置使用

    1. 将私钥符号链接到/opt/islandora/auth/private.key;或者,
    2. 将适当的定位设置为key.key.islandora_rsa_key key_provider_settings.file_location(使用步骤5中列出的方法或/admin/config/system/keys/manage/islandora_rsa_key
  2. 运行带有islandora标签的迁移,以填充一些分类,指定针对具有fedoraadmin角色的用户--userid

    composer exec -- drush migrate:import --userid=1 --tag=islandora

这将为您提供一个带有以下内容的起始Islandora站点

  • 一个基本的节点包,用于表示存储库内容
  • 一些媒体类型,用于在Fedora中存储内容
  • RDF和JSON-LD映射,用于各种实体以支持在Fedora中的存储、Triplestore索引和客户端请求。

安装后清理

  1. 卸载您未使用的数据库驱动模块;例如,如果您使用mysql来使用兼容MySQL的数据库,则应明确卸载pgsql(PostgreSQL)和sqlite(SQLite)模块

    composer exec -- drush pm:uninstall pgsql sqlite

已知问题

安装期间的警告/错误

一些模块目前对hook_install()调用时的系统状态有一些不良的期望,因此发出了一些消息

$ composer exec -- drush site:install --existing-config --db-url=mysql://user:***@localhost/db

 You are about to:
 * DROP all tables in your 'db' database.

 Do you want to continue? (yes/no) [yes]:
 >

 [notice] Starting Drupal installation. This takes a while.
 [notice] Performed install task: install_select_language
 [notice] Performed install task: install_select_profile
 [notice] Performed install task: install_load_profile
 [notice] Performed install task: install_verify_requirements
 [notice] Performed install task: install_settings_form
 [notice] Performed install task: install_verify_database_ready
 [notice] Performed install task: install_base_system
 [notice] Performed install task: install_bootstrap_full
 [error]  The Flysystem driver is missing.
 [warning] Could not find required jsonld.settings to add default RDF namespaces.
 [notice] Performed install task: install_config_import_batch
 [notice] Performed install task: install_config_download_translations
 [notice] Performed install task: install_config_revert_install_changes
 [notice] Performed install task: install_configure_form
 [notice] Performed install task: install_finished
 [success] Installation complete.  User name: admin  User password: ***
$

有两个“意外”的消息

  • [错误] Flysystem驱动程序丢失。
    • 似乎来自flysystem模块的hook_install()实现,其中它尝试确保所有定义的方案都处于可用的状态;然而,所有模块尚未启用(在特定情况下,islandora实际上并未启用,因此fedora驱动程序是未知的),因此导致发出此消息。当命令退出时,islandora模块启用的,因此此消息应该被忽略。
  • [警告] 找不到所需的jsonld.settings以添加默认RDF命名空间。
    • 似乎来自islandora模块的hook_install()实现,其中它尝试修改jsonld模块的jsonld.settings配置对象以添加一些命名空间;然而,由于使用--existing-config安装模块时配置尚未安装,因此它未能找到要修改的目标配置。由于导出,jsonld.settings已经包含修改(撰写时),因此此警告可以忽略。

总结:这两个消息似乎可以忽略。

补丁

如果需要补丁(外部或内部),可以使用composer-patches插件自动应用。Starter Site中包含的任何补丁都应在此部分中完全描述(包括何时应删除它们)。

  • 目前没有。

持续项目维护

预计将使用Composer来管理Drupal及其扩展,包括Islandora模块系列。Drupal项目已经记录了该空间中的许多交互,所以我们只在这里列出并总结。

使用Composer安装Drupal和管理依赖关系

  • "安装"描述

    • Composer的create-project命令,如上所述,用于使用此"入门站点"项目安装;以及
    • 如上所述的drush site:install/drush si命令,用于通过命令行安装Drupal。
  • "管理",描述

    通常,使用Composer的update命令根据composer.json中的规范更新扩展,并根据需要使用Composer的require命令更改这些规范以跨越主要版本边界。

还建议监控和/或订阅Drupal的安全通告,以了解何时可能需要更新。

文档

有关此生态系统的更多文档可在Islandora文档网站上找到。

故障排除/问题

遇到问题或解决了问题?请查看Islandora Google Groups以获取解决方案。

开发

如果您想贡献,请通过参加我们每周的技术电话来参与。我们很高兴听到您的声音!

如果您想为项目贡献代码,您需要签署Islandora Foundation的贡献者许可协议企业贡献者许可协议。有关更多信息,请参阅islandora-community wiki上的贡献者许可协议页面。

我们建议使用islandora-playbook开始。

通用入门站点开发流程

对于本入门站点的开发,我们预计将采用某种特定的流程,以避免其他功能和模块渗入基本配置。预期的流程应该是

  1. 使用入门站点配置环境

    • 此时,可能需要用启动站点的代码库克隆来替换环境中的启动站点安装,以避免手动将更改复制到克隆中。
  2. 导入启动站点的配置

    1. 这应该会覆盖配置过程所做的任何配置,包括禁用任何不应一般启用的模块,并安装那些应该启用的模块。

    2. 这可以通过启动站点目录中的命令来完成,例如

      composer exec -- drush config:import sync
  3. 执行所需更改,例如

    • 使用composer管理依赖项
      • 如果在更新任何Drupal扩展后,应随后运行Drupal的更新过程,以防有更新钩子需要运行,这些钩子可能会更新配置。
    • 在网站上执行配置
  4. 导出网站的配置,以捕获任何更改的配置

    composer exec -- drush config:export sync
  5. config/sync目录(及其内容)和composer.jsoncomposer.lock文件复制到启动站点的git仓库克隆中,提交它们,推送到分支并创建一个pull request。

    • 如果环境中的启动站点安装被代码库克隆替换,您应该可以跳过复制步骤,只需提交您的更改,推送到分支并创建一个pull request到上游仓库。

定期,预计将在原始仓库上发布/铸造/标记版本;然而,重要的是要注意,计划不支持跨启动站点版本的自动化更新。话虽如此,我们计划包括变更日志,说明自上次发布以来引入的更改如何影响希望将更改/引入的功能纳入自己网站的用户。

开发模块

一些模块包含在我们的require-dev部分中,但未安装到Drupal网站上,因为它们可能具有通用性,但尤其是在开发方面。包括:

  • config_inspector:帮助识别定义的架构和活动配置之间的潜在问题。
  • devel:在开发期间用于杂项任务的块和标签
  • restui:核心rest模块的配置辅助程序

这些模块可以通过GUI或CLI启用;然而,在执行任何类型的配置导出之前,它们应该被禁用,以避免其启用状态泄漏到配置中。

许可

GPLv2