Nginx上线uwsgi+django项目(nginx部署uwsgi+django算法集群)

生产环境下对项目的稳定性和并发性要求比较高,可通过nginx+uwsgi的方式部署上线django/flask等项目

nginx反向代理服务器,负责接收请求。特点占有内存少,并发能力强。

uwsgi是一个Web服务器,它实现了服务器和服务端应用程序的通信协议(WSGI协议、uwsgi、http等协议)。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口,规定了怎么把请求转发给应用程序和返回。主要特点是:性能快、占有内存少、多app管理、日志详尽、可定制(内存大小限制,服务一定次数后重启等)。

1 使用uwsgi.ini配置文件启动faceident项目

faceident为已经建好的django项目,如何利用django建立web服务见https://blog.csdn.net/Mugo_Moon/article/details/106859697

      在faceident项目根目录下,新建一个目录uwsgi用来放置uwsgi.ini配置文件(基于配置文件uwsgi启动django项目:uwsgi --ini /data/Djgango_example/faceident/uwsgi/uwsgi.ini)

# uwsig使用配置文件启动
[uwsgi]
master = true
processes = 31 # 同一时刻并发处理进程数
# 线程数
#threads=2
# 项目所在的根目录
chdir=/data/Djgango_example/faceident/
# 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py
module=fmc_pigident.wsgi:application
pythonpath=/root/anaconda3/bin/python
#the local unix socket file than commnuincate to Nginx
# 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信
# 支持ip+port模式以及socket file模式
#socket=%(chdir)/uwsgi_conf/uwsgi.sock
socket = 127.0.0.1:8081

# 存放进程编号的文件
#pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的
daemonize = /data/Djgango_example/faceident/uwsgi/logs/uwsgi.log
#自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
#logto = /data/Djgango_example/faceident/companyuwsgi.log
autostart = true
startsecs = 5
autorestart = true
startretries = 3
#evil-reload-on-as = 16000
#evil-reload-on-rss = 16000

注:使用uWSGI配置能启动django项目成功运行,需要uWSGI的配置文件里加入静态文件static-map,因此在不需要nginx的配置下,也可以支撑服务),但性能有瑕疵。(未使用过,配置方法自行度娘)

2 使用nginx启动uwsgi

       nginx 默认配置最多承受大约1000个并发,可以通过修改nginx.conf配置文件,增加work_rlimit_nofile和worker_connections,并禁用keepalive_timeout来提高并发数。

      在faceident项目根目录下,新建一个目录nginx用来放置nginx.conf配置文件(启动/usr/local/nginx/sbin/nginx -c /data/Djgango_example/faceident/nginx/nginx.conf)

user root;
events {
    worker_connections 1024; #每个进程允许的最多连接数,理论上每台服务器的最大连接数为worker_processes*worker_connections
}
http {
    client_max_body_size 50M;
    server {
        listen 8000;
        server_name faceident.dev.baidu.com;
        access_log /data/Djgango_example/faceident/nginx/logs/access.log;
        error_log /data/Djgango_example/faceident/nginx/logs/error.log;
        location / {
            include  /usr/local/nginx/conf/uwsgi_params;
            uwsgi_pass  127.0.0.1:8081;
        }
        location / {
             root   /data/Djgango_example/faceident/front_end_pc;
             index  index.html index.htm;
        }
    }
}

3 使用shell脚本启动nginx+uwsgi+django,并设置服务器重启自动拉起服务

(1)main.sh


#!/bin/bash

uwsgi --ini /data/Djgango_example/faceident/uwsgi/uwsgi.ini
/usr/local/nginx/sbin/nginx -c /data/Djgango_example/faceident/nginx/nginx.conf

# init service(仅需要加载模型和显卡需要)
curl -H "Content-Type: application/json" -X POST -d '{}' "http://faceident.dev.baidu.com/app/identifyDemo/"

(2) /etc/rc.d/rc.local


# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
service zabbix_agentd start

#添加一行bash命令启动main.sh脚本
bash /root/faceident/main.sh

4 psot请求实例

import requests
import json
url = 'http://173.18.100.20:8000/app1/identifyDemo/'
body = {
  "num": 800,
  "rate": [0.87,0.85]
}
headers = {'content-type': "application/json", 'Authorization': 'APP appid = 4abf1a,token = 9480295ab2e2eddb8'}

response = requests.post(url, data = json.dumps(body), headers = headers)
print (response.text)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一个自由开源的操作系统,其中有很多的工具和服务可以用于搭建与开发Web应用。其中,常用的Web应用栈是使用Nginx作为Web服务器,UWSGI作为应用程序服务器,Django作为Web框架,MySQL作为关系型数据库。 要安装和配置这些服务,需要进行以下步骤: 1. 安装Ubuntu操作系统,可以选择最新版本的Ubuntu LTS或者最新的Ubuntu发行版。 2. 安装Nginx服务,并配置Nginx服务器来处理并转发HTTP请求。这里可以使用apt-get install命令来安装Nginx包。 3. 安装UWSGI服务,并配置UWSGI服务器来处理Django应用程序。这里可以使用pip install命令来安装UWSGI包。 4. 安装Django,并编写一个基本的Django应用程序。然后配置UWSGI服务器以运行Django应用程序。可以使用pip install命令来安装Django包。可以使用此教程 - https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html 5. 安装MySQL数据库服务,并配置MySQL服务器以使用Django应用程序。可以使用apt-get install命令来安装MySQL包。 6. 在Django应用程序中配置MySQL数据库连接参数,并创建 MySQL数据库及表。 7. 配置Nginx服务器以使用UWSGI服务器来处理Django应用程序。可以使用上面的教程来完成这一步骤。 8. 启动NginxUWSGI服务器,并测试Django应用程序是否可以访问。 在进行以上的步骤时,需要注意安全措施,防止 Web 应用程序被攻击和入侵。同时,也需要进行充分的测试,保证 Web 应用程序的稳定性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值