梦应逍遥 发表于 2024-7-16 00:45:12

用宝塔将streamlit部署到服务器上,通过域名访问

1. 目的

huggingface托管streamlit只能服务两天,所以将自己的streamlit项目部署到云服务器上,以便长期访问。
2. 前提准备


[*]购买云服务器(国内的必要备案)
[*]购买域名,完成DNS域名解析(国内的必要备案)
[*]拥有一个能在本地正常运行的streamlit项目
[*]我的配置:操纵体系Centos,宝塔6.0,python3.10.9
3. 步调

3.1 生成项目依赖

参考:https://blog.csdn.net/qq_51392112/article/details/131416783

[*]安装pipreqs
pip install pipreqs
[*]cmd切换路径到项目文件夹下,生成依赖,此操纵会在项目文件夹下生成requirements.txt文件。
pipreqs ./
3.2 云服务器放行项目端口

在自己购买服务器的平台上放行一个端口(或者叫添加端口规则、添加安全组规则、添加防火墙规则),端口号随意写一个不常用端口,好比8800。协议选TCP。
3.3 在宝塔中部署项目

长途连接服务器后,安装宝塔。宝塔安装链接:https://www.bt.cn/new/download.html
安装教程可参考:https://blog.csdn.net/SoloVersion/article/details/123984445
首次进入宝塔面板。
1.在首页安装保举套件
https://img-blog.csdnimg.cn/direct/855b93c1f850415b9a8fe78730d1bfc3.png

[*]上传项目:
在宝塔侧边栏选择“文件”,新建一个文件夹(英文),把streamlit项目文件都上传进来。
[*]添加python项目:
在侧边栏选择“网站”,选择“python项目”,安装python,选择版本(与本地测试时一样的版本),安装完成后选择“添加python项目”。
项目路径选择刚刚的文件夹,
名称随意,
运行文件选择streamlit的运行文件,
项目端口写刚刚在服务器放行的端口
python版本选刚刚安装好的
框架选python
运行方式选python
依赖包选上
https://img-blog.csdnimg.cn/direct/74b2e986f7054ae8a9031d61e59433e8.png
点击确定
https://img-blog.csdnimg.cn/direct/896361b87b374b1e8f99bde6edd8edca.png
这时间显示未启动,不要着急,点击设置会弹出黑色控制台信息,可以看到运行日志在滚动。等候一会儿,控制台会自动关闭,项目状态就会变为运行中。
4. 确认端口放行:
点击侧边栏的“安全”,确认项目的端口被放行,如果没有则手动添加端口规则。
https://img-blog.csdnimg.cn/direct/332989ef8bd54ce8ac9904e0e5044f68.png

[*]管理域名:
回到“网站”,点击设置,
https://img-blog.csdnimg.cn/direct/36b1a9d535334b28a40733b32cf1c916.png
点击"域名管理",输入域名,点击"添加"。
https://img-blog.csdnimg.cn/direct/b5eda3a57829402ab7a675f0c4fd0bf1.png
https://img-blog.csdnimg.cn/direct/744a7760d0ef4471925e503ca680d035.png
点击外网映射
https://img-blog.csdnimg.cn/direct/4c2f4f0fac2b4c2abd59fef4870f0f21.png
点击“配置文件”,找到下面这一行
https://img-blog.csdnimg.cn/direct/71ae0c6462494305bad1866873f5255e.png
将Host 127.0.0.1:$server_port 改为Host $host(这一步是为了直接通过域名访问项目,否则就必要域名+端口号才能访问)https://img-blog.csdnimg.cn/direct/8738a375c1fd4122b90d158e0898f963.png
如果此时网站状态变为“未启动”,可以手动打开
https://img-blog.csdnimg.cn/direct/daf7f0ec9f134c40befd90b59544cb91.png

[*]运行streamlit:
点击"终端"
https://img-blog.csdnimg.cn/direct/8b832ea9f1e54009ad0f758b5038d9a7.png
输入streamlit run 你的项目文件.py, 控制台输出信息正常。(此时streamlit默认使用8501端口)
https://img-blog.csdnimg.cn/direct/dbefd54de7304e4587e9be393eaf8952.png
点击外部连接,看看能不能正常访问。
关闭终端,点击“设置”,点击“项目日志”,看看日志中有没有error错误,如果没有就没问题。
关闭设置,再点击“终端”,将任务挂起,输入以下内容
nohup streamlit run test.py --server.port=8800
(端口号应设置为你创建项目时用的端口号,好比我这里用8800)控制台会返回:
https://img-blog.csdnimg.cn/direct/71cb858aeb2f4904b4245617f06b752e.png
这个作用是为了关闭终端的时间不会关闭streamlit项目进程,运行日志存储在项目文件夹下的nohub.out文件里
双击看看nohup.out的内容是否正常。如果正常,则直接访问域名,看看项目运行结果。
4. 结论

实行成功。
5. 遇到的问题


[*]如果项目运行不起来,检查一下服务器和宝塔端口设置是否正确。
[*]如果通过域名访问能看到项目已经在正常运行,纵然宝塔面板项目变为“未启动”,不要去点“启动”
6. 参考


[*]https://blog.csdn.net/qq_51392112/article/details/131416783
[*]https://blog.csdn.net/SoloVersion/article/details/123984445
[*]https://blog.csdn.net/tianhai12/article/details/131358430
[*]https://blog.csdn.net/weixin_45727633/article/details/135479019

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 用宝塔将streamlit部署到服务器上,通过域名访问