1. 环境准备
在Centos8系统下,首先需要安装nginx和uwsgi两个服务。使用以下命令进行安装:
sudo yum install nginx
sudo yum install uwsgi
1.1 配置nginx
配置nginx的文件在 /etc/nginx/nginx.conf ,使用 vi 编辑此文件。
首先在http部分添加以下内容:
upstream django {
server 127.0.0.1:8000;
}
其中 127.0.0.1:8000 是uwsgi监听的地址和端口。
接下来在 server 部分添加以下内容:
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
这里的 location / 是指从根路径开始反向代理,uwsgi_pass 指向之前定义的 upstream 中的 django,include /etc/nginx/uwsgi_params 则表示使用默认的uwsgi_params配置。
保存修改后,使用以下命令启动nginx服务:
sudo systemctl start nginx
1.2 配置uwsgi
在django项目的根目录下,创建一个名为 uwsgi.ini 的文件,使用 vi 进行编辑,并添加以下内容:
[uwsgi]
socket=127.0.0.1:8000
chdir=/path/to/your/project
wsgi-file=/path/to/your/project/wsgi.py
processes=4
threads=2
master=true
pidfile=/var/run/uwsgi.pid
daemonize=/var/log/uwsgi.log
vacuum=true
其中 socket 为uwsgi监听的地址和端口,chdir 指向django项目的根目录,wsgi-file 指向项目中的wsgi.py文件,在 processes 和 threads 部分指定uwsgi使用的进程数和线程数,master 为true表示启用自动管理子进程的模式,pidfile 指向uwsgi的pid文件地址,daemonize 则表示让uwsgi在后台运行并输出日志到指定文件中,vacuum 为true表示在进程退出时自动清理unix套接字文件及其关联的文件。
保存修改后,使用以下命令启动uwsgi服务:
uwsgi --ini uwsgi.ini
也可以使用systemctl管理uwsgi服务,将以下内容添加到/etc/systemd/system/uwsgi.service文件中:
[Unit]
Description=uWSGI service
[Service]
ExecStart=/usr/bin/uwsgi --ini /path/to/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
然后启动uwsgi服务:
systemctl start uwsgi
2. Django项目配置
在 django 项目中,需要安装 uwsgi 和 django 配套的一些组件,在项目的 requirements.txt 文件中添加以下内容并使用pip进行安装:
uwsgi==2.0.*
django==x.x.x
django-staticfiles==x.x.x
2.1 wsgi.py 文件修改
在 django 项目的根目录下,找到 wsgi.py 文件,添加以下内容:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') #修改为自己的settings.py文件名
application = get_wsgi_application()
2.2 settings.py 文件修改
在 django 项目的 settings.py 文件中,找到 ALLOWED_HOSTS 部分,并添加以下内容:
ALLOWED_HOSTS = ['*', ]
其中 * 表示允许所有的主机访问,也可以指定具体的ip地址。
3. 其他注意事项
如果在 uwsgi 启动时遇到了内存不足的问题,可以在 uwsgi.ini 文件中调整 processes 和 threads 的值,使其适应服务器的内存大小。
在 nginx 配置中,如果需要通过https进行访问,可以参考以下链接进行配置:https://www.nginx.com/resources/wiki/start/topics/examples/sslexample/
4. 结束语
通过以上步骤,可以在Centos8下完成 nginx+uwsgi 的 django 项目部署,使项目在服务器上稳定运行。