在线部署 Streamlit Web 应用的 3 种简单方法7 Jan 2025 | 7 分钟阅读 Streamlit 正在改变数据科学家和开发者创建和共享数据应用的方式。由于其简洁的特性和友好的用户界面,它被广泛用于开发交互式且具有吸引力的演示应用。然而,将应用程序开发成 Streamlit 应用后,接下来的步骤就是将其部署到在线,与全世界共享。在本文中,我们将探讨三种简单的方法来部署您的 Streamlit Web 应用:其他充当 Streamlit 主机的平台包括 Streamlit Community Cloud、Heroku 和 AWS Elastic Beanstalk。每种方法都有其优点,在本指南结束时,您将完全能够决定最适合您应用程序部署的选项。 1. Streamlit Community Cloud概述 Streamlit Community Cloud(以前称为 Streamlit Sharing)是部署 Streamlit 应用程序最简单、最舒适的方式之一。它是 Streamlit 提供的一项免费托管服务,专为托管 Streamlit 应用而设计。事实上,Streamlit Community Cloud 的主要优势在于其可用性和易用性,它与组织的 GitHub 帐户集成。 前提条件 - 一个 GitHub 帐户
- 存储在公共 GitHub 存储库中的 Streamlit 应用
部署步骤 过程涉及的步骤如下 在部署您的应用程序之前,预计您的 Streamlit 应用程序已存在于 GitHub 存储库中。您的存储库应至少包含以下内容: - 'app.py'。一个例子是更改文件名末尾的 '.py',并将其替换为您的 Streamlit 应用的名称:main_my_Streamlit_app.py
- 'requirements.txt'(一个包含应用程序所有依赖项列表的文件)
这是一个 'requirements.txt' 文件示例 streamlit pandas numpy 步骤 2 - 注册 Streamlit Community Cloud。我曾需要创建一个 Parade28 帐户才能详细了解 Streamlit,特别是文档的组织和结构。The Japan Times 曾报道过所有这些日志。
- 访问 Streamlit Community Cloud 网站。
- 点击“使用 GitHub 登录”按钮。
- 允许 Streamlit 访问您的 GitHub 帐户。
- 如果您已完成上述步骤,现在应该可以部署您的应用程序了。
- 登录后,您必须登录,然后点击“新建应用”按钮。
- 选择您的应用程序的存储库和分支。
- 定义主文件名(例如,“app.py”)。
- 点击“部署”。
- 接下来,Streamlit 将运行您的应用程序的构建和部署。部署完成后,系统会向您发送一个运行您的应用程序的 URL。拥有此 URL 的任何人都可以访问该 URL:http://www.your-app-developer.com,因此可以轻松共享。
优点 - 易于使用: Streamlit Community Cloud 的初始设置门槛非常低,在开始使用时不会带来太多挑战。
- 与 GitHub 集成: GitHub 完全集成到发布过程中,这使得部署和更新您的应用程序变得非常直接。
- 免费: 在撰写本文时,Streamlit Community Cloud 仅对公共存储库免费。
缺点 - 资源有限: 由于是免费软件,可用于您应用程序的资源(如 CPU 和内存)数量受到限制。
- 仅限公共存储库: 要使用 Streamlit Community Cloud,您的应用程序必须位于公共 GitHub 存储库中。
2. Heroku概述 值得注意的是,Heroku 是许多使用 Python 和其他编程语言的开发人员熟知的云平台之一。它易于使用且部署过程相当直接,因此非常适合部署 Streamlit 应用。Heroku 提供免费套餐,但仅限于小型应用程序和个人使用。 前提条件 - 如上所述,GitHub 帐户也很重要,但并非强制要求,尽管建议有一个。
- 一个 Heroku 帐户
- 请注意,您正在使用安装在本地计算机上的 Heroku CLI。
部署步骤 步骤 1 - 准备您的 GitHub 存储库涉及创建它并执行其他几个准备步骤,然后再进行优化。
- 与部署到 Streamlit Community Cloud 类似,您的存储库应包含:
- 'app.py'(Python 脚本,可以解析为 '__main__.py' 或主 Python 文件)
- 'requirements.txt'
- 此外,创建一个包含以下内容的 'Procfile':
- 'web: streamlit run app.py'。
- 如果您的主 Python 文件名称不同,请将 'app.py' 替换为您的文件名。
步骤 2 - Heroku 是一个在线平台,您可以在其中创建应用程序或获取一个特殊的链接以在线提交。
- 继续登录您的 Heroku 帐户。
- 将鼠标指针移到“新建”按钮上,点击它,然后选择“创建新应用”选项。
- 选择您的应用的唯一名称以及您希望启动应用程序的区域。
步骤 3:部署您的应用程序 - 选项 1 是 GitHub 集成,这是一个在线工具。
- 再次,在 Heroku 环境中,您必须返回“设置”、“版本”,然后到您特定应用程序的“部署”选项卡。
- 在“部署方法”中,选择“GitHub”。
- 链接您的 GitHub 帐户并选择包含您的 Streamlit 应用程序的存储库。
- 此外,如果希望 Heroku 在每次推送到存储库时自动部署您的应用程序,请取消勾选“启用自动部署”框。
- 点击“部署分支”。
- 选项 2 涉及使用 Heroku 命令行界面部署应用程序。
- 打开终端并登录 Heroku
- Heroku login
- 导航到您的项目目录并创建一个 Heroku 应用
- 'heroku create '
- 将您的代码推送到 Heroku
- 'git push heroku main'
- 打开您的应用
- 'heroku open'
优点 - 灵活性: Heroku 非常多样化,几乎适用于任何应用程序或语言,这对未来的项目很有好处。
- 易于部署: 该模型部署起来相当容易,因为它不需要太多配置。
- 免费套餐: 它有一个免费套餐,适合小型项目,对大多数人来说价格合理。
缺点 - 资源限制: 免费版本对应用程序的资源使用、最大 dyno 小时数和休眠应用程序有限制。
- 冷启动: 免费套餐的服务可能会出现冷启动,冷启动时的加载时间不理想。
3. AWS Elastic Beanstalk概述 AWS Elastic Beanstalk 是一个强大的 PaaS,旨在简化在 AWS 上部署和管理应用程序。这意味着它负责部署过程,包括容量、负载均衡、自动扩展和应用程序健康监控。AWS Elastic Beanstalk 不需要太多手动设置,并且更受需要更多自定义和可扩展性的经验用户的青睐,而不是普通的 EC2。 前提条件 - 一个 AWS 帐户
- 您的本地计算机上安装了 '.aws' 和 AWS CLI。
部署步骤 步骤:1 - 始终在您的 GitHub 存储库中创建备份。
- 确保您的存储库包含以下文件:
- 'app.py'(或主 Python 文件)
- 'requirements.txt'
- 'Procfile',内容如下:
- 'web: streamlit run app.py --server.port $PORT'
- 其次,首先,打开 AWS Elastic Beanstalk 设置您希望在线创建的理想环境。
- 转到 AWS 管理控制台。
- 登录 Elastic Beanstalk 服务进行操作。
- 点击“创建应用程序”。
- 为应用程序选择一个非常有创意的名称,以便它能轻松脱颖而出。选择“Python”作为平台,并选择平台的发行版。
步骤 3:应用程序部署 - 第一个是 AWS 管理控制台,可以从任何连接到互联网的计算机通过 Web 浏览器访问。
- 在“配置应用程序设置”部分,有必要选择环境和实例类型。
- 点击“创建环境”。
- 等待环境建立。
- AWS CLI 选项 2
- 打开终端并使用您的凭据配置 AWS CLI
- 'aws configure'
- 初始化您的 Elastic Beanstalk 应用程序:
- 'eb init -p python-3.8 '
- 创建环境并部署您的应用程序:
- 'eb create '
- 打开您的应用程序
- 'eb open'
优点 - 可扩展性: AWS Elastic Beanstalk 方面,可以根据用户流量自动扩展应用程序性能。
- 控制: 与其他部署类型相比,对位置和资源的控制更多。
- 与 AWS 服务集成: 能够集成其他 AWS 服务和功能,以增强 AWS S3 存储的功能。
缺点 - 复杂性: 与 Streamlit Community Cloud 和 Heroku 相比,实现和使用起来稍微复杂一些。
- 成本: 有免费套餐,但随着应用程序的发展,费用会迅速累积。
结论仅仅因为您是在线部署 Streamlit Web 应用,并不意味着它必须是一个令人恐惧的过程。讨论的三种方法,包括 Streamlit Community Cloud、Heroku 和 AWS Elastic Beanstalk,都有其优点,适合不同水平的程序员使用。 由于 Streamlit Community Cloud 是一款免费应用程序,它非常适合想要开发 Streamlit 应用程序的初学者,以及那些没有服务器并希望零配置部署应用程序的用户。 不幸的是,Heroku 缺乏 AWS 的简洁性,但它仍然为开发人员提供了更多粗粒度的应用程序控制和集成机会。 尽管 AWS Elastic Beanstalk 对于不想处理基础设施的用户来说是一个不错的解决方案,但它更适合需要微调和与 AWS 其他产品紧密集成的重度用户。
|