Python+Nginx+uWSGI:VPS服务器部署Django指南
文章分类:技术文档 /
创建时间:2026-01-16
曾有小型电商企业用Django搭建购物网站并部署在VPS服务器上,却因部署不当,在访问高峰期频繁卡顿甚至崩溃,造成业务损失。这从侧面反映:掌握VPS服务器上的Django正确部署方法,对保障应用稳定运行至关重要。本文将结合Python、Nginx和uWSGI,详细拆解部署全流程。
核心工具与部署意义
Nginx(高性能HTTP服务器及反向代理)负责处理大量并发连接,将请求转发给后端应用;uWSGI(Web服务器)与Django应用通信,处理动态请求;Django(Python Web框架)则用于快速开发高质量Web应用。三者协作能有效提升应用性能,若部署不当,攻击者可能通过端口扫描等方式发起攻击,因此规范配置是关键。
环境准备与基础安装
在VPS服务器上需先安装必要软件。通过以下命令完成基础环境搭建:
sudo apt update
sudo apt install python3 python3-pip nginx
pip3 install uwsgi
此步骤会安装Python解释器、包管理工具pip、Nginx服务器及uWSGI服务。
Django项目初始化配置
创建Django项目前,建议先配置虚拟环境隔离依赖:
python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活虚拟环境
激活后安装Django并创建项目:
pip install django
django-admin startproject myproject
cd myproject
在项目根目录的`settings.py`中,需明确允许访问的主机IP:
ALLOWED_HOSTS = ['your_server_ip'] # 替换为VPS服务器公网IP
uWSGI服务配置
在项目目录下创建uWSGI配置文件`myproject.ini`,内容示例:
[uwsgi]
chdir = /path/to/myproject # 项目绝对路径
module = myproject.wsgi:application # WSGI应用入口
home = /path/to/myenv # 虚拟环境路径
master = true # 启用主进程
processes = 4 # 工作进程数
socket = /run/uwsgi/myproject.sock # 套接字文件路径
chmod-socket = 666 # 套接字权限
vacuum = true # 退出时清理套接字
该配置定义了项目路径、进程管理及通信方式。
Nginx反向代理设置
Nginx需通过配置文件关联uWSGI服务。在`/etc/nginx/sites-available/`目录下创建`myproject`文件:
server {
listen 80; # 监听80端口
server_name your_server_ip; # 服务器公网IP
location / { # 动态请求转发
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/myproject.sock;
}
location /static/ { # 静态文件路径
alias /path/to/myproject/static/;
}
}
完成后创建软链接并重启Nginx生效:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo systemctl restart nginx
服务启动与持久化
直接启动uWSGI可执行:
uwsgi --ini myproject.ini
若需随系统启动,需创建systemd服务文件`/etc/systemd/system/uwsgi.service`:
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=your_user # 替换为当前用户
Group=www-data
WorkingDirectory=/path/to/myproject # 项目路径
Environment="PATH=/path/to/myenv/bin" # 虚拟环境路径
ExecStart=/path/to/myenv/bin/uwsgi --ini myproject.ini # 启动命令
[Install]
WantedBy=multi-user.target
通过以下命令启动并设置开机自启:
sudo systemctl start uwsgi
sudo systemctl enable uwsgi
完成上述步骤后,Django应用即可在VPS服务器上稳定运行。合理配置Nginx与uWSGI不仅能提升并发处理能力,还能通过限制暴露端口等方式降低安全风险,为Web应用提供更可靠的运行环境。
工信部备案:苏ICP备2025168537号-1