我在本地开发服务器上有一个正在运行的Django应用程序,但是当将它重新部署到Apache + mod_wsgi安装程序时,url似乎无法正确解析,即url已安装的应用程序中的模块无法加载。我已经调试了很长一段时间了,并且非常感谢一些帮助。没有使用django + mod_wsgi命名url/no response的模块
在Apache日志中实际上没有真正的错误消息,所以可能会出现一些无限循环,但我不知道在哪里或为什么。经过很长时间,请求以错误代码500和日志消息结束:“守护进程死锁定时器终止,停止进程'天津'。”我发现通过痛苦的调试和打印语句导致url导致问题,并意识到这是应用程序卡住的地方。堆栈是这样的,其中导入(名称)永远不会返回,名称为“Tianjin.urls”。
import_module [__init__.py:37]
urlconf_module [urlresolvers.py:396]
url_patterns [urlresolvers.py:402]
resolve [urlresolvers.py:366]
get_response [base.py:119]
我的设置:
- 的Linux 4.2.0-27泛型#32的Ubuntu SMP x86_64的GNU/Linux的
- 阿帕奇/ 2.4.12(Ubuntu的)服务器MPM:叉式螺纹
- Python 2.7版在虚拟环境中被称为项目文件夹
- mod_wsgi的-4.4.21,从源
- 编译的Django 1.8.5 ENV
目录结构在/ home/TianjinAdmin /:
-IRIS
-env
-..
-Tianjin
- __init__.py
- celery.py
- settins.py
- urls.py
- wsgi.py
-TianjinUI
- __init__.py
- admin.py
- models.py
- tests.py
- urls.py
- views.py
-TianjinBE
- ...
- manage.py
Apache虚拟主机配置:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/TianjinAdmin/IRIS/templates/TianjinUI/app
<Directory /home/TianjinAdmin/IRIS/templates/TianjinUI/app>
Require all granted
</Directory>
<Directory /home/TianjinAdmin/IRIS/Tianjin>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess Tianjin python-path=/home/TianjinAdmin/IRIS:/home/TianjinAdmin/IRIS/env/lib/python2.7/site-packages processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup Tianjin
WSGIScriptAlias//home/TianjinAdmin/IRIS/Tianjin/wsgi.py
</VirtualHost>
天津/ wsgi.py
import os, sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Tianjin.settings")
#tried with and without the following two lines
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
print >> sys.stderr, sys.path
application = get_wsgi_application()
天津的相关内容/ settings.py:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#'kombu.transport.django',
'kombu.transport.django.KombuAppConfig',
'djcelery',
'TianjinBE',
'TianjinUI',
)
ROOT_URLCONF = 'Tianjin.urls'
天津/ urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^ui/', include('TianjinUI.urls')),
url(r'^oauth/', include('TianjinBE.urls')),
url(r'^admin/', include(admin.site.urls)),
]
这是您的urls文件被命名为'urls.ps'而不是'.py'的拼写错误吗? –
是的,那是一个错字,对不起。它被称为urls.py。感谢您指出。 – enpo