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

Nginx加uWSGi部署Django服务器

程序员文章站 2022-05-09 11:21:25
...

Nginx加uWSGi部署Django服务器

首先是使用nginx和uwsgi的优点

1.web服务器使用nginx,优点是轻量级,抗高并发,速度快
2.uWSGI优点是性能块,内存占用低,详尽的日志功能与高度可定制
3.关于pythonweb开发的wsgi知识推荐看uwsgi+nginx部署django

之前在网上找到很多教程,帮助部署django项目到生产环境,
但是大多数教程都是不能用的,或者是部署过程中出错自己解
决不了的,后来在bilibili找到了一个****,成功将项目
部署到服务器上,因此想将过程记录下来,一来以后再需要用
时不用再从头观看视频,二来也希望给大家到帮助。废话不多说,
开始介绍过程,在这之前,容我宣传一波uwsgi+nginx部署django

  • 安装环境 : 阿里云服务器,ubuntu16.04
  • python版本 :python3,django2.0
  • 项目位置 :/home/
  • 项目名称 :blog (app : MyBlog)

第一步:安装并测试uWSGI

  1. 安装uwsgi
    使用命令
    pip3 install uwsgi
    安装出错时尝试安装python开发包


  2. 测试uwsgi
    进入平时工作目录例如 /home,新建一个python测试文件

    #test.py
    def application(env,start_response):
        start_response('200 OK',[('Content-Type','text / html' )])
        return  [b"Hello World"]  
    

    之后在该目录下运行测试命令
    uwsgi --http :8001 --wsgi-file test.py
    若提示该端口已被占用,可使用以下命令关闭uwsgi进程
    ps -aux | grep uwsgi |awk '{print $2}'|xargs kill -9
    开启服务器8001端口后,使用服务器公网ip与端口号访问,浏览器返回helloworld即表示uwsgi正常工作


  3. 测试项目连接uwsgi
    uwsgi --chdir /home/blog --home /home/env --http :8001 -- module blog.wsgi:application
    若部署是没有使用虚拟环境,则--home /home/env可以省略
    此时访问ip地址与端口号可以发现,项目已经可以访问,但是并没有静态内容,这是因为uwsgi不能处理静态文件,因此才需要使用nginx

第二步: 安装配置nginx

  1. 安装nginx
    使用命令
    apt-get install nginx

  2. 配置nginx
    进入nginx安装目录下,并查看文件

    cd /etc/nginx/
    ls 
    

    可以看到两个文件夹,分别是可用得nginx配置所在文件夹sites-available以及已启用配置文件夹sites-enabled

    进入可用配置目录,新建文件

    cd sites-available/
    vim mysite.conf
    

    添加以下内容

    server {
        listen 端口,一般为80端口;
        server_name ip地址;
        charset utf-8;
    
        client_max_body_size 75M;
    
        location /static {
            alias 静态文件目录;
        }
    
        location /media {
            alias /home/blog/media;
        }
    
        location / {
            uwsgi_pass 127.0.0.1:8001;#uwsgi使用端口
            include /etc/nginx/uwsgi_params;
        }
    }
    

第三步:配置并启动uwsgi

  1. 进入/home目录,创建文件夹并创建配置文件

    cd /home
    mkdie mysite_uwsgi
    cd /mysite_uwsgi
    vim mysite.ini
    
  2. 添加一下内容

    [uwsgi]
    chdir = /home/blog
    home = /home/env #若没使用虚拟环境,去掉这一行
    module = blog.wsgi:application
    
    master = True
    processes = 4 #使用进程数
    harakiri = 60
    max-requests = 5000
    
    socket = 127.0.0.1:8001
    uid = 1000
    gid = 2000
    
    pidfile = /home/mysite_uwsgi/master.pid
    daemonize = /home/mysite_uwsgi/mysite.log
    vacuum = True 
    
  3. 启动uwsgi
    uwsgi --ini /home/mysite_uwsgi/mysite.ini
    可以使用以下命令检查uwsgi是否启动成功
    ps -aux | grep uwsgi
    当启动进程数为5个时,uwsgi启动成功

第四步:启动nginx

  1. 创建软连接
    ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enable/mysite.conf
    使用以下命令查看配置是否有问题
    nginx -t


  2. 重启nginx服务
    service nginx restart
    此时直接使用ip地址即可访问项目

至此,大功告成