如何用Nginx+uwsgi部署django服务(亲测好使)

当你使用Django完成一个web项目之后,你需要在你的服务器上部署你的Django服务,但是当你不用其他的web服务器代理,Django本身无法带动多并发,所以在实际部署中,我们一般使用Nginx加uwsgi网关服务接口来部署Django服务

1、安装并运行Nginx

Nginx是一个非常轻量级别的web代理服务器,它使用纯C语言开发,消耗内存很少,非常方便,如果你的Linux系统没有安装Nginx,可以移步我的博客教程:Linux安装nginx的web服务器

2、安装uwsgi

安装uwsgi,我们使用anaconda环境,如何你还没安装anaconda环境,可以移步我的博客教程:Linux下安装基于Python3.7的Anaconda环境

当然你有多种方式安装uwsgi

方式一:直接用pip安装

pip install uwsgi

方式二:使用网络安装器

# 这将会把uWSGI二进制安装到 /tmp/uwsgi ,你可以随意修改它
curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

方式三:源码安装

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make

3、配置uwsgi文件

在你的任意目录下,新建一个uwsgi.ini文件

vi uwsgi.ini

在其中加入下面的配置

# 与Nginx通信的端口
http-socket = 127.0.0.1:3031
stats = 127.0.0.1:9191
# 你的django工程目录
chdir= 你的Django工程目录
# yourproject是你的工程
module=yourproject.wsgi:application
master=True
# 进程数
processes = 4
# 线程数
threads = 2
# 你的父进程(主进程)pid文件 将来用这个文件重启,开启,关闭
pidfile=/你自定义的目录/master.pid
vacuum=True
# 最大请求数
max-requests=5000

运行

# 开启uwsgi
uwsgi --ini uwsgi.ini
# 重新加载  master.pid使我们刚刚配置进程文件
uwsgi --reload master.pid
# 停止
uwsgi --stop master.pid

4、配置运行Nginx

在server模块中配置代理,如下:

 location / {
             proxy_pass http://127.0.0.1:3031
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

静态文件和媒体文件

      # Django media
      location /media  {
           alias   /home/xxx/xxx/xxx/media;  # 指向django的media目录
        }

       # Django static
       location /static  {
             alias  /home/xxx/xxx/xxx/static;  # 指向django的static目录
        }

运行Nginx

# 启动Nginx
/usr/local/nginx/sbin/nginx
# 重新加载配置文件
/usr/local/nginx/sbin/nginx -s reload 

5、测试

在你的浏览器中输入:http://ip   然后你就可以看到你的你访问的网页了

0

Leave a Reply

Your email address will not be published.