2016-03-02 50 views
2

我在本地开发服务器上有一个正在运行的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)), 
] 
+0

这是您的urls文件被命名为'urls.ps'而不是'.py'的拼写错误吗? –

+0

是的,那是一个错字,对不起。它被称为urls.py。感谢您指出。 – enpo

回答

0

事实证明,它有没有关系我的配置。某处隐藏在日志中并且有时会被吞下的警告是“Matplotlib正在使用fc-list构建字体缓存,这可能需要一些时间。”所以我有一个用于matplot的第三方python库来封锁应用程序。看起来是因为在缓存文件时出现了一些权限问题,请参阅matplotlib taking time when being imported

+0

也是必要的虚拟主机设置WSGIApplicationGroup%{GLOBAL} – enpo

相关问题