如何在Linux上使用Nginx和Gunicorn托管Django应用
原创怎样在Linux上使用Nginx和Gunicorn托管Django应用
在Linux系统上使用Nginx和Gunicorn来托管Django应用是一种常见的部署做法。这种做法结合了Nginx的高性能和稳定性以及Gunicorn作为Django应用的WSGI服务器,可以有效地节约应用的性能和可用性。以下是一篇详细的指南,帮助你完成这一部署过程。
准备工作
在开端之前,请确保你的Linux系统已经安装了以下软件包:
- Python 3.6+(推荐使用Python 3.8或更高版本)
- pip
- Git
- nginx
- gcc
- gunicorn
安装Django和Gunicorn
首先,你需要安装Django和Gunicorn。可以通过pip来安装这些包。
sudo pip3 install django
sudo pip3 install gunicorn
创建Django项目
使用Django的命令行工具创建一个新的项目。
django-admin startproject myproject
cd myproject
然后,创建一个应用,例如:
python manage.py startapp myapp
配置Django项目
编辑项目中的`settings.py`文件,配置数据库、中间件、模板等。以下是一个基本的配置示例:
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 添加你的应用
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 其他配置...
创建数据库表
在项目目录下运行以下命令来创建数据库表。
python manage.py makemigrations
python manage.py migrate
运行开发服务器
在项目目录下运行以下命令来启动Django开发服务器。
python manage.py runserver 0.0.0.0:8000
现在,你可以通过浏览器访问`http://localhost:8000/`来查看你的Django应用。
安装Gunicorn
在项目目录下,使用以下命令安装Gunicorn。
pip3 install gunicorn
配置Gunicorn
创建一个Gunicorn配置文件,例如`gunicorn_config.py`,用于设置Gunicorn的运行参数。
# gunicorn_config.py
bind = '0.0.0.0:8000'
workers = 3
timeout = 30
运行Gunicorn
在项目目录下,使用以下命令运行Gunicorn。
gunicorn --config gunicorn_config.py myproject.wsgi:application
现在,你的Django应用已经通过Gunicorn运行在Linux系统上。
配置Nginx
编辑Nginx配置文件,例如`/etc/nginx/sites-available/myproject`,添加以下内容:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost: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;
}
location /static/ {
alias /path/to/your/project/static/;
}
}
确保将`yourdomain.com`替换为你的域名,并将`/path/to/your/project/static/`替换为你的静态文件目录。
启用Nginx配置
使用以下命令启用你的Nginx配置。
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t # 测试Nginx配置
sudo systemctl reload nginx # 重新加载Nginx配置
现在,你的Django应用已经通过Nginx和Gunicorn在Linux系统上圆满托管。