温馨提示×

怎样在Ubuntu上使用Python进行Web开发

小樊
34
2025-11-22 20:59:45
栏目: 编程语言

在 Ubuntu 上进行 Python Web 开发的标准流程

一 环境准备

  • 更新软件源并安装基础工具:sudo apt update && sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential git。完成后用 python3 --version 与 pip3 --version 验证安装。建议始终在虚拟环境中开发,避免依赖冲突。创建与激活虚拟环境:python3 -m venv venv && source venv/bin/activate。为便于复用依赖,生成 requirements.txt:pip freeze > requirements.txt;他人或部署时安装:pip install -r requirements.txt。

二 选择框架与最小示例

  • Flask 最小示例
    • 安装:pip install Flask
    • 代码:创建 app.py from flask import Flask app = Flask(name) @app.route(‘/’) def hello(): return ‘Hello, World!’ if name == ‘main’: app.run(debug=True)
    • 运行:python3 app.py,浏览器访问:http://127.0.0.1:5000
  • Django 最小示例
    • 安装:pip install Django
    • 创建项目与应用:django-admin startproject myproject && cd myproject && python3 manage.py startapp myapp
    • 注册应用:在 myproject/settings.py 的 INSTALLED_APPS 中加入 ‘myapp’
    • 运行开发服务器:python3 manage.py runserver,访问:http://127.0.0.1:8000
  • 小贴士
    • 需要局域网访问时,Flask 可改为 app.run(host=‘0.0.0.0’, port=5000);Django 默认仅本地访问,生产部署请使用 WSGI/ASGI 服务器。

三 数据库与开发工具

  • 数据库
    • 安装与基础使用:sudo apt install mysql-server 或 sudo apt install postgresql postgresql-contrib;Django 可用 python3 manage.py migrate 初始化内置模型;Flask 常配合 SQLAlchemypsycopg2 操作 PostgreSQL/MySQL/SQLite
  • 开发工具
    • IDE/编辑器:安装 PyCharmVisual Studio Code 提升编码与调试效率;结合虚拟环境运行与调试,保持依赖隔离。

四 本地调试与常用命令

  • 依赖管理
    • 导出:pip freeze > requirements.txt;安装:pip install -r requirements.txt
  • Flask 便捷运行
    • 设置环境变量:export FLASK_APP=app.py;export FLASK_RUN_PORT=5000
    • 启动:flask run --host=0.0.0.0(如需局域网访问)
  • Django 常用
    • 迁移与运行:python3 manage.py migrate && python3 manage.py runserver
  • 版本控制
    • 初始化与提交:git init;git add .;git commit -m “init project”。

五 生产部署方案

  • 方案 A Nginx + Gunicorn(推荐)
    • 安装:pip install gunicorn
    • 启动示例:gunicorn -w 4 -b 127.0.0.1:8000 app:app(Flask);Django 通常为 gunicorn myproject.wsgi:application
    • Nginx 反向代理示例(/etc/nginx/sites-available/default): 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; } }
    • 检查与生效:sudo nginx -t && sudo systemctl reload nginx
  • 方案 B Nginx + uWSGI(WSGI)
    • 安装:pip install uwsgi
    • uWSGI 配置示例(myapp_uwsgi.ini): [uwsgi] module = wsgi:app master = true processes = 5 socket = myapp.sock chmod-socket = 660 vacuum = true die-on-term = true
    • systemd 服务(/etc/systemd/system/myapp.service): [Unit] Description=uWSGI instance to serve myapp After=network.target [Service] User=ubuntu Group=www-data WorkingDirectory=/path/to/your/app ExecStart=/path/to/your/app/venv/bin/uwsgi --ini myapp_uwsgi.ini [Install] WantedBy=multi-user.target
    • 启动与开机自启:sudo systemctl daemon-reload && sudo systemctl enable --now myapp
    • Nginx 配置(/etc/nginx/sites-available/default): server { listen 80; server_name your_domain_or_ip; location / { include uwsgi_params; uwsgi_pass unix:/path/to/your/app/myapp.sock; } }
    • 生效:sudo nginx -t && sudo systemctl reload nginx
  • 方案 C Apache + mod_wsgi(备选)
    • 安装:sudo apt install libapache2-mod-wsgi-py3
    • 配置示例(在 Apache 虚拟主机中): WSGIScriptAlias / /path/to/your/app/wsgi.py WSGIDaemonProcess yourapp python-path=/path/to/your/app python-home=/path/to/your/venv WSGIProcessGroup yourapp
    • 生效:sudo systemctl restart apache2
  • 安全与运维提示
    • 仅在内网开放调试端口;生产环境关闭调试模式;使用 HTTPS(如 Let’s Encrypt);为进程设置非 root 运行用户;用 systemd 或进程管理工具保证高可用。

0