2016-10-11 7 views
0

У меня есть сайт с набором поддоменов. Когда я посещаю один из этих поддоменов включая реальный домен, он иногда показывает внутреннюю ошибку сервера в браузере и когда я проверяю Апач error.log он говорит, что он бросает ImportError:Поддомен Django Настройки Conflict

[Tue Oct 11 06:47:10.999837 2016] [:error] [pid 13114] [client 0.0.0.0:58735] mod_wsgi (pid=13114): Target WSGI script '/var/www/html/api.ai-labs.co/ai_labs_apps/wsgi.py' cannot be loaded as Python module. 
    [Tue Oct 11 06:47:11.000377 2016] [:error] [pid 13114] [client 0.0.0.0:58735] mod_wsgi (pid=13114): Exception occurred processing WSGI script '/var/www/html/api.ai-labs.co/ai_labs_apps/wsgi.py'. 
    [Tue Oct 11 06:47:11.000478 2016] [:error] [pid 13114] [client 0.0.0.0:58735] Traceback (most recent call last): 
    [Tue Oct 11 06:47:11.000552 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/var/www/html/api.ai-labs.co/ai_labs_apps/wsgi.py", line 27, in <module> 
    [Tue Oct 11 06:47:11.000675 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  application = get_wsgi_application() 
    [Tue Oct 11 06:47:11.000737 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application 
    [Tue Oct 11 06:47:11.000853 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  django.setup() 
    [Tue Oct 11 06:47:11.000913 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 17, in setup 
    [Tue Oct 11 06:47:11.001017 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 
    [Tue Oct 11 06:47:11.001076 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 55, in __getattr__ 
    [Tue Oct 11 06:47:11.001269 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  self._setup(name) 
    [Tue Oct 11 06:47:11.001330 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 43, in _setup 
    [Tue Oct 11 06:47:11.001395 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  self._wrapped = Settings(settings_module) 
    [Tue Oct 11 06:47:11.001450 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 99, in __init__ 
    [Tue Oct 11 06:47:11.001526 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  mod = importlib.import_module(self.SETTINGS_MODULE) 
    [Tue Oct 11 06:47:11.001581 2016] [:error] [pid 13114] [client 0.0.0.0:58735] File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    [Tue Oct 11 06:47:11.001689 2016] [:error] [pid 13114] [client 0.0.0.0:58735]  __import__(name) 
    [Tue Oct 11 06:47:11.001765 2016] [:error] [pid 13114] [client 0.0.0.0:58735] ImportError: No module named project.settings 

Я просто разместить файлы на два из пяти приложений, потому что я действительно не могу понять ошибку, и я очень плохо развертывание фактического сервера

первое применение: счета

Это 1-го приложения apache2/сайты-доступные/accounts.ai-labs.conf

<VirtualHost *:80> 
      # The ServerName directive sets the request scheme, hostname and port that 
      # the server uses to identify itself. This is used when creating 
      # redirection URLs. In the context of virtual hosts, the ServerName 
      # specifies what hostname must appear in the request's Host: header to 
      # match this virtual host. For the default virtual host (this file) this 
      # value is not decisive as it is used as a last resort host regardless. 
      # However, you must set it for any further virtual host explicitly. 
      ServerName accounts.ai-labs.co 

      # ServerAdmin [email protected] 
      DocumentRoot /var/www/html/accounts.ai-labs.co/project 

      # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
      # error, crit, alert, emerg. 
      # It is also possible to configure the loglevel for particular 
      # modules, e.g. 
      #LogLevel info ssl:warn 

      ErrorLog ${APACHE_LOG_DIR}/error.log 
      CustomLog ${APACHE_LOG_DIR}/access.log combined 

      # For most configuration files from conf-available/, which are 
      # enabled or disabled at a global level, it is possible to 
      # include a line for only one particular virtual host. For example the 
      # following line enables the CGI configuration for this host only 
      # after it has been globally disabled with "a2disconf". 
      #Include conf-available/serve-cgi-bin.conf 

      <Directory /var/www/html/accounts.ai-labs.co/project> 
        Options Indexes FollowSymLinks 
        AllowOverride All 
        Require all granted 
      </Directory> 

      Alias /static /var/www/html/accounts.ai-labs.co/project/static 
      <Directory /var/www/html/accounts.ai-labs.co/project/static> 
        Require all granted 
      </Directory> 

      Alias /static /var/www/html/accounts.ai-labs.co/project/media 
      <Directory /var/www/html/accounts.ai-labs.co/project/media> 
        Require all granted 
      </Directory> 

      <Directory /var/www/html/accounts.ai-labs.co/project/project> 
        <Files wsgi.py> 
          Require all granted 
        </Files> 
      </Directory> 

      WSGIScriptAlias//var/www/html/accounts.ai-labs.co/project/project/wsgi.py 

    </VirtualHost> 

Это wsgi.py 1-го приложения

""" 
WSGI config for project 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 
import sys 
import site 

site.addsitedir('/var/www/html/accounts.ai-labs.co/lib/python2.7/site-packages') 

sys.path.append('/var/www/html/accounts.ai-labs.co/project') 
sys.path.append('/var/www/html/accounts.ai-labs.co/project/project') 

from django.core.wsgi import get_wsgi_application 
from django.conf import settings 

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

activate_env=os.path.expanduser("/var/www/html/accounts.ai-labs.co/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

application = get_wsgi_application() 

второе приложение: блоги

Это apache2/sites 2-го приложения, доступные/blogs.ai-labs.conf

<VirtualHost *:80> 
     # The ServerName directive sets the request scheme, hostname and port that 
     # the server uses to identify itself. This is used when creating 
     # redirection URLs. In the context of virtual hosts, the ServerName 
     # specifies what hostname must appear in the request's Host: header to 
     # match this virtual host. For the default virtual host (this file) this 
     # value is not decisive as it is used as a last resort host regardless. 
     # However, you must set it for any further virtual host explicitly. 
     ServerName blogs.ai-labs.co 

     # ServerAdmin [email protected] 
     DocumentRoot /var/www/html/blogs.ai-labs.co 

     # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
     # error, crit, alert, emerg. 
     # It is also possible to configure the loglevel for particular 
     # modules, e.g. 
     #LogLevel info ssl:warn 

     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 

     # For most configuration files from conf-available/, which are 
     # enabled or disabled at a global level, it is possible to 
     # include a line for only one particular virtual host. For example the 
     # following line enables the CGI configuration for this host only 
     # after it has been globally disabled with "a2disconf". 
     #Include conf-available/serve-cgi-bin.conf 

     <Directory /var/www/html/blogs.ai-labs.co> 
       Options Indexes FollowSymLinks 
       AllowOverride All 
       Require all granted 
     </Directory> 

     Alias /static /var/www/html/blogs.ai-labs.co/static 
     <Directory /var/www/html/blogs.ai-labs.co/static> 
       Require all granted 
     </Directory> 

     Alias /static /var/www/html/blogs.ai-labs.co/media 
     <Directory /var/www/html/blogs.ai-labs.co/media> 
       Require all granted 
     </Directory> 

     <Directory /var/www/html/blogs.ai-labs.co/ai_labs_blogs> 
       <Files wsgi.py> 
         Require all granted 
       </Files> 
     </Directory> 

     WSGIScriptAlias//var/www/html/blogs.ai-labs.co/ai_labs_blogs/wsgi.py 

</VirtualHost> 

Это wsgi.py 2-го приложения

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

import os 
import sys 
import site 

site.addsitedir('/var/www/html/.virtualenvs_copy/ai-labs-website-pure-django/local/lib/python2.7/site-packages') 

sys.path.append('/var/www/html/blogs.ai-labs.co') 
sys.path.append('/var/www/html/blogs.ai-labs.co/ai_labs_blogs') 

from django.core.wsgi import get_wsgi_application 

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

activate_env=os.path.expanduser("/var/www/html/.virtualenvs_copy/ai-labs-website-pure-django/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

application = get_wsgi_application() 

Как решить эту проблему?

ответ

1

Не используйте:

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

использование:

os.environ["DJANGO_SETTINGS_MODULE"] = "project.settings" 

Аналогично для другого wsgi.py файла.

Это упомянуто в документации Django для mod_wsgi как требование при использовании режима демона. Вы действительно должны использовать режим демона, чтобы каждое приложение находилось в отдельных процессах. Вы также можете очистить использование виртуальных сред.

+0

Вы абсолютно правы! Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^