Python?+?Streamlit項目部署方案超詳細教程(非Docker版)
一、針對 Alibaba Cloud Linux/CentOS 系統(tǒng)的完整部署方案
1. 服務器基礎配置(阿里云ECS)
# 更新系統(tǒng) sudo yum update -y # 安裝基礎工具 sudo yum install -y git wget vim python3 python3-pip python3-devel gcc make # 安裝Streamlit系統(tǒng)依賴 sudo yum install -y libXext libSM libXrender # 安裝Node.js(用于Streamlit監(jiān)控) curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash - sudo yum install -y nodejs # 安裝Firewalld防火墻(如果未安裝) sudo yum install -y firewalld sudo systemctl start firewalld sudo systemctl enable firewalld
2. 獲取項目代碼
# 克隆您的Gitee倉庫 git clone https://gitee.com/您的用戶名/case.git cd case # 切換到doc分支 git checkout doc
3. 創(chuàng)建Python虛擬環(huán)境
# 安裝虛擬環(huán)境工具 python3 -m pip install virtualenv # 創(chuàng)建虛擬環(huán)境 python3 -m virtualenv venv # 激活虛擬環(huán)境 source venv/bin/activate # 驗證環(huán)境(應顯示Python 3.x) python --version
4. 安裝項目依賴
# 更新pip pip install --upgrade pip # 設置國內鏡像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 安裝依賴 pip install -r requirements.txt # 額外安裝Streamlit(確保版本兼容) pip install streamlit==1.25.0
5. 配置環(huán)境變量(如有)
創(chuàng)建環(huán)境變量文件:
nano .env
寫入內容:
export DEEPSEEK_API_KEY="sk-510d447cc2da4ae39a9807d6" # 添加其他需要設置的環(huán)境變量
加載環(huán)境變量:
# 臨時生效 source .env # 永久生效(添加到shell配置文件) echo "source /opt/casegenerate/.env" >> ~/.bashrc source ~/.bashrc
6. 測試應用運行
# 手動啟動測試 streamlit run app.py --server.port=8501 # 測試訪問(新開終端) curl http://localhost:8501 # 按CTRL+C停止服務 # 若阿里云端口已開放,也可以直接從瀏覽器進入
7. 創(chuàng)建Systemd服務(后臺運行)
創(chuàng)建服務文件:
sudo nano /etc/systemd/system/case.service
添加以下內容,根據(jù)項目實際路徑調整:
[Unit] Description=Case Streamlit App After=network.target [Service] User=root WorkingDirectory=/opt/case # 修改為您的實際路徑 Environment="PATH=/opt/case/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" EnvironmentFile=/opt/case/.env ExecStart=/opt/case/venv/bin/streamlit run app.py --server.port=8501 --server.headless=true --server.enableCORS=false Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
啟用服務:
# 重新加載服務配置 sudo systemctl daemon-reload # 啟動服務 sudo systemctl start case # 設置開機自啟 sudo systemctl enable case # 查看服務狀態(tài) sudo systemctl status case
8. 配置Nginx反向代理(可選)
# 安裝Nginx sudo yum install -y nginx # 創(chuàng)建配置 sudo nano /etc/nginx/conf.d/case.conf
內容:
upstream streamlit_app {
server 127.0.0.1:8501;
}
server {
listen 80;
server_name yourdomain.com; # 替換為您的域名
access_log /var/log/nginx/case.access.log;
error_log /var/log/nginx/case.error.log;
location / {
proxy_pass http://streamlit_app;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}應用配置:
# 測試配置 sudo nginx -t # 重啟Nginx sudo systemctl restart nginx # 設置開機自啟 sudo systemctl enable nginx
9. 阿里云安全組配置
- 登錄阿里云控制臺 → ECS → 安全組
- 添加規(guī)則:
- 方向:入方向
- 協(xié)議類型:TCP
- 端口范圍:80
- 授權對象:0.0.0.0/0
- 保存規(guī)則
10. 域名配置
- 在域名控制臺添加A記錄:
- 記錄類型:A
- 主機記錄:@ 或子域名
- 記錄值:服務器公網(wǎng)IP
- TTL:10分鐘
11. 測試訪問
瀏覽器訪問:http://yourdomain.com
12.維護與管理
第一步:更新項目代碼
1. 拉取最新代碼
# 進入項目目錄 cd /root/case # 切換到開發(fā)分支(假設您的開發(fā)分支是 doc) git checkout doc # 拉取最新代碼 git fetch origin git reset --hard origin/doc git clean -fd
2、更新依賴,如果有需要
# 激活虛擬環(huán)境 source venv38/bin/activate # 安裝新依賴 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
第二步:更新環(huán)境變量
方法 1:直接修改服務文件(推薦)
# 編輯服務文件 sudo nano /etc/systemd/system/case.service
修改環(huán)境變量保存后執(zhí)行
# 重新加載服務配置 sudo systemctl daemon-reload # 重啟服務使新變量生效 sudo systemctl restart case
方法 2:修改 .env 文件(如果代碼中使用 load_dotenv)
# 編輯 .env 文件 nano /root/case/.env
修改后,重啟服務
sudo systemctl restart case
第三步:重啟服務
# 安全重啟服務 sudo systemctl restart case # 驗證狀態(tài) sudo systemctl status case
tips:如果環(huán)境變量要更新DEEPSEEK_API_KEY,方法1和方法2任選其一都可以解決,如果同時使用兩種方法,服務文件中的環(huán)境變量會覆蓋.env文件中的變量。建議只使用一種方法。

二、部署過程遇到的問題記錄
1.有些依賴需要額外安裝
激活虛擬環(huán)境并安裝驗證:
# 進入項目目錄
cd /root/case
# 激活虛擬環(huán)境
source venv/bin/activate
# 1.安裝 aiohttp(使用阿里云鏡像加速)
pip install aiohttp==3.8.6 -i https://mirrors.aliyun.com/pypi/simple/
# 檢查是否安裝成功
pip show aiohttp
# 在 Python 中測試
python -c "import aiohttp; print(aiohttp.__version__)"
# 應該輸出:3.8.6
# 2.安裝 python-dotenv(使用阿里云鏡像加速)
pip install python-dotenv==1.0.0 -i https://mirrors.aliyun.com/pypi/simple/
# 檢查是否安裝成功
pip show python-dotenv
# 在 Python 中測試
python -c "from dotenv import load_dotenv; print('dotenv installed successfully')"
# 3.安裝 PyMuPDF(包含 fitz 模塊)
pip install PyMuPDF==1.23.21 -i https://mirrors.aliyun.com/pypi/simple/
# 檢查是否安裝成功
pip show PyMuPDF
# 在 Python 中測試
python -c "import fitz; print('fitz version:', fitz.__doc__.split('\n')[0])"
# 應該輸出類似:fitz version: PyMuPDF 1.23.21: Python bindings for MuPDF's library
# 4.安裝 openpyxl(使用阿里云鏡像加速)
pip install openpyxl==3.1.2 -i https://mirrors.aliyun.com/pypi/simple/
# 檢查是否安裝成功
pip show openpyxl
# 在 Python 中測試
python -c "import openpyxl; print('openpyxl version:', openpyxl.__version__)"
# 應該輸出:openpyxl version: 3.1.2
# 升級 streamlit
pip install streamlit==1.25.0 -i https://mirrors.aliyun.com/pypi/simple/
streamlit --version
# 應該輸出:Streamlit, version 1.25.02.在 nano 編輯器中怎么保存和退出
當您使用 sudo nano /etc/systemd/system/case.service 編輯文件后,以下是保存并退出的詳細步驟:
?編輯完成后?:
- 使用方向鍵在文件中移動
- 確保所有內容正確無誤
?保存文件?:
- 按下
Ctrl + O(按住 Ctrl 鍵,然后按 O 鍵) - 屏幕底部會顯示:
File Name to Write: /etc/systemd/system/case.service - ?按 Enter 鍵確認保存?
- 按下
?退出編輯器?:
- 按下
Ctrl + X(按住 Ctrl 鍵,然后按 X 鍵) - 如果文件已修改但未保存,會詢問是否保存:
- 按下
退出編輯器后,驗證文件內容:
sudo cat /etc/systemd/system/case.service
應該顯示類似內容:
[Unit] Description=Case Streamlit App After=network.target [Service] User=root WorkingDirectory=/root/case Environment="PATH=/root/case/venv38/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment="DEEPSEEK_API_KEY=sk-510d447cc2da9807d6" ExecStart=/root/case/venv38/bin/streamlit run app.py --server.port=8501 --server.address=0.0.0.0 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
保存文件后,執(zhí)行以下命令使服務生效:
# 重新加載服務配置 sudo systemctl daemon-reload # 啟動服務 sudo systemctl start case # 設置開機自啟 sudo systemctl enable case # 檢查狀態(tài) sudo systemctl status case
3.遇到nano: command not found錯誤
安裝nano編輯器
# 安裝 nano sudo yum install -y nano # 驗證安裝 nano --version
4. http://xxx25.2:8501訪問不了,阿里云要怎么添加8501端口
步驟 1:登錄阿里云控制臺
訪問 阿里云官網(wǎng) 并登錄
進入 ?控制臺?
步驟 2:找到您的 ECS 實例
在控制臺首頁,點擊 ?產品與服務? > ?云計算基礎服務? > ?云服務器 ECS?
在實例列表中找到您的服務器(如
iZ7xvyay73qoZ)
步驟 3:配置安全組
在實例列表中,找到您的實例,點擊右側的 ?更多? > ?網(wǎng)絡和安全組? > ?安全組配置?
或者,在實例詳情頁,點擊 ?安全組? 標簽頁
步驟 4:添加安全組規(guī)則
在安全組規(guī)則頁面,點擊 ?配置規(guī)則?
在 ?入方向? 標簽頁,點擊 ?手動添加?
填寫規(guī)則:
?授權策略?:允許
?協(xié)議類型?:自定義 TCP
?端口范圍?:8501/8501
?授權對象?:0.0.0.0/0(表示允許所有IP訪問)
點擊 ?保存?
步驟 5:驗證安全組規(guī)則
在安全組規(guī)則列表中,您應該能看到一條類似這樣的規(guī)則:
授權策略 | 協(xié)議類型 | 端口范圍 | 授權對象 | 優(yōu)先級 |
|---|---|---|---|---|
允許 | 自定義TCP | 8501 | 0.0.0.0/0 | 1 |
如果仍然無法訪問?
檢查 1:服務器防火墻
阿里云 ECS 默認沒有啟用防火墻,但如果您手動啟用了,需要檢查:
# 查看防火墻狀態(tài) sudo systemctl status firewalld # 如果防火墻開啟,添加端口 sudo firewall-cmd --zone=public --add-port=8501/tcp --permanent sudo firewall-cmd --reload
檢查 2:端口監(jiān)聽狀態(tài)
在服務器上執(zhí)行:
netstat -tuln | grep 8501
應該顯示:
tcp6 0 0 :::8501 :::* LISTEN
檢查 3:使用 telnet 測試端口
在您的本地電腦上(不是服務器)執(zhí)行:
telnet 8xxx25.2 8501
如果端口開放,應該看到:
Trying 8.1xxx5.2... Connected to 8.xxx.2. Escape character is '^]'.
5.在服務器上更新開發(fā)分支的新代碼
在服務器上更新開發(fā)分支的新代碼,分為兩種情況操作
情況1:已在開發(fā)分支但需要更新
# 1. 進入項目目錄 cd /root/case # 2. 檢查當前所在分支 git branch # 確認您在開發(fā)分支上(如 doc) # 3. 從遠程拉取最新變更 git fetch --all # 4. 重置到遠程分支最新狀態(tài)(強制更新) git reset --hard origin/doc # 將 doc 替換為您的分支名 # 5. 清理未被跟蹤的文件 git clean -fd
情況2:需要切換到其他開發(fā)分支
# 1. 進入項目目錄 cd /root/case # 2. 查看所有可用分支 git branch -a # 3. 切換到新的開發(fā)分支 git checkout -b feature/new-feature origin/feature/new-feature # 4. 或者強制切換到已存在的分支 git checkout -f doc
總結
到此這篇關于Python + Streamlit項目部署方案(非Docker版)的文章就介紹到這了,更多相關Python Streamlit項目部署內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python3.6環(huán)境下安裝freetype庫和基本使用方法(推薦)
這篇文章主要介紹了python3.6環(huán)境下如何安裝freetype庫和基本使用方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Python+Selenium實現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)
這篇文章主要為大家詳細介紹了如何利用Python+Selenium實現(xiàn)在 Geoserver批量發(fā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-07-07
python圖形開發(fā)GUI庫pyqt5的基本使用方法詳解
這篇文章主要介紹了python圖形開發(fā)GUI庫pyqt5的基本使用方法詳解,需要的朋友可以參考下2020-02-02
opencv python在視屏上截圖功能的實現(xiàn)
OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。這篇文章主要介紹了opencv python在視屏上截圖,需要的朋友可以參考下2020-03-03

