Ⅰ Streamlit:使用Docker在云服务器上部署Streamlit并绑定域名
为了实现云服务器上部署 Streamlit 并绑定域名的效果,本教程将分步指导,从购买云服务器开始,直至通过域名访问 Streamlit 页面。以下为实现这一目标的详细步骤。
一、购买云服务器(已有可跳过)
如 @jackiexiao 教程所述,首先,购买一台适合部署 Streamlit 的云服务器。请参考教程前半部分了解如何选择服务器。
二、部署 Streamlit(实现 IP+端口访问)
确保已获得云服务器的公网 IP,使用 SSH 或 SFTP 远程连接服务器。
1. 通过 SSH 和 SFTP 连接服务器
使用 ssh 或 xshell/vscode 等客户端连接服务器,确保连接成功后可以通过终端执行任意指令。
2. 传输整个 python 项目目录至服务器
将包含项目资源文件和 python 脚本的示例项目(my_st.zip)上传至服务器。创建同名目录,并使用 sftp 上传整个项目文件夹。
3. 安装 Python 及其他库
在服务器终端安装 Python 和 pip,并通过 pip 安装 Streamlit 及其他所需库。
4. 运行 Streamlit,发布页面
进入项目目录,运行 streamlit,发布网页。确保使用 nohup 后台运行,关闭终端或 Ctrl+C 不影响进程。
三、使用 Docker 部署 Streamlit 以实现端口映射
为解决 Streamlit 无法设置为 80 端口访问的问题,使用 Docker 实现端口映射。
1. 了解 Docker
Docker 是一个应用打包、分发和部署工具,提供轻量级虚拟环境。
2. 安装 Docker
安装 Docker 并切换到用户账号,如 ubuntu。
3. 创建 Docker 镜像
在根目录下创建 docker_file 目录,并在其中编写 Dockerfile。使用 docker 命令构建镜像。
4. 运行 Docker 镜像生成容器
运行镜像生成容器,使用 docker 命令将容器端口映射到服务器的 80 端口,实现通过公网 IP 访问 Streamlit 页面。
四、绑定域名
购买或拥有一个域名,完成备案,购买云解析 DNS。在 DNS 控制台添加记录,将域名解析至服务器。通过域名访问 Streamlit 页面。
五、多个域名解析到多个端口
使用反向代理技术,如 Nginx,实现多个域名解析到多个端口。正在学习 Nginx 配置,后续将补充详细步骤。
Ⅱ java web项目中有很多的图片,如何存放
一般有两种情况,
一种是前端开发需要显示的图片,这个是页面构成必须的元素,一般这些会做 动静分离,后台接口 跟 前端资源会部署在不同的服务器上,有不同的优化,一般会有转发的服务器,判断是后台接口,就转发到后台的服务器,如果是前端资源,就转发到前台的服务器。一般情况下,前端服务器,跟后台的服务器,是分离开的,有不同的人去管理,如果项目小的话,可能就全放在一个。这个优化的化,你可以去了解下 CDN原理。这个是用来优化静态资源加载情况的。
另一种情况是,显示的图片,不是前端构成的,是用户上传文件产生的,这种情况下,现在一般有专门的对象存储,用过 七牛云,跟阿里的。这个的逻辑是文件上传的时候,不是上传到我们自己的服务器,上传到专门的云服务器,我们自己数据库只需要保存这些上传文件的地址,真正使用的时候,把连接给前端,前端自动会根据内容到专门的云服务器上去获取。所有的安全,优化,带宽,缓存命中,这些都有由云服务器去保证。 简单来说,只有有钱,这些东西根本不会成为你项目的瓶颈。
作为技术,我们讨论的应该不是这些。图片会做备份,这个可以有专门的磁盘阵列去实现,简单来说,就是上传的内容保存到磁盘的时候,会自动多保存几个备份到不同的磁盘上。还是那句话,多去了解下CDN的原理,最后这段,个人理解,不一定对。