Linux云服务器部署Django全攻略:从零开始搭建Python Web应用
在数字化浪潮中,Django作为Python最强大的Web框架之一,正被越来越多的开发者选用。本文将手把手教您如何在Linux云服务器上完成Django环境的完整部署,涵盖从系统准备到项目上线的全流程。
一、环境准备与Python安装
推荐使用Ubuntu 20.04 LTS或CentOS 8作为基础系统:
1. 更新系统软件包
sudo apt update && sudo apt upgrade -y # Ubuntu sudo yum update -y # CentOS
2. Python环境安装(以Python 3.8为例)
- 安装编译依赖:
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev -y
- 源码编译安装Python:
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz tar -xzf Python-3.8.12.tgz cd Python-3.8.12 ./configure --enable-optimizations make -j $(nproc) sudo make altinstall
二、虚拟环境与Django安装
⚠️ 强烈建议使用虚拟环境隔离项目依赖!
1. 创建虚拟环境
python3.8 -m venv django_env source django_env/bin/activate
2. 安装Django及必要组件
pip install --upgrade pip pip install django gunicorn psycopg2-binary
专家建议:
生产环境建议使用PostgreSQL数据库,安装命令:sudo apt install postgresql postgresql-contrib -y
三、项目部署实战
1. 创建Django项目
django-admin startproject myproject cd myproject
2. 关键配置修改
编辑settings.py:
- 设置
DEBUG = False - 配置
ALLOWED_HOSTS = ['your-server-ip', 'domain.com'] - 数据库配置(示例使用PostgreSQL)
3. Gunicorn服务配置
创建/etc/systemd/system/gunicorn.service:
[Unit] Description=gunicorn daemon After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/path/to/your/project ExecStart=/path/to/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/tmp/gunicorn.sock myproject.wsgi:application [Install] WantedBy=multi-user.target
四、Nginx反向代理配置
1. 安装Nginx
sudo apt install nginx -y
2. 创建站点配置文件
编辑/etc/nginx/sites-available/myproject:
server {
listen 80;
server_name your-domain.com;
location /static/ {
alias /path/to/your/static/files;
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/gunicorn.sock;
}
}
常见问题解答
Q: 如何收集静态文件?
A: 执行python manage.py collectstatic,确保Nginx有读取权限。
Q: 出现502 Bad Gateway错误怎么办?
A: 检查Gunicorn服务状态systemctl status gunicorn,确认sock文件权限正确。
五、安全加固建议
- 配置SSL证书(推荐使用Let's Encrypt)
- 定期更新系统安全补丁
- 使用Django的安全中间件
- 配置防火墙规则(UFW或firewalld)
通过以上步骤,您已经成功在Linux云服务器上部署了Django应用。建议定期备份数据库和代码,并监控服务器性能指标。
