从零开始:在Linux云服务器上部署Django应用的完整指南
在当今数字化时代,Django作为Python最流行的Web框架之一,因其"开箱即用"的特性和强大的功能而广受欢迎。本文将详细介绍如何在Linux云服务器上部署Django应用,帮助开发者将项目从本地环境顺利迁移到生产环境。
一、准备工作
在开始部署前,确保您已完成以下准备工作:
- 购买并配置好Linux云服务器(推荐Ubuntu/CentOS)
- 拥有SSH访问权限
- 准备好Django项目代码(建议使用Git管理)
- 注册域名并配置DNS解析(可选)
提示:对于初学者,阿里云、腾讯云等平台提供的新用户优惠是很好的选择。
二、服务器基础环境配置
1. 更新系统软件包
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo yum update -y # CentOS/RHEL
2. 安装必要工具
sudo apt install -y python3-pip python3-dev libpq-dev nginx curl # Ubuntu
sudo yum install -y python3-pip python3-devel postgresql-devel nginx curl # CentOS
3. 创建虚拟环境
python3 -m venv myenv
source myenv/bin/activate
三、Django项目部署
1. 安装项目依赖
pip install -r requirements.txt
2. 配置生产环境设置
创建production.py设置文件:
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', 'server_ip']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
3. 收集静态文件
python manage.py collectstatic
四、配置Gunicorn和Nginx
1. 安装并配置Gunicorn
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 myproject.wsgi
2. 创建系统服务
创建/etc/systemd/system/gunicorn.service文件:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=username
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind unix:/path/to/your/project.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
3. 配置Nginx
创建/etc/nginx/sites-available/myproject文件:
server {
listen 80;
server_name yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /path/to/your/project;
}
location / {
include proxy_params;
proxy_pass http://unix:/path/to/your/project.sock;
}
}
五、安全加固与优化
1. 防火墙配置
sudo ufw allow 'Nginx Full'
sudo ufw allow ssh
sudo ufw enable
2. 配置SSL证书(可选但推荐)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
3. 定期自动更新证书
sudo certbot renew --dry-run
通过以上步骤,您的Django应用已经成功部署到Linux云服务器上。部署过程中可能会遇到各种问题,建议:
- 查看Nginx错误日志:
/var/log/nginx/error.log - 检查Gunicorn状态:
sudo systemctl status gunicorn - 确保所有文件权限设置正确
部署只是开始,后续还需要关注服务器监控、定期备份、性能优化等工作,才能确保应用长期稳定运行。
