阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS下uWSGI+Django成功搭建记录

166次阅读
没有评论

共计 2557 个字符,预计需要花费 7 分钟才能阅读完成。

先说明一下本人的环境:

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://www.linuxidc.com/Linux/2017-03/141794.htm,我们已经实现了网页打开 ”good bye,logan” 的效果,可见 Web Client <===> uWSGI <===> Python 是通畅的,现在我们要调整看看 django 与 uwsgi 是否是通畅的。

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

“””
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”,看到了如下的界面:

CentOS 下 uWSGI+Django 成功搭建记录

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

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

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

CentOS 下 uWSGI+Django 成功搭建记录

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

CentOS 下 uWSGI+Django 成功搭建记录

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

CentOS 下 uWSGI+Django 成功搭建记录

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

CentOS 下 uWSGI+Django 成功搭建记录

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

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

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]))

更多参考

Nginx+uWSGI+Supervisor 在 Ubuntu 上部署 Flask 应用  http://www.linuxidc.com/Linux/2016-07/133064.htm

uWSGI+Django+Nginx 的工作原理流程与部署过程 http://www.linuxidc.com/Linux/2017-03/141785.htm

快速部署 Python 应用:Nginx+uWSGI 配置详解  http://www.linuxidc.com/Linux/2016-12/137830.htm

Nginx+uWSGI+Django+Python 应用架构部署  http://www.linuxidc.com/Linux/2015-10/124183.htm

Ubuntu Server 14.04.2 LTS 配置 Nginx + Uwsgi + Django  http://www.linuxidc.com/Linux/2015-04/116397.htm

Flask+uWSGI+Nginx+Ubuntu 部署教程 http://www.linuxidc.com/Linux/2016-06/132690.htm

Ubuntu 16.04 下安装部署 Nginx+uWSGI+Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

Nginx+uWSGI+Django 在 Ubuntu 下的部署  http://www.linuxidc.com/Linux/2016-07/133490.htm

Linux 上利用 Nginx 代理 uWSGI 处理 Flask Web 应用  http://www.linuxidc.com/Linux/2016-08/134164.htm

 

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2557字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中