Linux中使用Nginx和Gunicorn托管Django应用程序的步骤如下:
先更新软件包,安装好必要的软件:
sudo apt update
安装Nginx
sudo apt install nginx
安装Python和虚拟环境
sudo apt install python3-pip python3-venv
设置Django项目,创建并激活虚拟环境:
mkdir ~/myproject
cd ~/myproject
python3 -m venv myprojectenv
source myprojectenv/bin/activate
安装Django和Gunicorn
pip install django gunicorn
创建Django:
django-admin startproject myproject .
在myproject/settings.py中,设置ALLOWED_HOSTS:
ALLOWED_HOSTS = ['your_server_domain_or_IP']
完成Django的配置。运行数据库迁移:
python manage.py migrate
创建一个超级用户(可选):
python manage.py createsuperuser
测试:
python manage.py runserver 0.0.0.0:8000
访问 http://your_server_domain_or_IP:8000 确保项目正常运行。
停止运行中的Django开发服务器,使用Gunicorn启动应用:
gunicorn --workers 3 myproject.wsgi:application
创建一个名为myproject.service的systemd服务文件:
sudo nano /etc/systemd/system/myproject.service
内容为:
[Unit]
Description=gunicorn daemon for myproject
After=network.target
[Service]
User=your_user
Group=www-data
WorkingDirectory=/home/your_user/myproject
ExecStart=/home/your_user/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/your_user/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
保存并退出。
启动并启用Gunicorn:
sudo systemctl start myproject
sudo systemctl enable myproject
创建一个名为myproject的Nginx配置文件:
sudo nano /etc/nginx/sites-available/myproject
内容为:
server {
listen 80;
server_name your_server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/your_user/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/your_user/myproject/myproject.sock;
}
}
保存并且退出。启用Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
测试Nginx:
sudo nginx -t
重启Nginx:
sudo systemctl restart nginx
配置防火墙:
sudo ufw allow 'Nginx Full'
现在,打开浏览器,访问http://your_server_domain_or_IP,你应该可以看到Django应用程序正在运行。
以上步骤可以完成在linux中使用Nginx和Gunicorn托管了Django应用程序。Nginx是反向代理服务器,将请求转发给Gunicorn处理,Gunicorn作为应用服务器运行Django项目。这种设置提供了更好的性能和安全性,更多内容继续关注华纳云。