SaaS平台开发手册¶
本手册指引用户,在社区版已有功能的基础上进行SAAS应用开发,首先部署OpsAny社区版,然后添加开发环境,进行开发。可以直接调用OpsAny社区版中API。
- OpsAny社区版部署
- 开发环境至少具备8C、16G内存的资源。
第一步:增加测试环境PaaSAgent¶
1.修改PaaS 配置文件
vim /data/opsany/conf/opsany-paas/paas/settings_production.py.paas
# 下面的CSRF修改为False
CSRF_COOKIE_HTTPONLY = False
# 重启 PaaS 容器
docker restart opsany-paas-paas
2.使用脚本自动化部署测试环境PaaSAgent
cd /opt/opsany-paas/install
./saas-dev-install.sh install
PaaSAgent为PaaS平台的Agent,用于进行SaaS的部署和管理,默认OpsAny社区版部署时不安装该服务,仅用于开发和测试环境使用。该脚本会安装PaaSAgent和RabbitMQ。
3.界面上确认
通过OpsAny社区版的导航,打开【开发中心】-选择【服务器信息】-查看类别为测试服务器的配置正常正确,点击刷新按钮,提示刷新成功即可。
第二步:开始SaaS应用开发¶
社区版提供了符合OpsAny设计风格的前端开发框架和已经集成完毕的后端开发框架。可以根据开发框架中的说明,开始进行本地开发。
- 前端开发框架简介: Vue3.0 + Ant Design of Vue
- 后端开发框架: Python3.12 + Django4.5 + MySQL、MongoDB、Redis
后端开发环境¶
OpsAny后端开发框架,提供给用户之间在OpsAny社区版上开发的能力,集成了OpsAny社区版的统一认证、统一权限、消息通知、动态主题、国际化等内容,实现开箱即用。
前端开发环境¶
本框架为OpsAny标准的SaaS前端开发框架,集成了OpsAny的用户体系、消息通知、菜单权限体系等,开箱即用,可以快速开发SaaS应用。
为了方便 Vibe Coding。2026 年的新开发框架已经将前端的框架代码,放置在了后端框架中的frontend目录下。
测试环境PaaSAgent部署SaaS原理¶
v2.0.0之前版本的SaaS的部署和更新,主要依靠PaaSAgent服务,PaaSAgent顾名思义是PaaS的Agent,是PaaS平台执行SaaS维护的一个Agent,一个PaaS平台可以有测试环境和正式环境的PaaSAgent。目前开发和测试环境依然采用该模式进行部署。
PaaSAgent简介¶
paasagent目录是PaaS平台中应用引擎(appengine)对应的agent模块源码目录 主要作用是: - agent需要部署在应用服务器上 - 负责接收上层应用引擎(appengine)的请求指令,执行SaaS应用的部署和下架等任务操作(应用运行时环境的构建和进程托管)
技术栈: - framework: labstack/echo - python run time: virtualenv, uwsgi
依赖说明: - paas: 使用内置应用时,从paas服务下载用户上传的saas部署包。 - appengine: 需要调用appengine的接口, 回写SaaS应用的部署日志。
目录结构: 默认安装完毕paasagent会挂载主机的/data/opsany/paas_agent_test/目录。
.
├── apps
│ ├── Envs # 存放每个SaaS的 Python 虚拟环境
│ ├── logs # 存放每个SaaS的日志。
│ └── projects # 存放每个SaaS的代码和uwsgi配置。
├── paas_agent_config.yaml # paasagent的配置文件,SID和Token 需要和开发中心,服务器信息中的字段对应。sid 对应服务器 ID。
├── paasagent.conf # Nginx配置文件,用于访问uwsgi。
└── saasapp # 用于开发中心,内置应用SaaS包的存放。是一个包含了Python依赖和代码的压缩包。
PaaSAgent模式下的SaaS包部署流程¶
当开发者在【开发中心】-【内置应用】点击部署时。Appengine 会请求 PaaSAgent。 PaaSAgent会调用/opt/opsany/paas-agent/etc/build/virtualenv/build脚本,为每个SaaS创建Python虚拟环境,并且使用Supervisor+uwsgi启动。
- 点击上传按钮时,上传SaaS包。包会被保存到PaaS容器中的/opt/opsany/paas/paas/media/saas_files/目录下。
- 点击部署按钮时,PaaSAgent从paas服务下载该文件,保存到paasagent容器的目录下。 具体paas的地址是在paas_agent_config.yaml中配置的PAAS_SERVER_URL参数获取。
- paasagent在目录下创建对应saas的Python虚拟环境。
- paasagent解压下载的saas包,并安装pkgs下所有的依赖包。
- paasagent为saas创建一个supervisor服务,自动生成supervisor的ini配置文件。
- paasagent通过supervisor启动saas服务。
- 执行django migration操作。
SaaS使用uwsgi启动后,访问时通过PaaSAgent的Nginx进行转发。所以PaaSAgent容器重启后,需要手工启动所有的SaaS平台。
生产Docker容器模式下的SaaS包部署流程¶
由于PaaSAgent本身的一些缺点,目前OpsAny的SaaS实际部署时已经不再采用PaaSAgent的方式,仅开发环境使用该方式。目前使用纯 Docker 容器。原理如下:
- 使用/opt/opsany-paas/install/register_online_saas.py脚本自动在平台上注册应用。(相当于开发时的创建应用)
- 使用 Docker 直接启动该容器(相当于 PaaSAgent 模式下的 2-6 的步骤)
- 使用脚本执行 Django Migration 操作。(相当于 PaaSAgent 模式下的 7 的步骤)
- 修改 Openresty 配置文件vim /data/opsany/conf/nginx-conf.d/opsany_paas.conf,增加新开发的 SaaS 的访问配置。
以上通过 Shell 脚本进行部署,替代了原本 PaaSAgent 执行的部署操作,更新也是类似,只是少了创建应用的步骤。但是多了 Docker 容器的构建和配置工作。可以参考https://gitee.com/unixhot/opsany-saas-framework/Docker目录下的案例。
生产PaaSAgent模式下的SaaS包部署¶
考虑到一些用户想生产环境依然使用 PaaSAgent 的方式,目前脚本增加了生产 PaaSAgent 的部署。
# 该参数会再启动一个opsany-paas-paasagent-prod的容器,用于运行生产环境的 SaaS。
./saas-dev-install.sh prod
这样可以避免复杂的 Docker 容器的制作过程,但是我依然推荐使用 Docker 容器模式进行生产环境的部署。
