Web服务打包exe

本文最后更新于:2024年2月17日 下午

背景

项目组开发的一个支持多人协作工具类的web应用,产品经理希望开放出去给其他人试用,并且支持私有化部署。当我们开发一个 Web 服务时,通常需要在服务器上运行我们的代码。但是,有时我们需要将我们的 Web 服务打包成一个可执行文件(.exe),这样我们就可以在没有 Python 环境的计算机上运行它。

ZBrvGj.png

这个系统的当前包含的组件如下:

  • web 后端(python、golang)
  • vue
  • mysql
  • redis
  • minio

当然docker是一个很好的手段来提供跨平台的环境,但是docker的使用还是有一定的门槛,然而我们的目标用户确实有很大的比例没有计算机知识,所以对于win环境下exe直接安装还是有需求的。

最后我们提供了以下这些私有化部署手段:

  • docker 单容器
  • docker compose (推荐用于生产)
  • exe绿色安装包

docker镜像的构建、compose的编排就已经是很常见的,就不做赘述。web服务的exe打包过程倒是花费了一点时间,也算是有趣的体验,记录如下。

Python

  • 截止2023,Nuitka 对celery与paddlepaddle的实测支持不佳,最终淘汰
  • pyinstaller 将后端web服务进行打包,auto-py-to-exe也是很方便的插件
  • uwsgi、gunicorn均不支持win,使用Waitress替代

redis

  • redis官方并不提供win下的安装包,使用redis win替代

mysql

  • 使用mariadb的win绿色包
  • 对于初始化用户需要使用mysql_install_db.exe,然后指定好数据目录,以便于后期的打包。

Golang

  • go跨平台打包编译过于丝滑,没有什么阻碍。

nginx

  • nginx的win下的exe

EXE生成

  • 编写一个bat脚本依次启动上述exe
  • 使用bat-to-exe最终生成一个可执行的win包,大功告成。

Web服务打包exe
https://yance.wiki/exe/
作者
Yance Huang
发布于
2023年3月27日
许可协议