记录Uwsgi与Django成功勾搭的始末

简介:

先说明一下本人的环境:

Uwsgi版本:2.0.14(yum install安装)

django版本:1.10.6(pip install安装)

python版本:2.7.5(阿里云 centos 7自带)

nginx版本:1.10.2(yum install安装)


在http://chenx1242.blog.51cto.com/10430133/1904804里面,我们已经实现了网页打开"good bye,logan"的效果,可见Web Client <===> uWSGI <===> Python是通畅的,现在我们要调整看看django与uwsgi是否是通畅的。


首先,我们在/django这个目录下,#django-admin.py startproject logan,建立了一个叫logan的project,然后在/django/logan/logan里会有一个自动生成的wsgi.py,打开一看,里面的内容如下:

1
2
3
4
5
6
7
8
9
10
"" "
WSGI config  for  logan project.
It exposes the WSGI callable as a module-level variable named ``application``.
For  more  information on this  file , see
https: //docs .djangoproject.com /en/1 .10 /howto/deployment/wsgi/
"" "
import  os
from django.core.wsgi  import  get_wsgi_application
os.environ.setdefault( "DJANGO_SETTINGS_MODULE" "logan.settings" )
application = get_wsgi_application()


我们原来的目标就是测试django跟uwsgi的链接是否正常,那么返回到/django/logan,使用#python manage.py runserver 0.0.0.0:8000启动django,然后打开浏览器,在地址栏里输入“外网ip:8000”,看到了如下的界面:

wKioL1jGyNzgHV1FAABQrWeQOHw932.png

可见django已经启动成功,但是前面说过了,这种方法只能测试环境里小规模的玩玩,完全不推荐拿去生产化境里。所以现在我们用uwsgi在8000来启动一下django。


首先,先停止了原来我们启动的django。


然后,使用命令#uwsgi --http :8000 --wsgi-file logan.py,反馈错误信息如下:

wKioL1jGyjXRPgsdAABpeBjU6Lk540.png


出现这个错误,那就#yum install uwsgi-plugin-python,同时使用#uwsgi --plugin python --http-socket :8001 --wsgi-file /django/logan/logan/wsgi.py,这样却又出了一个新错误:

wKiom1jGzevwp06-AAEjsQaeo5Q109.png


提示说:ImportError: No module named logan.settings。可是当我使用python客户端单独测试的时候,这个语句是可以使用的,如图:

wKioL1jGzmDDHlNbAABPV6E1luw469.png


肯多人都卡在了这种情况,这个时候我们需要换一个命令:#uwsgi --plugin python --http-socket :8001 --chdir /django/logan/ --wsgi-file /django/logan/logan/wsgi.py。然后我们在浏览器地址栏里输入“外网地址:8001”就可以看到如下网页:

wKiom1jGz4-DGoGDAABRv4ibA5w649.png

可见,我们已经通过uwsgi启动了原本已经关闭了的django,这样就达到了Web Client <===> uWSGI <===> Django的目的。


如果过程中出现了端口被占用的情况,比如8002端口已经被使用了:

1
2
probably another instance of uWSGI is running on the same address (:8002).
bind(): Address already in use [core/socket.c line 764]

那么就可以使用#lsof -i:8002,然后把对应的进程干掉就好了。


最后附赠python脚本一个,这个脚本可以显示python的path,内容如下:

import os
print '===== sys.path / PYTHONPATH ====='
for k in sorted(os.environ.keys()):
    v = os.environ[k]
    print ('%-30s %s' % (k,v[:70]))


参考资料:http://www.python88.com/topic/101/

参考资料:http://www.nowamagic.net/academy/detail/1330334



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1906056
相关文章
|
负载均衡 应用服务中间件 nginx
Django通过Nginx和uWSGI实现负载均衡
Django通过Nginx和uWSGI实现负载均衡
453 0
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
应用服务中间件 nginx Python
【Django部署】Nginx+uWsgi部署Django项目
最近需要部署一个Django项目但是不能用宝塔面板!呜呜呜 不能懒人式一键部署了 那就学习一下黑框框部署吧
847 0
【Django部署】Nginx+uWsgi部署Django项目
|
弹性计算 NoSQL 安全
在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
一直以来想写一篇完整的在阿里云服务器上部署Django服务结合uwsgi,并且通过nginx做反向代理。因为网上的攻略鱼龙混杂,加上技术不断更新,一些年代久远的文章很容易让人在部署的过程中掉坑里,无法自拔,所以本篇文章以最新的阿里云服务器centos7.6为背景,完全阐述如何部署,亲测可用,其实要说难点完全没有,只要按部就班,就不会有问题。
在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
|
监控 Ubuntu 应用服务中间件
Django+Nginx+Uwsgi项目布署详细For Mac
Django+Nginx+Uwsgi项目布署详细For Mac
437 1
Django+Nginx+Uwsgi项目布署详细For Mac
|
Ubuntu Unix 应用服务中间件
详细拆分如何在ubuntu 上使用 nginx + uwsgi socket方式部署 Django 项目
详细拆分如何在ubuntu 上使用 nginx + uwsgi socket方式部署 Django 项目
363 0
|
应用服务中间件 nginx Python
|
测试技术 应用服务中间件 Python
Django Nginx+uwsgi 安装配置
Django Nginx+uwsgi 安装配置
3533 1
|
应用服务中间件 nginx Python
基于Ubuntu16.04的django+uwsgi+nginx安装部署
基于Ubuntu16.04的django+uwsgi+nginx部署安装
2538 0