Web服务打包exe
本文最后更新于:2024年7月6日 早上
背景
项目组开发的一个支持多人协作工具类的web应用,产品经理希望开放出去给其他人试用,并且支持私有化部署。当我们开发一个 Web 服务时,通常需要在服务器上运行我们的代码。但是,有时我们需要将我们的 Web 服务打包成一个可执行文件(.exe),这样我们就可以在没有 Python 环境的计算机上运行它。
这个系统的当前包含的组件如下:
- 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/