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

推荐订阅源

The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
C
Check Point Blog
有赞技术团队
有赞技术团队
H
Help Net Security
V
Vulnerabilities – Threatpost
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 最新话题
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
爱范儿
爱范儿
I
InfoQ
V
Visual Studio Blog
O
OpenAI News
Google DeepMind News
Google DeepMind News
S
Security Affairs
T
Troy Hunt's Blog
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
N
Netflix TechBlog - Medium
Latest news
Latest news
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Webroot Blog
Webroot Blog
S
Schneier on Security
MongoDB | Blog
MongoDB | Blog
T
Tor Project blog
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest
Cloudbric
Cloudbric
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
C
CERT Recently Published Vulnerability Notes
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
S
Securelist
C
Cisco Blogs
博客园_首页
TaoSecurity Blog
TaoSecurity Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
S
Secure Thoughts

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包,大功告成。