Ubuntu環境下Python應用的發布流程主要分為 Web應用部署(常見于Flask/Django等框架)和桌面可執行文件打包兩類場景,以下是具體步驟:
sudo apt update && sudo apt install python3 python3-pip git -y
sudo apt install python3-venv -y # 安裝venv模塊
python3 -m venv myenv # 創建虛擬環境(myenv為環境名)
source myenv/bin/activate # 激活環境(終端提示符會顯示(myenv))
git clone
(若代碼托管在GitHub/Gitee)或scp
(本地傳輸)將項目上傳至服務器:git clone https://github.com/your-username/your-webapp.git # git方式
# 或
scp -r /local/path/to/project username@server_ip:/remote/path # scp方式
requirements.txt
安裝所有依賴(需提前在本地生成該文件:pip freeze > requirements.txt
):pip install -r requirements.txt
app.py
,應用對象為app
(Flask)或application
(Django),運行命令:pip install gunicorn # 安裝Gunicorn
gunicorn --bind 0.0.0.0:8000 app:app # 綁定所有IP的8000端口
sudo apt install nginx -y # 安裝Nginx
sudo nano /etc/nginx/sites-available/yourapp # 創建配置文件
添加以下內容(替換your_domain_or_ip
為域名或服務器IP):server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000; # 轉發至Gunicorn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
啟用配置并重啟Nginx:sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/ # 軟鏈接配置文件
sudo systemctl restart nginx # 重啟Nginx
通過systemd
創建服務,確保應用在服務器重啟后自動運行:
sudo nano /etc/systemd/system/my_python_service.service
添加以下內容(替換路徑和用戶):
[Unit]
Description=My Python Web Application
After=network.target
[Service]
User=your_username # 替換為你的用戶名
ExecStart=/path/to/your/venv/bin/gunicorn --bind 0.0.0.0:8000 app:app # 替換為虛擬環境中的Gunicorn路徑
Restart=always # 失敗后自動重啟
[Install]
WantedBy=multi-user.target
啟用并啟動服務:
sudo systemctl enable my_python_service # 開機自啟
sudo systemctl start my_python_service # 立即啟動
若需將Python腳本轉換為無需安裝Python即可運行的可執行文件(如.exe
或Linux二進制文件),可使用以下工具:
pip install pyinstaller
--onefile
生成單個可執行文件,省略則生成包含依賴的文件夾):pyinstaller --onefile your_script.py # your_script.py為入口腳本
dist/
目錄下找到生成的可執行文件(如your_script
,Linux下無后綴;Windows下為.exe
)。pip install cx_Freeze
setup.py
文件(項目根目錄下):from cx_Freeze import setup, Executable
setup(
name="YourApp",
version="0.1",
description="Your application description",
options={"build_exe": {"packages": ["os"], "excludes": ["tkinter"]}}, # 指定包含/排除的包
executables=[Executable("your_script.py")] # 入口腳本
)
python setup.py build
build/
目錄下找到生成的可執行文件。--add-data
參數指定(如PyInstaller的--add-data "config.ini:."
)。以上流程覆蓋了Ubuntu環境下Python應用的主要發布場景,可根據應用類型(Web/桌面)選擇對應方法。