dmk/typo3-composer-webroot

TYPO3 项目 webroot

0.1.0 2015-06-19 14:52 UTC

README

使用 Composers 创建基于文件的 TYPO3 安装。

用法

项目创建

使用 Composer 创建新的 TYPO3 项目

$ composer create-project dmk/typo3-composer-webroot my-project-webroot 12.4.x-dev

这将为 TYPO3 创建所需的文件夹,例如 fileadmin、typo3conf 等。

安装过程应如下所示

Created project in my-project-webroot
Loading composer repositories with package information
Installing dependencies
  - Installing typo3/cms-composer-installers

  - Installing typo3/cms-core (v12.4.0)

Writing lock file
Generating autoload files
Generating class alias map files

然后您将被询问是否要删除 Git 历史。我们应该这样做!

Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? Y

现在让我们进入项目目录

$ cd my-project-webroot

然后我们应该初始化一个新的仓库

$ git init

在完成自定义(见下文)后,我们进行初始提交

$ git add --all
$ git commit -m "initial commit"

添加新的项目远程仓库

$ git remote add origin [PATH_TO_PROJECT_REPOSITORY]

并将项目推送到仓库

$ git push --set-upstream origin main

特定的 DocRoot

在许多情况下,为项目定义一个 DocRoot 将非常有用。因此,公共文件将存储在那里,而所有其他文件(如 vendor)都位于外部。

该功能自 CmsComposerInstaller 1.2.2 版本以来新增,默认启用。

添加扩展

要从TER 安装扩展(例如 static_info_tables),可以简单地执行以下命令

composer require sjbr/static-info-tables:^6.9

请注意,如果您使用 typo3-ter 仓库,则必须将扩展密钥中的下划线 "_" 替换为破折号 "-"。

要从您的自己的仓库附加扩展,您必须首先将仓库添加到 composer.json 中。要添加功能强大的 MKSEARCH 扩展,您必须执行以下命令

$ composer config repositories.mksearch vcs https://github.com/DMKEBUSINESSGMBH/typo3-mksearch.git

请确保仓库中有一个如下的 composer.json 文件

{
    "name" : "dmk/mksearch",
    "type" : "typo3-cms-extension",
    "keywords" : ["TYPO3 CMS", "search", "Lucene", "Zend Lucene", "Apache Solr", "Solr", "Elasticsearch"],
    "homepage" : "http://www.dmk-ebusiness.de/",
    "license" : "GPL-2.0+",
    "replace": {
        "typo3-ter/mksearch": "*"
    }
}

现在您可以使用 require 命令安装扩展

composer require dmk/mksearch

最后,在 TYPO3 后端使用 TYPO3 扩展管理器安装扩展,将 composer.json、composer.lock、config/system/settings.php 添加到 git 并提交和推送更改。

自定义

  • 在 settings.php 中的 BE 部分替换 warning_email_addrexample@example.com
    • 别忘了创建地址
    • 最佳实践是在一个邮件列表中添加所有参与项目的成员
  • 替换 rn_base 扩展配置中的 fromEmailnoreply@domain.de
  • 在 settings.php 中替换 $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] 的 noreply@tld.de
  • 在 settings.php 中替换 $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = 'XXX.XXX.XXX.XXX'。
  • 在 .htaccess* 文件中将 XXX.XXX.XXX.XXX 替换为可以访问维护模式的系统的 IP。
  • 使用 .htaccess_* 作为您环境中的 .htaccess 文件。如果需要,请添加身份验证。
  • 使用所有安全关键数据(如数据库凭据)创建 config/system/credentials.php
    在 repo 根目录中的 Credentials.php.inst 中提供了一个示例。
  • 创建加密密钥并将密钥插入 Credentials.php(不要在 git 中存储安全关键数据)。
  • 可选地,在 MKTOOLS 扩展配置中启用一些改进。
  • 安装 gridelements 或类似扩展
  • 如果需要,安装 static_info_tables。当前版本 6.4.3 存在问题,因为静态导入失败,一旦安装了增强静态_countries 数据库表的扩展(如 mklib 所做的那样),它就会失败(见 https://forge.typo3.org/issues/82132)。作为解决方案,暂时卸载 mklib 以插入 static_info_tables 的静态数据。
  • 为mklog DevLog WatchDog设置调度任务(建议:每5分钟检查错误和更严重的问题,每天检查两次通知和更严重的问题)
  • 设置维护任务,如mklib任务以检测失败和冻结的任务,对数据库中的IP进行匿名化,对表和缓存框架进行垃圾回收,删除 typo3temp/rn_base/ 和 typo3temp/mktools/locks 目录中的旧文件。
  • 使用caretaker_instance扩展设置监控
  • 调整fehler.html的内容(用作5xx错误的ErrorDocument,以及在TYPO3处理页面不可用时)
  • 在TYPO3中提供以下页面:404.html(用作htaccess中的ErrorDocument和默认页面未找到处理时的404页面)以及/fehler(用作htaccess中的ErrorDocuments)
  • 当使用Let's Encrypt时,切换 .htaccess 中知名文件夹的 deny RewriteRule
  • 将 .htaccess_typo3 复制到您的typo3文件夹中,以便对安装工具进行访问限制(您需要在htaccess文件中配置白名单IP、htpasswd等,如您所愿)
  • 不要忘记为CLI设置应用程序上下文。这包括为调度cron命令设置它:TYPO3_CONTEXT="Production/Staging" ! test -e $pathToHtdocs/MAINTENACE_MODE && $pathToHtdocs/typo3/sysext/core/bin/typo3 scheduler:run。另外,您需要按照描述这里全局设置它。两者都是确保在任何情况下都拥有正确上下文的必要条件。
    • WEB中的上下文通过环境的 .htaccess 文件设置
    • 默认为Production。因此,通常您只需要在Production/Staging环境中设置CLI上下文。所有其他环境应该都很好。
  • 当网站托管在Mittwald服务器上时,可能需要从settings.php中删除$GLOBALS['TYPO3_CONF_VARS']['BE']['fileCreateMask']和$GLOBALS['TYPO3_CONF_VARS']['BE']['folderCreateMask'],并使用默认值。
  • 考虑使用Redis作为缓存后端
  • htaccess文件包含CSP(内容安全策略)头部。有BE和FE的单独头部。还有一个针对所有资产文件夹的单独策略,这些通常是文件存储的根文件夹。请将此文件放入必要的文件夹中。FE的策略可能需要调整。您可能首先希望切换到仅报告模式,并跟踪策略违规。