如何将Shapash Web应用发布至公网或AWS平台?
将Shapash仪表盘部署到公网或AWS的方案
一、临时暴露到公网(快速测试)
如果只是短期让外部访问,不用长期部署,可通过端口转发工具实现:
- 使用
ngrok工具:- 下载对应系统的ngrok包并解压(无需安装)
- 修改本地启动代码,将host设为
0.0.0.0允许外部访问:app = xpl.run_app(host="0.0.0.0", port=8050) - 启动Shapash应用后,在终端运行ngrok转发端口:
ngrok http 8050 - 终端会生成一个公网URL(如
https://xxxx-xx-xx-xx-xx.ngrok.io),复制该链接即可让他人访问仪表盘。
注意:此方式为临时方案,ngrok会话关闭后链接失效,仅适合测试场景。
二、AWS长期部署(以EC2实例为例)
步骤1:创建EC2实例
- 登录AWS控制台进入EC2服务,启动新实例:
- 选择Ubuntu Server或Amazon Linux 2镜像(推荐Ubuntu)
- 实例类型选
t2.medium(满足基础运行需求,流量大时可升级) - 配置安全组:开放8050端口(或80/443端口),允许所有IP(0.0.0.0/0)访问
- 下载密钥对,用于后续远程连接实例
步骤2:连接实例并配置环境
- 通过SSH连接EC2实例(Ubuntu为例):
ssh -i "你的密钥对文件.pem" ubuntu@<EC2公网IP> - 更新系统并安装Python、pip:
sudo apt update && sudo apt install python3-pip -y - 创建
requirements.txt文件,写入依赖包:
执行安装命令:pandas category-encoders shapash scikit-learnpip3 install -r requirements.txt
步骤3:上传代码并启动应用
- 用scp命令将本地代码上传到EC2实例:
scp -i "你的密钥对文件.pem" 本地代码路径/app.py ubuntu@<EC2公网IP>:~/ - 修改代码中的启动参数,将host设为
0.0.0.0:app = xpl.run_app(host="0.0.0.0", port=8050) - 用
nohup让应用在后台运行:nohup python3 app.py & - 此时通过
http://<EC2公网IP>:8050即可访问仪表盘。
进阶:Nginx反向代理(可选)
若要使用默认HTTP端口(无需输入端口号),可配置Nginx反向代理:
- 安装Nginx:
sudo apt install nginx -y - 创建Nginx配置文件
/etc/nginx/sites-available/shapash:server { listen 80; server_name <EC2公网IP>; location / { proxy_pass http://localhost:8050; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 启用配置并重启Nginx:
现在直接访问EC2公网IP即可打开仪表盘。sudo ln -s /etc/nginx/sites-available/shapash /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
可选:Docker打包部署
为简化环境管理,可将应用打包为Docker镜像:
- 创建
Dockerfile:FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . EXPOSE 8050 CMD ["python", "app.py"] - 构建镜像后,在EC2上运行容器:
docker run -d -p 8050:8050 --name shapash-dashboard 你的镜像名称
内容的提问来源于stack exchange,提问作者Lok
相关产品推荐
相关产品推荐

