guzaba-platform / guzaba-platform-docs
GuzabaPlatform 文档
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
。这将安装所有这些。
- guzaba-platform/guzaba-platform - 本身是 GuzabaPlatform
- guzaba-platform/guzaba-platform-installer - GuzabaPlatform 安装程序。它总是与 GuZabaPlatform 一起安装。其包类型设置为 "composer-plugin"。
- guzaba-platform/guzaba-platform-docs - GuzabaPlatform 文档
- guzaba-platform/guzaba-platform-tests - GuzabaPlatform 测试
- guzaba/guzaba2 - 驱动 GuZabaPlatform 的 Guzaba 2 框架
可用组件列表
以下 GuZabaPlatform 组件作为包通过 Packagist 提供,并可以使用 composer require {module_name}
安装。目前这些模块功能齐全但缺乏设计。GuzabaPlatform 组件在 composer.json 中将包类型设置为 "guzaba-platform-component",并且它们的 GitHub 仓库名称以 "component" 开头。
- guzaba-platform/app-server-monitor - 应用服务器监控器
- guzaba-platform/assets - 数字资产管理组件
- guzaba-platform/classes - 提供类 ACL 权限管理
- guzaba-platform/controllers - 提供控制器 ACL 权限管理
- guzaba-platform/crud - CRUD 操作和 ACL 权限管理
- guzaba-platform/navigation - 管理导航
- guzaba-platform/request-caching - 请求缓存组件(注入新的中间件)
- guzaba-platform/roles - 角色管理组件
- guzaba-platform/users - 用户管理组件
正在开发中的组件列表
以下模块可以使用 composer require {模块名称}
进行安装。
- guzaba-platform/cart - 购物车组件
- guzaba-platform/catalog - 目录组件(可用作产品目录/商店前台)
- guzaba-platform/cms - CMS组件
- guzaba-platform/payments-integrations - 支付集成组件
- guzaba-platform/payments-integration-epaybg - 与Epay.bg组件的支付集成
- guzaba-platform/tags - 标签组件
- [guzaba-platform/facebook-login]
- [guzaba-platform/github-login]
- [guzaba-platform/google-login]
- [guzaba-platform/twitter-login]
- [guzaba-platform/logs-browser]
- [guzaba-platform/object-aliases-manager]
测试组件列表
按照 VENDOR/COMPONENT-tests 的模式将测试放在单独的组件中。默认情况下,每个组件都会安装其测试组件(如果有的话)。
- [guzaba-platform/guzaba-platform-tests]
- [guzaba-platform/cms-tests]
模块列表
由GuzabaPlatform使用但不是GuzabaPlatform组件的附加包。这些包的包类型设置为“库”,存储库名称以“模块”开头。这些仍然可以使用 composer require
单独安装,但通常这些将作为上述列出的组件的一部分安装。
- guzaba-platform/cart-base - 购物车模块 - 包含接口
- guzaba-platform/catalog-base - 目录模块 - 包含接口
- guzaba-platform/components-base - 组件模块 - 包含每个GuzabaPlatform模块需要实现的接口
- guzaba-platform/payments-integrations-base - 支付集成模块 - 包含接口
- guzaba-platform/tags-base - 标签模块 - 包含接口
基本主题
组件开发主题
- [新组件]
- [新测试组件]