加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

day66:Linux:nginx+uwsgi+django跑python项目

发布时间:2020-12-20 09:58:32 所属栏目:Python 来源:网络整理
导读:目录 0.uwsgi简述 1.使用uwsgi+django运行demo 2.nginx+uwsgi+django跑pythonav项目 0.uwsgi简述 1.什么是wsgi WSGI,全称Web Server Gateway Interface,是作为python语言定义的 web服务器和web应用程序 之间的一种简单通用的接口。 WSGI的官方定义,the Pyt

目录

0.uwsgi简述

1.使用uwsgi+django运行demo

2.nginx+uwsgi+django跑pythonav项目

0.uwsgi简述

1.什么是wsgi

WSGI,全称Web Server Gateway Interface,是作为python语言定义的web服务器和web应用程序之间的一种简单通用的接口。

WSGI的官方定义,the Python Web Server Gateway Interface。从名字就可以看出来,这是一个Gateway网关。name网关的作用就是在协议之间进行切换

也就是说,WSGI就像是一座桥梁,一边连着web服务器,另一边连着web应用程序

2.什么是uWSGI

uWSGI实现了WSGI、HTTP等数据交换协议、简单来说,我们将项目通过uwsgi方式运行,就可以直接对外提供服务,而无需依托于nginx。

3.uWSGI为什么需要nginx?

通常情况下Python中的django框架或Flask框架可以通过uwsgi方式对外提供服务。为什么还需要nginx呢?

1.安全:后端服务直接以http对外提供访问,往往会暴露后端的真实服务,如果使用nginx可以很好的隐藏后端的服务,并且nginx能够实现安全限制、Rewrite、HTTPS等功能。(这些都是uwsgi无法实现的)

2.效率nginx可以直接处理静态资源,然后将动态内容通过uwsgi协议转发给后端django,实现动静分离,提供更好的请求与响应。

1.使用uwsgi+django运行demo

step1.安装python3环境

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel 
sqlite-devel gcc gcc-c++  openssl-devel zlib zlib-devel python3 python3-devel -y

step2.安装django框架和uwsgi

pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ django==2.1.8
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ uwsgi

step3.配置django工程

[root@oldboy-pythonedu demosite]# cd /opt/
[root@oldboy-pythonedu opt] django-admin.py startproject demosite
[root@oldboy-pythonedu opt] cd demosite/
[root@oldboy-pythonedu demosite] python3 manage.py runserver 0.0.0.0:9999        # 启动测试

step4.配置uwsgi

[root@oldboy-pythonedu opt] cat /opt/demosite/uwsgi.ini 
[uwsgi]
uwsgi监听的端口
socket = 127.0.0.1:9999
uwsgi启动进程数
workers = 2
最大接收的请求数
max-requests = 1000
buffer缓冲区大小
buffer-size = 30000
进程pid存放路径
pidfile = /run/uwsgi.pid
uwsgi日志存储路径
daemonize = /var/log/uwsgi.log


[root@oldboy-pythonedu demosite] uwsgi --ini /opt/demosite/uwsgi.ini
[root@oldboy-pythonedu demosite] netstat -lntp | grep 9999
tcp        0      0 127.0.0.1:9999          0.0.0.0:*               LISTEN      9827/uwsgi

step5.配置nginx

[root@oldboy-pythonedu opt] cat /etc/nginx/conf.d/uwsgi.oldboyedu.com.conf 
server {
    listen 80;
    server_name uwsgi.oldboyedu.com;
    client_max_body_size 100M;
    index index.html;           默认返回页面

    location / {
        uwsgi_pass 127.0.0.1:9999;
        uwsgi_param UWSGI_CHDIR /opt/demosite;  工程所在的路径
        uwsgi_param UWSGI_SCRIPT demosite.wsgi; demosite/wsgi接口文件
        include uwsgi_params;
    }
}

2.nginx+uwsgi+django跑pythonav项目

step1.下载项目包文件

cd /code/
wget http://cdn.xuliangwei.com/pythonav.zip
unzip pythonav.zip
pip3 install -i https://pypi.doubanio.com/simple/ -r /code/pythonav/requirements.txt

step2.在10.0.0.202创建一个名字为pythonav的数据库

create database pythonav;

step3.更改pythonav项目的配置文件(配置数据库)

vim pythonav/pythonav/settings.py
 ################### MySQL ###################
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql','NAME': 'pythonav','USER': 'all','PASSWORD': 'Oldxu.com123','HOST': '10.0.0.202','PORT': '3306
ALLOW_HOST=['*']

step5.数据库迁移+创建超级用户+收集静态资源

python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py createsuperuser
python3 manage.py collectstatic

step6.修改pythonav项目中的uwsgi的配置文件

vim pythonav_uwsgi.ini
[uwsgi]
uwsgi监听的端口
socket = 127.0.0.1:8811
chdir = /code/pythonav/
wsgi-file = pythonav/wsgi.py
uwsgi启动进程数
processes = 4
threads = 10
进程pid存放路径
pidfile = /run/uwsgi-pythonav.pid
uwsgi日志存储路径
daemonize = /var/log/uwsgi-pythonav.log

step7.修改nginx配置文件

[root@oldboy-pythonedu pythonav] cat /etc/nginx/conf.d/pythonav.oldboyedu.com.conf 
;
    server_name pythonav.oldboyedu.com;
    client_max_body_size 100M;

    location /static {
        alias /code/pythonav/static;
    }
    
    location / {
        uwsgi_pass 127.0.0.1:8811;
        include uwsgi_params;
    }
}

Tip:一个停止指令

kill $(ps -ef |grep bbs_uwsgi | grep -v grep  | awk '{print $2}' | xargs )

总结

当用Linux+nginx+uwsgi+django跑项目时,只需完成这五个步骤即可。

  1.安装模块

  2.配置数据库连接

  3.初始化数据库

  4.配置uwsgi

  5.配置nginx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读