首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Streamlit 应用从本地部署到服务器并进行访问

  • 25-03-07 21:22
  • 4677
  • 10565
blog.csdn.net

目录

  • 1 部署 Streamlit 应用到服务器
  • 2 配置服务器允许远程访问
  • 3 使用反向代理
  • 4 使用 HTTPS
  • 5 总结

1 部署 Streamlit 应用到服务器

  • 1 选择一个服务器平台
    首先,你需要选择一个服务器平台来部署你的 Streamlit 应用。常见的选择包括:
    云服务器:如 AWS EC2、Azure VM、Google Cloud Compute Engine等。
    虚拟主机:如 DigitalOcean、Vultr 等。
    PaaS(平台即服务):如 Heroku、Streamlit Cloud 等。
  • 2 准备服务器环境
    在你的服务器上,你需要做以下几个准备工作:
    安装 Python 和依赖库:
sudo apt-get update
sudo apt-get install python3 python3-pip

创建一个虚拟环境并安装依赖:

python3 -m venv myenv
source myenv/bin/activate  # 激活虚拟环境
pip install streamlit  # 安装 Streamlit
pip install -r requirements.txt  # 如果你有依赖文件

  • 3 将应用上传到服务器
    将你的 Streamlit 应用 RAG.py (实现的一个RAG应用程序) 上传到服务器,可以使用 scp(安全拷贝)或者直接通过 Git 将代码推送到服务器:
scp RAG.py username@server-ip:/path/to/your/project/
    1. 运行 Streamlit 应用
      在服务器上运行 Streamlit 应用:
streamlit run RAG.py

2 配置服务器允许远程访问

要允许从外部访问你的 Streamlit 应用,您需要做以下配置:

  • 修改 Streamlit 配置文件
    Streamlit 默认只监听 localhost,为了允许远程访问,你需要修改 ~/.streamlit/config.toml 配置文件,或者通过命令行传递相关参数:

如果配置文件不存在,可以手动创建:

mkdir -p ~/.streamlit

然后创建一个配置文件 config.toml,内容如下:

[server]
headless = true
enableCORS = false
port = 8501
address = "0.0.0.0"

headless:设置为 true,表示不启动浏览器,适用于生产环境。
enableCORS:设置为 false,以便在跨域访问时不受到限制。
port:设置 Streamlit 应用监听的端口,默认为 8501。
address:将其设置为 0.0.0.0,允许任何 IP 访问。

  • 开放服务器的端口
    确保服务器防火墙和安全组(如果使用云服务)允许外部访问 Streamlit 应用的端口(默认为 8501)。

例如,如果你在 AWS 上使用 EC2,你需要:

进入 AWS 控制台,找到 EC2 实例的 Security Group 设置。
添加一条规则,允许所有 IP(0.0.0.0/0)访问 8501 端口。
在 Linux 系统上,你也可以通过 ufw 或 iptables 等工具开放端口:

sudo ufw allow 8501
  • 查看并访问应用
    如果一切配置正确,你可以通过服务器的 IP 地址来访问 Streamlit 应用。
    例如:
    假设你的服务器的公共 IP 地址是 192.168.1.100,你可以在浏览器中访问:
http://192.168.1.100:8501

3 使用反向代理

如果你希望使用自定义的域名(如 yourapp.com)或者想要将应用部署到 80 或 443 端口(HTTP/HTTPS),你可以使用 Nginx 或其他反向代理服务器。

  • 安装 Nginx
    在服务器上安装 Nginx(假设你使用的是 Ubuntu):
sudo apt update
sudo apt install nginx
  • 配置 Nginx

配置 Nginx 将流量转发到 Streamlit 应用。

编辑 /etc/nginx/sites-available/default 文件,设置如下:

server {
    listen 80;
    server_name yourapp.com;

    location / {
        proxy_pass http://localhost:8501;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

将 yourapp.com 替换为你的实际域名。

  • 重启 Nginx
    重启 Nginx 以应用新的配置:
sudo systemctl restart nginx
  • 访问应用

现在,你可以通过域名(例如 http://yourapp.com)访问你的 Streamlit 应用,而不是通过 IP 地址和端口。

4 使用 HTTPS

为了确保安全性,建议通过 HTTPS 部署你的 Streamlit 应用。你可以通过 Let’s Encrypt 免费为你的域名获取 SSL 证书,并配置 Nginx 来使用 HTTPS。

  • 安装 Certbot
    安装 Certbot 工具来申请 Let’s Encrypt SSL 证书:
sudo apt install certbot python3-certbot-nginx

  • 申请 SSL 证书
    使用 Certbot 自动获取证书并配置 Nginx:
sudo certbot --nginx -d yourapp.com
  • 自动续期证书
    确保 SSL 证书自动续期:
sudo certbot renew --dry-run

5 总结

  1. 可以将 streamlit run RAG.py 命令部署到远程服务器,配置服务器以允许外部访问。
  2. 配置 ~/.streamlit/config.toml 使 Streamlit 应用监听所有网络接口。
  3. 使用服务器的公共 IP 地址加上端口号(如 http://:8501)来访问应用。
  4. 使用反向代理(如 Nginx)可以将应用部署到标准的 80 或 443 端口,并且可以使用自定义域名来访问。
  5. 使用 HTTPS 配置(如 Let’s Encrypt)来加密通信。
    这些步骤可以帮助你将本地的 Streamlit 应用部署到服务器,并进行远程访问。
注:本文转载自blog.csdn.net的BGoodHabit的文章"https://blog.csdn.net/BGoodHabit/article/details/144160290"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

121
服务器
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top