Centos8下django项目部署 nginx+uwsgi的教程

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 项目部署,使项目在服务器上稳定运行。

操作系统标签