在Ubuntu上部署Python應用通常涉及以下幾個步驟:
首先,確保系統中已安裝Python。Ubuntu通常預裝Python,但可能不是最新版本。如果需要安裝特定版本,可以通過以下步驟進行:
sudo apt update
sudo apt install python3 python3-pip
sudo apt install python3.8
python3.8 --version
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11
使用虛擬環境可以避免全局安裝Python包和依賴,便于項目隔離。
python3.8 -m venv myenv
source myenv/bin/activate
進入項目的根目錄,如果有requirements.txt
文件,則使用pip安裝所有依賴項。
cd /path/to/my_project
pip install -r requirements.txt
根據項目類型,可能是運行一個.py
腳本、啟動Flask/Django等Web應用,或者其他類型的程序。
python main.py
python manage.py runserver
為了將外部請求轉發到Python應用,通常使用Nginx作為反向代理。
sudo apt update
sudo apt install nginx
sudo nano /etc/nginx/sites-available/default
在server
塊中,配置反向代理,將請求轉發到Python應用所在的端口(假設Python應用運行在8000端口):
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
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;
}
}
保存并退出編輯器,然后重新加載Nginx:
sudo systemctl reload nginx
為了確保Python應用在系統重啟后自動啟動,可以創建一個systemd服務文件。
sudo nano /etc/systemd/system/python-app.service
添加以下內容:
[Unit]
Description=My Python Application
After=network.target
[Service]
User=your_user
Group=your_group
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/app/myenv/bin/python /path/to/your/app/app.py
Restart=always
[Install]
WantedBy=multi-user.target
重新加載systemd配置并啟動服務:
sudo systemctl daemon-reload
sudo systemctl start python-app.service
sudo systemctl enable python-app.service
將Python項目打包到Docker容器中進行部署。
Dockerfile
:FROM python:3.8
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8080
CMD ["python", "app.py"]
在項目根目錄下創建一個requirements.txt
文件,列出項目所需的所有Python依賴包。
docker build -t my-python-app .
docker run -d -p 8080:8080 my-python-app
以上步驟涵蓋了在Ubuntu上部署Python項目的基本流程。根據具體項目的需求,可能還需要進行其他配置,例如數據庫設置、SSL證書安裝等。