简体   繁体   English

Django和uWSGI 2 Emperor模式的内部服务器错误

[英]Internal Server Error with Django and uWSGI 2 Emperor mode

I have been trying to read everything I can find concerning this issue (and have learned much while doing so). 我一直在努力阅读有关这个​​问题的所有内容(并且在这样做时学到了很多东西)。 The closest link I could find is here and here . 我能找到的最近的链接就在这里这里 My issue is almost identical except I'm running uwsgi exclusively in emperor mode. 除了我在emperor模式下专门运行uwsgi之外,我的问题几乎完全相同。 When I run uswsgi services WITHOUT running it in emperor mode my django website runs just fine. 当我运行uswsgi服务而没有在emperor模式下运行时,我的django网站运行得很好。 No matter how I change my configuration I always get the error message my /tmp/uwsgi.log file: "--- no python application found, check your startup logs for errors ---" I have listed my configuration and error log below: 无论我如何更改配置,我总是收到错误消息my /tmp/uwsgi.log文件:“---找不到python应用程序,检查启动日志中的错误---”我已在下面列出了我的配置和错误日志:

OS version: Linux raspberrypi 3.6.11+ #538 armv6l GNU/Linux 操作系统版本:Linux raspberrypi 3.6.11+#538 armv6l GNU / Linux
Django version: 1.6.5 Django版本:1.6.5
uwsgi version: 2.0.5.1 uwsgi版本:2.0.5.1

Virtual environment: /var/www/testbed/env 虚拟环境:/ var / www / testbed / env
Project location: /var/www/testbed/project/auth 项目地点:/ var / www / testbed / project / auth
project tree: 项目树:

./auth/
|-- __init__.py
|-- __init__.pyc
|-- requirements.txt
|-- settings.py
|-- settings.pyc
|-- urls.py
|-- urls.pyc
|-- wsgi.py
`-- wsgi.pyc

file wsgi.py: 文件wsgi.py:

"""
WSGI config for auth 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.6/howto/deployment/wsgi/
"""

    import os, sys, site

    sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
    sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
    sys.path.append('/usr/lib/python2.7')
    sys.path.append('/usr/lib/python2.7/dist-packages')

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "auth.settings")

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

file /etc/uwsgi/emperor.ini: 文件/etc/uwsgi/emperor.ini:

[uwsgi]
master = true
emperor = /etc/uwsgi/vassals
logto = /tmp/uwsgi.log

file /etc/uwsgi/vessals/auth.ini: 文件/etc/uwsgi/vessals/auth.ini:

[uwsgi]
#plugins = python
# Django-related settings
chdir           =/var/www/testbed/project/auth
module          = auth.wsgi:application

# the virtualenv (full path)
home            =/var/www/testbed/env
virtualenv      =/var/www/testbed/env

# process-related settings
enable-threads  = true
pythonpath      = /var/www/testbed/project/auth
#wsgi-file      = /var/www/testbed/project/auth/auth/wsgi.py
env             = DJANGO_SETTINGS_MODULE=auth.settings

mount = /testbed/auth/admin=/var/www/testbed/project/auth/auth/wsgi.py
manage-script-name = true
#route-run = log:SCRIPT_NAME=${SCRIPT_NAME}

# maximum number of worker processes
processes       = 1 #Simple rule is # of cores on machine
# the socket (use the full path to be safe
socket          = /var/www/testbed/project/auth/uwsgi.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 664
# clear environment on exit
vacuum          = true
logto           = /tmp/uwsgi.log

Command being executed listed below: 正在执行的命令如下所示:

/var/www/testbed/env/bin/uwsgi --ini /etc/uwsgi/emperor.ini --emperor /etc/uwsgi/vassals/ --http :8000  --plugin python --binary-pathusr/local/bin/uwsgi

Error file /tmp/uwsgi.log: 错误文件/tmp/uwsgi.log:

*** Starting uWSGI 2.0.5.1 (32bit) on [Tue Jun 10 19:06:12 2014] ***
compiled with version: 4.6.3 on 10 June 2014 01:41:52
os: Linux-3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013
nodename: raspberrypi
machine: armv6l
clock source: unix
detected number of CPU cores: 1
current working directory: /etc/uwsgi
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
your processes number limit is 3376
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :8000 fd 6
*** starting uWSGI Emperor ***
uwsgi socket 0 bound to TCP address 127.0.0.1:57524 (port auto-assigned) fd 5
Python version: 2.7.3 (default, Mar 18 2014, 05:13:23)  [GCC 4.6.3]
*** has_emperor mode detected (fd: 8) ***
[uWSGI] getting INI configuration from auth.ini
*** Starting uWSGI 2.0.5.1 (32bit) on [Tue Jun 10 19:06:12 2014] ***
compiled with version: 4.6.3 on 09 June 2014 23:07:00
os: Linux-3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013
nodename: raspberrypi
machine: armv6l
clock source: unix
detected number of CPU cores: 1
current working directory: /etc/uwsgi/vassals
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
your processes number limit is 3376
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /var/www/testbed/project/auth/uwsgi.sock fd 3
Python version: 2.7.3 (default, Mar 18 2014, 05:13:23)  [GCC 4.6.3]
Set PythonHome to /var/www/testbed/env
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x1dca830
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 128512 bytes (125 KB) for 1 cores
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 23068)
spawned uWSGI worker 1 (pid: 23071, cores: 1)
spawned uWSGI http 1 (pid: 23072)
Python main interpreter initialized at 0x616918
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 128512 bytes (125 KB) for 1 cores
*** Operational MODE: single process ***
added /var/www/testbed/project/auth/ to pythonpath.
WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x616918 pid: 23070 (default app)
mounting /var/www/testbed/project/auth/auth/wsgi.py on /testbed/auth/admin
added /var/www/testbed/project/auth/ to pythonpath.
WSGI app 1 (mountpoint='/testbed/auth/admin') ready in 3 seconds on interpreter 0x9c6218 pid: 23070
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 23070)
Tue Jun 10 19:06:18 2014 - [emperor] vassal auth.ini has been spawned
spawned uWSGI worker 1 (pid: 23073, cores: 1)
Tue Jun 10 19:06:18 2014 - [emperor] vassal auth.ini is ready to accept requests
--- no python application found, check your startup logs for errors ---
[pid: 23071|app: -1|req: -1/1] 192.168.1.6 () {38 vars in 742 bytes} [Tue Jun 10 19:07:11 2014] GET /testbed/auth/admin => generated 21 bytes in 1 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)
--- no python application found, check your startup logs for errors ---
[pid: 23071|app: -1|req: -1/2] 192.168.1.6 () {36 vars in 626 bytes} [Tue Jun 10 19:07:11 2014] GET /favicon.ico => generated 21 bytes in 1 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)
--- no python application found, check your startup logs for errors ---
[pid: 23071|app: -1|req: -1/3] 192.168.1.6 () {38 vars in 742 bytes} [Tue Jun 10 19:07:13 2014] GET /testbed/auth/admin => generated 21 bytes in 2 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)
--- no python application found, check your startup logs for errors ---
[pid: 23071|app: -1|req: -1/4] 192.168.1.6 () {36 vars in 626 bytes} [Tue Jun 10 19:07:13 2014] GET /favicon.ico => generated 21 bytes in 1 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)

At this point, I'm grasping at straws. 在这一点上,我正在抓住稻草。 Out of all the reading that I have done I can't see why this keeps rendering the "Internal Server Error." 在我所做的所有阅读中,我无法理解为什么这会一直呈现“内部服务器错误”。 I may have over looked something that why I've finally given in to my pride by posting my sorrows here. 我可能已经看了一些东西,为什么我最终通过在这里发布我的悲伤而让自己感到骄傲。 Since I've gotten this far I really do think that I have overlooked something very small. 自从我走到这一步以来,我确实认为我忽略了一些非常小的东西。 Any help would be greatly appreciated. 任何帮助将不胜感激。

I had this issue several times in my deployments with usgi-emperor an the problem was that I didn't set the correct ALLOWED_HOSTS in my Django's project config file 我在使用usgi-emperor的部署中多次遇到过这个问题,问题是我没有在我的Django的项目配置文件中设置正确的ALLOWED_HOSTS

In your config you shold have 在您的配置中,你会有

ALLOWED_HOSTS=[ "yourdomain.com", "other.domain.com" ]

or this ( discouraged because of security concerns, use at your own risk ): 或者这( 因安全问题而气馁,使用风险自负 ):

ALLOWED_HOSTS=["*"]

to allow any host 允许任何主持人

https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM