各位大虾好,小虾效仿http://www.runoob.com/django/...搭建了一个nginx+uwsgi+django的环境。其中uwsgi已经成功了。
我写了一个新的project叫logan,目录就放在/django里,django也看到it works了。然后在/django/logan里写了一个logan_wsgi.py ,如下
#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 将系统的编码设置为UTF8
reload(sys)
sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "logan.settings")
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
我修改了一下uwsgi9090.ini,详情如下:
[uwsgi]
socket = 127.0.0.1:9090
master = true //主进程
vhost = true //多站模式
no-site = true //多站模式时不设置入口模块和文件
workers = 2 //子进程数
reload-mercy = 10
vacuum = true //退出、重启时清理文件
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid
daemonize = /website/uwsgi9090.log
然后我的nginx.conf详情如下:
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
uwsgi_param UWSGI_SCRIPT logan_wsgi.py;
uwsgi_param UWSGI_CHDIR /django/logan;
index index.html index.htm;
client_max_body_size 35m;
}
然后我通过uwsgi --ini /etc/uwsgi9090.ini & 启动uwsgi,然后又启动了nginx。
现在浏览器上输入 服务器外网地址 就会出现502 Bad gateway错误,然后打开uwsgi的日志,出现这样:
your mercy for graceful operations on workers is 60 seconds
mapped 296016 bytes (289 KB) for 2 cores
*** Operational MODE: preforking ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 3868)
spawned uWSGI worker 1 (pid: 3869, cores: 1)
spawned uWSGI worker 2 (pid: 3870, cores: 1)
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
我就yum install uwsgi-plugin-python,用uwsgi --plugin python --ini /etc/uwsgi9090.ini & 重启了uwsgi进程。然后在浏览器输入外网地址之后,不再是502了,而是Internal Server Error。
打开uwsgi的日志一看是:
Traceback (most recent call last):
File "./logan_wsgi.py", line 13, in <module>
from django.core.handlers.wsgi import WSGIHandler
ImportError: No module named django.core.handlers.wsgi
unable to load app 0 (mountpoint='外网地址|') (callable not found or import error)
--- no python application found, check your startup logs for errors ---
外网地址 [pid: 4282|app: -1|req: -1/12] 60.191.94.120 () {46 vars in 763 bytes} [Wed Mar 8 17:06:31 2017] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)
但是我用python单独打开是不报错的,如下:
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from django.core.handlers.wsgi import WSGIHandler
>>>
请问这样我应该怎么办?
Le problème est résolu, utilisez simplement chdir dans uwsgi
On dit qu'il y a très peu d'informations sur Django, et que celui-ci et Python ont été mis à jour trop rapidement. De nombreuses solutions d'information ne sont plus disponibles dans la dernière version.
Il y a un problème avec from django.core.handlers.wsgi import WSGIHandler
Il s'agit de l'ancienne version d'écriture, remplacez-la par from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
J'ai aussi rencontré ce problème aujourd'hui J'ai ce problème, j'espère que ça pourra vous aider