惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

MadLife

算法部署从docker到K8s 聊一聊:Prometheus监控系统 聊一聊:AI时代的前夜 聊一聊:我眼中的数据中台 内网ubuntu环境下离线部署K8s 聊一聊:FaaS 在大规模网络爬虫的实践 聊一聊:Golang 使用sync.Pool 降低GC压力 聊一聊:Python和Golang的垃圾回收 聊聊数据库的那些索引 源码阅读——robfig/cron GitHub Actions+Serverless搭建博客 聊聊 MongoDB 聊一聊:敏捷开发 聊一聊:常见的分布式锁 2021书单 sentry部署 MongoDB——TTL索引 S3协议入门 使用 Go 客户端控制 Kubernetes
Web服务打包exe
Yance Huang · 2023-03-28 · via MadLife

背景

项目组开发的一个支持多人协作工具类的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包,大功告成。