欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx+uwsgi+django多站点配置过程及注意事项

程序员文章站 2022-07-14 20:37:27
...

服务器配置

概述

Django是现在最流行的网络框架之一。Python作为它的编程语言,多平台兼容性、易开发、速成是主要的优点。官网&文档
Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及一个IMAP / POP3代理服务器(读作 engine-x)。

Uwsgi可以理解为是Nginx和Django之间的桥梁。uwsgi本身也是web服务器,实现了wsgi协议和uwsgi协议。uwsgi文档

-A web server faces the outside world. It can serve files (HTML, images, CSS, etc) directly from the file system. However, it can’t talk directly to Django applications; it needs something that will run the application, feed it requests from web clients (such as browsers) and return responses.
-A Web Server Gateway Interface - WSGI - does this job. WSGI is a Python standard.
-uWSGI is a WSGI implementation. In this tutorial we will set up uWSGI so that it creates a Unix socket, and serves responses to the web server via the uwsgi protocol.
----摘自uwsgi官网介绍

总体原理:Nginx负责处理请求,由于nginx只能处理静态请求,如果是静态请求,就直接将页面返还给用户,如果是动态页面的请求,需要通过Uwsgi将请求传递给后端的django,django处理请求后再将页面通过uwsgi给nginx,渲染后传递到用户。

配置流程

以下在Debian/Deepin/Ubuntu系列机上进行

1. 安装nginx

sudo apt install nginx

2. 安装Django

需要python3的环境和pip3,如果有请忽略

sudo apt install python3
sudo apt install pip3

安装django

sudo pip3 install django

**Notes:**由于不同机器上默认python版本不同,如果机器上python3和python2同时存在的话,在运行python3的和pip命令的时候需要带着版本号,即使用python3和pip3,如果机器只有python3的话,则直接使用python和pip命令即可。

3. 安装uwsgi

pip3 install uwsgi

4. 关于nginx的配置

nginx的配置文件在/etc/nginx。
在/etc/nginx目录下,主配置文件为nginx_conf。 在末尾包含了 conf.d目录下的全部配置文件(版本不一样可能文件夹名称不同)

这里每个文件作为一个站点进行配置。如

#filename: mydjango.conf
upstream django {
    server 127.0.0.1:8001;#for a web port socket;
    #server unix:///home/wwwroot/mysite/mysite.sock; #文件sock用这
}
#configuration of server
server {
    listen 80 ;  
    server_name  xxxx.com  ;  #你的域名,如 server_name www.baidu.com;
    charset    utf-8;
    client_max_body_size 75M;

    access_log /home/wwwroot/mcloud/log/nginx_access.log; #配置访问该网址的log输出记录
    error_log /home/wwwroot/mcloud/log/nginx_error.log;
    location /static {
        alias /home/wwwroot/mcloud/static;  #静态地址。
        }
    location /media {
        alias /home/wwwroot/mcloud/media; #直接在浏览器中就能访问。如mcloud.forever18.xyz/media
    }
    location / {
        include /etc/nginx/uwsgi_params;  
        uwsgi_pass django; 
    }
}

如果想要配置多个站点,则最好为每个站点都编写一个格式类似的配置文件。

5. uwsgi的配置

根据这个官方教程配置一般都不不会有问题。
uwsgi官方配置地址

主要注意事项

1. 关于uwsgi配置文件。文件名uwsgi.ini

#filename: uwsgi.ini
[uwsgi]
socket=127.0.0.1:8001 #注意一致
chdir=/home/wwwroot/mcloud 
module=mcloud.wsgi  #工程文件中的.wsgi的地址
#the virtualenv full path Note add this will make a Internal Server Error!
#home=/root/uwsgi-env  #虚拟环境使用
master=true
processes=4
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize=/home/wwwroot/mcloud/log/uwsgi.log # log地址

2. 关于启动uwsgi

uwsgi --ini uwsgi.ini   # the --ini option is used to specify a file

可以写一个重启脚本

#filename:restartUwsgi.sh
killall -9 uwsgi
sleep 1
uwsgi -i uwsgi.ini