跳到内容

最新提交

 

历史

历史
67行(53个位置)·6.84 KB

README.标记

文件元数据和控件

67行(53个位置)·6.84 KB

Serendipity-一个可靠、安全且可扩展的PHP博客

巧合是一个PHP驱动的博客引擎,为用户提供了一种维护博客的简单方法。虽然默认包是为休闲博客设计的,但Serendipity提供了一个可扩展的框架,具有专业应用程序的强大功能。

偶然事件示例

进行中的工作-复合动作

重要事项:该分支机构正在进行中。这是一个转移的实验“常用”作曲家项目的项目结构默认为:

  • 项目根目录仅包含核心项目文件
  • public是包含PHP文件的文档根
  • src而不是include
  • 供应商而不是捆绑的库
  • 将serendipity_config.inc.php移动到src/

如果您以前使用过GIT的Serendipity,那么您需要理想地指出您的文档root到公众/子目录(或浏览器),因为这个存储库不再是PHP文件的根。

你现在还需要跑步编写器安装你自己,图书馆不会不再是我们存储库中的容器。

在处理时,此存储库中的所有内容可能都不会运行。如果您不知道发生了什么,则不应使用此GIT分支。:-)

(使用GIT主要的在这种情况下)

概念

基本思想是:

  • DDEV为开发人员/贡献者提供了一种简单而集中的方法,可以根据所有要求启动Serendipity安装。只需执行“ddev-start”,它就会为您提供一个URL,以便在Docker容器中使用。附带PHP、MySQL、Composer等。
  • “bundle-libs”应该从所有外部依赖项中清空。我们自己的库、修补过的库或自定义文件可能会保留在那里。
  • 外部依赖关系最好使用供应商/公共位置
    • 然而:这可能会给需要bundle-libs文件的插件和其他代码带来麻烦/
    • 理想情况下,如果核心完成所有自动加载/包含/要求,那么从技术上讲,我们应该能够移动它
    • 我们需要在外部插件中搜索字符串“bundle-libs”,看看这会有多大影响
    • 如果全部失败,我们可以更改composer.json并设置配置供应商目录束状物(然后我们的“自定义”代码需要移动到不同的目录,即“deps”、“build”或类似的目录)
  • 想法是公众的documentroot仅包含存根文件(index.php、serendipity_admin.php…)
  • 前一个“include/”目录应该移动到如下位置型钢混凝土。这些文件仅包含在内,不应包含在文档根目录中
  • 这应该允许我们以后让项目使用作曲家来要求偶然性。我们的文件将包含在供应商/serendipity/s9y
  • 这意味着我们需要一个类似S9Y_DATA_PATH的变量,该变量指向./src型(针对开发商和GIT回购用户)或./vendor/serendipity/s9y/src(作曲家用户)以获取更多内容
  • 存储目录(不通过HTTP访问)也应该位于公众的目录(模板_c,sql语言,,文档). 这些目录引用也需要抽象,理想情况下使用S9Y_DATA_PATH,然后使用'{S9Y_DATA_PATH}//templates_c}”来解析两种使用场景(GIT和composer)的位置
  • 稍后,我们希望将linting、静态代码分析作为CI管道的一部分(GitHub工作流)
  • 我们还需要对composer.lock更新进行自动依赖项检查
  • 发布过程应该通过GitHub工作流执行,自动进行打包和资产构建(什么bundle-libs/create_release.sh包现在做了)
  • 如果所有这些都有效,我们还可以使用CI管道来构建“官方”Docker映像。然后,这些将只装载数据存储(上传,模板_c,附加插件存储目录serendipity_config_local.inc.php),并从我们的官方图像中获取其余内容。这样就可以通过切换容器轻松进行更新。只有“用户生成的数据”(如上述文件和目录)需要装入容器外。docker图像甚至可以基于DDEV容器,这样我们就不必创建自己的Dockerfile。同样,使用Nginx/Appache+PHP+数据库创建一个简单的Dockerfile也不难。
  • 也许我们可以利用dotenv.env(英语)文件来指定目录位置,也可以由Docker容器计算。
  • 理想情况下,插件可以是不同的编写程序包,并且是必需的。核心插件可以保留在这个mono-repo中。我们可以为核心插件创建子树分割,这样就可以需要这些。CI将自动填充子树拆分存储库。我们当前的“additional_plugins”存储库也将是一个单独的monorepo,每个插件都有子树分割
  • 这将使斯巴达克斯过时;composer使用可以使用composer平台来管理插件。对于没有编写器的用户,我们可以为每个插件制作CI build.zip存档文件,这些文件可以下载。此外,单url github下载仍然是“Spartacus legacy-mode”的一个选项
  • 为了让插件工作,我们可以创建一个“serendipity-composer-installer”作曲家插件,注册作曲家类型“serendip ity-plugin”。然后,安装程序可以执行代码迁移,可能会创建所需的符号链接(到“custom_plugins”目录,以便这些符号链接来自vendor/serendipity/plugin-xxx)
  • 这同样适用于主题,只是目录是其他东西,以及它自己的monorepo
  • 现有插件中的路径引用将是一个问题。我们可以在新的核心版本中更改任何内容,但不能更改现有插件。这要么是一个(非常严厉的)突破性的更改,要么我们可能需要类似热修补代理类的东西。因此,我们导入旧插件,对文件进行自检/静态分析,替换路径,将修改后的文件保存在临时文件夹中,并从那里实际加载插件,而不是从它们的实际位置加载插件。当然,这将涉及某种缓存和自动再生,以便插件更新始终使用文件的最新版本,而不是可能过时的代理类。实际上,这可能很有趣。
  • 当前用户的迁移将更加困难,因为他们肯定需要移动目录/文件。这需要尽可能简单。
  • 一旦我们完成了编写器集成并运行,我们就可以为“重置智能缓存”、“执行DB迁移”、“创建空数据库”、“导出/导入数据库”等操作提供自己的Symfony控制台脚本

待办事项:

  • 适应捆绑列表/vs供应商的变化/
  • 将更改从include/调整为src/
  • 创建基本ddev设置
  • 找到剩余的bundle-libs作为composer包,并将其放入供应商/
  • 适应根级别templates_c、uploads、sql和其他核心目录
  • 验证s9y_include_path和原始的“共享安装”(这应该使我们能够使用composer,因为它已经让一些s9y_DATA_path等移动了)。