2016-10-19 2 views
1

У меня возникли проблемы с получением моего проекта django для надлежащего обслуживания через mod_wsgi.Проблемы с запуском проекта Django в mod_wsgi

Это первый раз, когда я попробовал что-то подобное, поэтому, пожалуйста, простите любые ошибки noob.

Ошибка Сейчас я получаю следующее:

[Wed Oct 19 16:24:23 2016] [error] [client 140.225.0.153] mod_wsgi (pid=20418): Exception occurred processing WSGI script '/opt/badgr/code/apps/mainsite/wsgi.py'. 
[Wed Oct 19 16:24:23 2016] [error] [client 140.225.0.153] Traceback (most recent call last): 
[Wed Oct 19 16:24:23 2016] [error] [client 140.225.0.153] File "/opt/badgr/code/apps/mainsite/wsgi.py", line 14, in <module> 
[Wed Oct 19 16:24:23 2016] [error] [client 140.225.0.153]  from django.core.wsgi import get_wsgi_application 
[Wed Oct 19 16:24:23 2016] [error] [client 140.225.0.153] ImportError: No module named wsgi 

Основной каталог проекта здесь:

/opt/badgr/ 

Проект имеет свой собственный virtualenv находится здесь:

/opt/badgr/env/lib/python2.7/site-packages 

Мой файл wsgi.py:

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

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mainsite.settings") 

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

У меня также есть django.conf файл, расположенный в /etc/httpd/conf.d/:

Alias /static /opt/badgr/code/staticfiles 
<Directory /opt/badgr/code/staticfiles> 
</Directory> 


<Directory /opt/badgr/code/apps/mainsite/> 
    <Files wsgi.py> 
    </Files> 
</Directory> 

WSGISocketPrefix /var/run/wsgi/wsgi 
WSGIDaemonProcess badgr python-path=/opt/badgr:/opt/badgr/env/lib/python2.7/site-packages/ 
WSGIProcessGroup badgr 
WSGIScriptAlias//opt/badgr/code/apps/mainsite/wsgi.py 

Насколько я могу сказать mod_wsgi правильно установлен в virtualenv, так что я не знаю, почему я вижу эту ошибку при попытке подключения через http на сайт.

Вот мой httpd.conf:

ServerTokens OS 
/mod/mpm_common.html#lockfile>); 
    ServerRoot "/etc/httpd" 
    PidFile run/httpd.pid 
    Timeout 60 
    KeepAlive Off 
    MaxKeepAliveRequests 100 
    KeepAliveTimeout 15 
    <IfModule prefork.c> 
    StartServers  8 
    MinSpareServers 5 
    MaxSpareServers 20 
    ServerLimit  256 
    MaxClients  256 
    MaxRequestsPerChild 4000 
    </IfModule> 
    <IfModule worker.c> 
    StartServers   4 
    MaxClients   300 
    MinSpareThreads  25 
    MaxSpareThreads  75 
    ThreadsPerChild  25 
    MaxRequestsPerChild 0 
    </IfModule> 
    Listen 80 
    LoadModule auth_basic_module modules/mod_auth_basic.so 
    LoadModule auth_digest_module modules/mod_auth_digest.so 
    LoadModule authn_file_module modules/mod_authn_file.so 
    LoadModule authn_alias_module modules/mod_authn_alias.so 
    LoadModule authn_anon_module modules/mod_authn_anon.so 
    LoadModule authn_dbm_module modules/mod_authn_dbm.so 
    LoadModule authn_default_module modules/mod_authn_default.so 
    LoadModule authz_host_module modules/mod_authz_host.so 
    LoadModule authz_user_module modules/mod_authz_user.so 
    LoadModule authz_owner_module modules/mod_authz_owner.so 
    LoadModule authz_groupfile_module modules/mod_authz_groupfile.so 
    LoadModule authz_dbm_module modules/mod_authz_dbm.so 
    LoadModule authz_default_module modules/mod_authz_default.so 
    LoadModule ldap_module modules/mod_ldap.so 
    LoadModule authnz_ldap_module modules/mod_authnz_ldap.so 
    LoadModule include_module modules/mod_include.so 
    LoadModule log_config_module modules/mod_log_config.so 
    LoadModule logio_module modules/mod_logio.so 
    LoadModule env_module modules/mod_env.so 
    LoadModule ext_filter_module modules/mod_ext_filter.so 
    LoadModule mime_magic_module modules/mod_mime_magic.so 
    LoadModule expires_module modules/mod_expires.so 
    LoadModule deflate_module modules/mod_deflate.so 
    LoadModule headers_module modules/mod_headers.so 
    LoadModule usertrack_module modules/mod_usertrack.so 
    LoadModule setenvif_module modules/mod_setenvif.so 
    LoadModule mime_module modules/mod_mime.so 
    LoadModule dav_module modules/mod_dav.so 
    LoadModule status_module modules/mod_status.so 
    LoadModule autoindex_module modules/mod_autoindex.so 
    LoadModule info_module modules/mod_info.so 
    LoadModule dav_fs_module modules/mod_dav_fs.so 
    LoadModule vhost_alias_module modules/mod_vhost_alias.so 
    LoadModule negotiation_module modules/mod_negotiation.so 
    LoadModule dir_module modules/mod_dir.so 
    LoadModule actions_module modules/mod_actions.so 
    LoadModule speling_module modules/mod_speling.so 
    LoadModule userdir_module modules/mod_userdir.so 
    LoadModule alias_module modules/mod_alias.so 
    LoadModule substitute_module modules/mod_substitute.so 
    LoadModule rewrite_module modules/mod_rewrite.so 
    LoadModule proxy_module modules/mod_proxy.so 
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
    LoadModule proxy_http_module modules/mod_proxy_http.so 
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
    LoadModule proxy_connect_module modules/mod_proxy_connect.so 
    LoadModule cache_module modules/mod_cache.so 
    LoadModule suexec_module modules/mod_suexec.so 
    LoadModule disk_cache_module modules/mod_disk_cache.so 
    LoadModule cgi_module modules/mod_cgi.so 
    LoadModule version_module modules/mod_version.so 
    Include conf.d/*.conf 
    User apache 
    Group apache 
    ServerAdmin [email protected] 
    UseCanonicalName Off 
    DocumentRoot "/var/www/html" 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 

    <Directory "/var/www/html"> 

     Options Indexes FollowSymLinks 
     AllowOverride None 
     Order allow,deny 
     Allow from all 

    </Directory> 


    <IfModule mod_userdir.c> 

     UserDir disabled 

    </IfModule> 




    DirectoryIndex index.html index.html.var 


    AccessFileName .htaccess 


    <Files ~ "^\.ht"> 
     Order allow,deny 
     Deny from all 
     Satisfy All 
    </Files> 

    TypesConfig /etc/mime.types 

    DefaultType text/plain 

    <IfModule mod_mime_magic.c> 
     MIMEMagicFile conf/magic 
    </IfModule> 

    HostnameLookups Off 

    ErrorLog logs/error_log 

    LogLevel warn 

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
    LogFormat "%h %l %u %t \"%r\" %>s %b" common 
    LogFormat "%{Referer}i -> %U" referer 
    LogFormat "%{User-agent}i" agent 


    CustomLog logs/access_log combined 

    ServerSignature On 


    Alias /icons/ "/var/www/icons/" 

    <Directory "/var/www/icons"> 
     Options Indexes MultiViews FollowSymLinks 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
    </Directory> 


    <IfModule mod_dav_fs.c> 
     # Location of the WebDAV lock database. 
     DAVLockDB /var/lib/dav/lockdb 
    </IfModule> 

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 

    <Directory "/var/www/cgi-bin"> 
     AllowOverride None 
     Options None 
     Order allow,deny 
     Allow from all 
    </Directory> 


    IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8 

    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip 

    AddIconByType (TXT,/icons/text.gif) text/* 
    AddIconByType (IMG,/icons/image2.gif) image/* 
    AddIconByType (SND,/icons/sound2.gif) audio/* 
    AddIconByType (VID,/icons/movie.gif) video/* 

    AddIcon /icons/binary.gif .bin .exe 
    AddIcon /icons/binhex.gif .hqx 
    AddIcon /icons/tar.gif .tar 
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv 
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip 
    AddIcon /icons/a.gif .ps .ai .eps 
    AddIcon /icons/layout.gif .html .shtml .htm .pdf 
    AddIcon /icons/text.gif .txt 
    AddIcon /icons/c.gif .c 
    AddIcon /icons/p.gif .pl .py 
    AddIcon /icons/f.gif .for 
    AddIcon /icons/dvi.gif .dvi 
    AddIcon /icons/uuencoded.gif .uu 
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl 
    AddIcon /icons/tex.gif .tex 
    AddIcon /icons/bomb.gif /core 

    AddIcon /icons/back.gif .. 
    AddIcon /icons/hand.right.gif README 
    AddIcon /icons/folder.gif ^^DIRECTORY^^ 
    AddIcon /icons/blank.gif ^^BLANKICON^^ 


    DefaultIcon /icons/unknown.gif 

    ReadmeName README.html 
    HeaderName HEADER.html 

    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t 

    AddLanguage ca .ca 
    AddLanguage cs .cz .cs 
    AddLanguage da .dk 
    AddLanguage de .de 
    AddLanguage el .el 
    AddLanguage en .en 
    AddLanguage eo .eo 
    AddLanguage es .es 
    AddLanguage et .et 
    AddLanguage fr .fr 
    AddLanguage he .he 
    AddLanguage hr .hr 
    AddLanguage it .it 
    AddLanguage ja .ja 
    AddLanguage ko .ko 
    AddLanguage ltz .ltz 
    AddLanguage nl .nl 
    AddLanguage nn .nn 
    AddLanguage no .no 
    AddLanguage pl .po 
    AddLanguage pt .pt 
    AddLanguage pt-BR .pt-br 
    AddLanguage ru .ru 
    AddLanguage sv .sv 
    AddLanguage zh-CN .zh-cn 
    AddLanguage zh-TW .zh-tw 

    LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW 


    ForceLanguagePriority Prefer Fallback 

    AddDefaultCharset UTF-8 

    AddType application/x-compress .Z 
    AddType application/x-gzip .gz .tgz 

    AddType application/x-x509-ca-cert .crt 
    AddType application/x-pkcs7-crl .crl 

    AddHandler type-map var 
    AddType text/html .shtml 
    AddOutputFilter INCLUDES .shtml 


    Alias /error/ "/var/www/error/" 

    <IfModule mod_negotiation.c> 
    <IfModule mod_include.c> 
     <Directory "/var/www/error"> 
      AllowOverride None 
      Options IncludesNoExec 
      AddOutputFilter Includes html 
      AddHandler type-map var 
      Order allow,deny 
      Allow from all 
      LanguagePriority en es de fr 
      ForceLanguagePriority Prefer Fallback 
     </Directory> 


    </IfModule> 
    </IfModule> 


    BrowserMatch "Mozilla/2" nokeepalive 
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 
    BrowserMatch "RealPlayer 4\.0" force-response-1.0 
    BrowserMatch "Java/1\.0" force-response-1.0 
    BrowserMatch "JDK/1\.0" force-response-1.0 


    BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully 
    BrowserMatch "MS FrontPage" redirect-carefully 
    BrowserMatch "^WebDrive" redirect-carefully 
    BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully 
    BrowserMatch "^gnome-vfs/1.0" redirect-carefully 
    BrowserMatch "^XML Spy" redirect-carefully 
    BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully 

WSGI загружается через файл в conf.d:

LoadModule wsgi_module modules/mod_wsgi.so 

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

Я также не знаю, почему работает python 2.6. # Для httpd вместо 2.7.

Любые мысли или дополнительная информация оценили. Также дайте мне знать, если я должен предоставить что-нибудь еще.

ответ

0

Эта ошибка около django.core.wsgi заключается в том, что у вас установлена ​​очень старая версия Django, старше версии, для которой был создан ваш проект.

Скорее всего, это связано с тем, что ваш mod_wsgi скомпилирован для Python 2.6, и у вас установлена ​​более старая версия Django в этой установке Python.

Если вы хотите использовать Python 2.7, вы должны переустановить mod_wsgi с тем, который скомпилирован для Python 2.7. Вы не можете заставить mod_wsgi скомпилировать для Python 2.6 использовать виртуальную среду для Python 2.7.

+0

Спасибо за ответ Грэма, – Sesshoumaru

+0

Как бы один идти о повторной установке. Есть ли какой-то флаг, который мне нужно использовать при установке через pip, или мне нужно полностью скомпилировать mod_wsgi с нуля? – Sesshoumaru

+0

А, мне просто нужно установить python27-mod_wsgi с yum, вместо этого я верю. Здесь будет дан этот снимок и сообщение. – Sesshoumaru

0

Примечание: Я предоставил этот ответ, который использует mod_wsgi в pip, потому что я должен был сделать это сам недавно, чтобы запустить его во FreeBSD с помощью Python 3. Обычно это не делается, но он должен работать.

Если вы хотите установить mod_wsgi из pip, вы должны предоставить Apache правильный путь к mod_wsgi или установить модуль, который он создает, в установку Apache. Если вы используете его в своей системе, используя порты apt-get или pkg или BSD, послушайте мудрые советы Грэма.

Есть и другие вещи, которые могут быть одновременно неправильными, однако я считаю, что ближайшая ошибка заключается в том, что ваше приложение не может импортировать wsgi. Вы должны войти в свою среду, выполнив:

cd /opt/badgr 
. env/bin/activate 

Если это не удается, попробуйте source env/bin/activate

А затем установить mod_wsgi:

pip install mod_wsgi 

Это установит скрипт mod_wsgi-экспресс, который позволит вам для запуска Apache/mod_wsgi в качестве сервера разработки из командной строки. Сценарий также может помочь вам установить модуль, который он компилирует в ваш Apache.

Сначала мы должны иметь дело с тем фактом, что у Apache уже установлен модуль mod_wsgi из системных пакетов. Лучше всего удалить пакет системы для mod_wsgi. Вероятно, этот файл будет удален в conf.d с помощью строки LoadModule для wsgi_module.

Следующий запуск:

sudo mod_wsgi-express install-module 

Это необходимо скопировать модуль в Apache модули каталога и выходные две строки с LoadModule и директивы WSGIPythonHome. Добавьте новый файл wsgi.conf в каталог conf.d и добавьте к нему эти две строки. Перезапустите Apache.

Выполнение этого действия с помощью pip в вашем virtualenv гарантирует, что оно создаст правильную версию mod_wsgi в отношении версии выполняемого вами python.

+1

Использование '' pip install mod_wsgi' не поможет в этом случае, поскольку они не используют метод '' mod_wsgi-express'' использования '' mod_wsgi ''. Это совсем другой способ развертывания '' mod_wsgi'', и вы не смешиваете их. –

+0

Ах, тогда я обновлю, чтобы это отразить. Спасибо, я менее опытный вкладчик. –

+0

Graham, они просто должны указать на новый .so-файл в конфигурации apache, верно? Я хочу, чтобы я никого не вводил в заблуждение. –

0

По всем вопросам, касающимся этой проблемы, я думаю, что я не предоставил достаточно прав на папку с пакетами сайтов и ее содержимое. Я сделал некоторые успехи после этого, но теперь я столкнулся с другими проблемами, которые я открыл в другом потоке.

Я передал папку пакетов rwx рекурсивно для группы apache.

Вот следующая часть моих вопросов:

Issues getting Python 2.7 to work with my django project

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

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