ubuntu里python如何部署应用
1. 准备工作:更新系统与安装基础工具
在部署前,确保Ubuntu系统是最新的,并安装必要的工具(如git、build-essential)和包管理工具:
sudo apt update &
&
sudo apt upgrade -y
sudo apt install -y git curl wget build-essential
这一步能修复系统漏洞并确保后续安装的兼容性。
2. 安装Python环境与虚拟环境工具
Ubuntu系统通常预装Python 3,但需确认版本并安装python3-venv(用于创建虚拟环境):
python3 --version # 确认Python版本(建议3.6+)
sudo apt install -y python3-pip python3-venv
虚拟环境可隔离项目依赖,避免全局包冲突。
3. 创建并激活虚拟环境
在项目目录中创建虚拟环境并激活,后续所有操作均在虚拟环境中进行:
mkdir my_python_app &
&
cd my_python_app
python3 -m venv venv # 创建虚拟环境
source venv/bin/activate # 激活(终端提示符会显示venv)
激活后,pip和python命令将指向虚拟环境内的版本。
4. 安装项目依赖
若项目有requirements.txt文件(包含所有依赖包及版本),通过pip安装:
pip install --upgrade pip # 升级pip
pip install -r requirements.txt # 安装依赖
若没有requirements.txt,可手动安装所需包(如Flask/Django):
pip install flask gunicorn # Flask示例
# 或 pip install django gunicorn psycopg2-binary # Django示例
gunicorn是Python WSGI服务器,用于生产环境运行应用。
5. 运行应用(开发测试)
- Flask应用:若应用入口为
app.py,可直接运行:export FLASK_APP=app.py # 设置环境变量(Flask 1.0+) flask run --host=0.0.0.0 --port=5000 # 监听所有IP - Django应用:
python manage.py runserver 0.0.0.0:8000 # 监听所有IP
此时可通过http://服务器IP:5000(Flask)或http://服务器IP:8000(Django)访问应用,但仅适用于开发测试。
6. 配置Gunicorn(生产环境WSGI服务器)
Gunicorn是Python应用的生产级WSGI服务器,需替换开发服务器:
gunicorn -w 4 -b 127.0.0.1:8000 app:app # Flask示例(app:app指app.py中的app实例)
# 或 gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application # Django示例
参数说明:-w 4表示4个工作进程(根据CPU核心数调整),-b 127.0.0.1:8000表示绑定到本地8000端口(仅内部访问)。
7. 配置Nginx反向代理(生产环境必备)
Nginx作为反向代理,处理静态文件、负载均衡和SSL终止,提升性能与安全性:
- 安装Nginx:
sudo apt install -y nginx - 创建Nginx配置文件(以Flask为例):
添加以下内容(替换sudo nano /etc/nginx/sites-available/myappyour_domain_or_ip为实际域名/IP,/path/to/static/files为静态文件目录):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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /path/to/static/files; # 静态文件目录 } } - 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ # 启用配置 sudo nginx -t # 测试配置语法 sudo systemctl restart nginx # 重启Nginx
此时可通过http://your_domain_or_ip访问应用,Nginx会将请求转发到Gunicorn。
8. 设置系统服务(开机自启)
通过systemd创建服务,确保应用在服务器重启后自动启动:
- 创建服务文件:
sudo nano /etc/systemd/system/myapp.service - 添加以下内容(替换路径和用户):
[Unit] Description=My Python App After=network.target [Service] User=your_username # 替换为你的用户名 Group=your_groupname # 替换为用户组(通常与用户名相同) WorkingDirectory=/path/to/your/app # 应用目录 Environment="PATH=/path/to/your/app/venv/bin" # 虚拟环境路径 ExecStart=/path/to/your/app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app # 启动命令 Restart=always # 崩溃后自动重启 [Install] WantedBy=multi-user.target - 启用并启动服务:
sudo systemctl daemon-reload # 重新加载systemd配置 sudo systemctl start myapp # 启动服务 sudo systemctl enable myapp # 设置开机自启 - 检查服务状态:
sudo systemctl status myapp # 查看运行状态
若状态显示active (running),则表示服务已成功启动。
9. 安全加固(可选但重要)
- 配置HTTPS:使用Let’s Encrypt免费SSL证书,启用HTTPS加密:
按提示完成证书申请,Certbot会自动修改Nginx配置以支持HTTPS。sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your_domain_or_ip # 替换为你的域名/IP - 防火墙设置:使用
ufw限制端口访问,仅允许HTTP(80)、HTTPS(443)和SSH(22):sudo ufw allow 'Nginx Full' # 允许HTTP/HTTPS sudo ufw allow ssh # 允许SSH sudo ufw enable # 启用防火墙 sudo ufw status # 查看状态 - 定期更新:定期运行
sudo apt update & & sudo apt upgrade -y更新系统和依赖,修复安全漏洞。
以上步骤覆盖了Ubuntu上Python应用部署的核心流程,适用于Flask、Django等主流框架。根据项目需求,可调整Gunicorn的工作进程数、Nginx的静态文件配置或添加数据库(如PostgreSQL)等组件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu里python如何部署应用
本文地址: https://pptw.com/jishu/745326.html
