guzaba-platform/guzaba-platform-docs

GuzabaPlatform 文档

dev-master 2020-08-15 21:24 UTC

This package is auto-updated.

Last update: 2024-09-16 05:47:26 UTC


README

简介

GuzabaPlatform 是一个基于插件的系统,用于构建各种网络应用,从展示网站到企业应用。它基于 Guzaba 2 框架,在 Swoole 上运行,并使用 Vue 进行前端开发。

Swoole 允许与传统的 PHP 设置相比在速度和并发性方面有显著提升,Vue 则为应用提供类似用户的体验。

GuzabaPlatform 处于非常早期的开发阶段。有许多未完成的部分,API 可能会更改,目前还没有测试覆盖率!文档很少。

如果您有任何问题、发现错误、有功能请求或无法使当前的开发版本工作,请 提出问题

目标

GuzabaPlatform 的目标是提供构建基于 Swoole 的应用所需的一切,无论是简单的网站、微服务还是大型应用。它还将包含多个常用组件,以便您可以在不编写常见功能的情况下开始构建应用。

由于其基于 Swoole 和 Guzaba 2 框架,它提供以下功能:

  • 内存缓存 - Swoole 的持久性允许内存缓存!不再需要共享内存、APCU、Redis... 不再需要序列化和反序列化
  • 数据库连接池 - Swoole 使用协程执行代码,并具有持久内存模型,因此无需在每次请求上进行连接初始化。
  • 同时执行任务 - 数据库查询、API 请求(再次使用协程)
  • SBRM(基于范围的资源管理) - 提供自动事务回滚,从而避免手动捕获所有可能抛出异常的情况并手动调用 rollback()。同样适用于连接管理 - 这些连接将 自动释放(考虑父范围!)
  • 嵌套事务(通过保存点模拟) - 这允许自动部分(嵌套)回滚事务
  • 事务事件 - 可以在 SAVE、COMMIT、ROLLBACK 上添加回调。
  • ActiveRecord 对象在事务回滚时回滚
  • ACL(访问控制列表)
  • RBAC(基于角色的访问控制 - 目前正在进行中)
  • MVC(模型-视图-控制器)
  • 简化 IPC(进程间通信) - Swoole 有多个工作者,某些操作需要在所有这些工作者上执行

GuzabaPlatform 还提供(通过 composer 安装包)企业应用的基本组件,例如

  • 对象和类的权限管理(静态方法也可以有权限!)
  • 角色层次模型
  • 用户和角色管理
  • 应用服务器监控和管理
  • CMS
  • CRUD
  • 资产

它还将提供一些基本的/常用模块,如

  • 目录/商店
  • 标签
  • 与各种支付提供商的集成
  • 与各种提供商的登录集成

有关可用模块的完整列表,请参阅 部分。

容器部署

有一个docker-compose文件,其中包含预设的环境变量,位于./app/dockerfiles/GuzabaPlatformDev/

在启动应用程序之前,它需要在主机系统上的一个空目录中部署。

$ echo "{}">composer.json
$ composer config minimum-stability dev
$ composer require guzaba-platform/guzaba-platform

这将安装GuzabaPlatform并运行GuzabaPlatformInstaller包,该包将在项目根目录中创建所需的目录和文件。由于需要从任何环境中引导应用程序,且应用程序总是将在已包含所有必需内容的容器中启动,因此composer.json文件中没有强制要求PHP 7.4和Swoole。

要在容器中部署应用程序,请执行以下命令

$ ./app/bin/start_containers

这将启动以下容器

  • swoole(以交互模式)在端口8081上
  • redis在端口6379上(导出以供调试目的)
  • mysql在端口3306上(导出以供调试目的)
  • phpmyadmin在端口8085上
  • phpredisadmin在端口8086上

phpmyadmin的登录凭证是“root”:“somerootpass”。

phpredisadmin的登录凭证是“admin”:“admin”。

注意 - 首次运行:在应用程序首次启动时,需要在MySQL中导入数据库。这可以通过phpmyadmin或直接通过暴露的端口3306完成。数据库转储文件位于./app/database/guzaba2.sql

在容器启动后,端口8081上还没有运行应用程序。这需要手动启动。要进入容器

$ docker exec -it guzabaplatformdev_swoole_1 /bin/bash

如果上述命令产生错误,这最可能是与容器名称有关。它可能不同。要查找正确的名称,请列出所有正在运行的容器

$ docker ps

在生产环境中运行

注意 - 首次在生产环境中运行:前端需要编译 - 在容器中执行

$ cd /home/local/app/public_src
$ ./build_prod

不需要在./app/registry中设置本地配置,因为环境文件中包含所有需要的变量。

要启动容器中的应用程序,请执行

$ /home/local/app/bin/start_server

还支持H2O代理。这可以用来将静态文件的处理卸载到H2O,并提高SSL性能。与SSL一起运行时,Swoole比H2O慢。当H2O作为代理运行时,它处理SSL请求并将普通请求转发到Swoole。要启动H2O代理,请执行

$ ./app/dockerfiles/h2o_proxy/start_h2o_proxy

它开始在端口8082上服务HTTPS请求。

在这个设置中,所有请求都由H2O处理,只有/api/请求被转发到Swoole。

以开发模式运行

要启动热重载nodejs服务器

$ cd ./app/public_src
$ npm run start

直接启动应用程序

还有一个docker-compose文件,允许与应用程序一起启动其他容器(而不是以交互模式启动swoole容器)。

$ /home/local/app/bin/start_server_in_container

手动安装

# require GuzabaPlatform
$ composer require guzaba-platform/guzaba-platform

# Create local configuration
$ cp app/registry/local.php.dist app/registry/local.php

# Build the front end
$ app/public_src/build_prod

更改你的app/registry/local.php中的设置,以便可以连接到MySQL和Redis服务器。

运行测试

要运行所有GuzabaPlatform包的所有测试,请执行

$ app/bin/run_all_tests

当前开发状态

  • 权限正在工作,但目前尚未配置或强制执行
  • 登录需要改进和额外的安全性
  • 注册需要改进
  • 管理员界面中的组件接口尚未完成

GuZabaPlatform 由多个 Composer 包组成。其中一些是 GuZabaPlatform 的组件,另一些则是依赖项,还有一些主要/特殊包,所有这些都可以在下文中找到。

具有前端(Vue)的包将通过 composer 命令自动安装和集成,无需任何额外操作。

主要包

以下包既不是 GuZabaPlatform 组件,也不是这些包使用的基模块。它们可以通过 composer require 安装。通常只需要安装 GuZabaPlatform,使用 composer require guzaba-platform/guzaba-platform。这将安装所有这些。

可用组件列表

以下 GuZabaPlatform 组件作为包通过 Packagist 提供,并可以使用 composer require {module_name} 安装。目前这些模块功能齐全但缺乏设计。GuzabaPlatform 组件在 composer.json 中将包类型设置为 "guzaba-platform-component",并且它们的 GitHub 仓库名称以 "component" 开头。

正在开发中的组件列表

以下模块可以使用 composer require {模块名称} 进行安装。

测试组件列表

按照 VENDOR/COMPONENT-tests 的模式将测试放在单独的组件中。默认情况下,每个组件都会安装其测试组件(如果有的话)。

  • [guzaba-platform/guzaba-platform-tests]
  • [guzaba-platform/cms-tests]

模块列表

由GuzabaPlatform使用但不是GuzabaPlatform组件的附加包。这些包的包类型设置为“库”,存储库名称以“模块”开头。这些仍然可以使用 composer require 单独安装,但通常这些将作为上述列出的组件的一部分安装。

基本主题

组件开发主题

  • [新组件]
  • [新测试组件]