Установка опор Mod_wsgi (ckan) не работает - PullRequest
7 голосов
/ 30 марта 2011

Я настраиваю CKAN, приложение пилонов в соответствии с этими инструкциями: http://packages.python.org/ckan/deployment.html

Но когда я указываю на сервер (без настройки DNS), используя IP или имя хоста, я вижу только страницу приветствия apache, указав, что приложение ckan не загружается.

вот мой скрипт mod_wsgi:

import os
instance_dir = '/home/flavio/var/srvc/ckan.emap.fgv.br'
config_file = 'ckan.emap.fgv.br.ini'
pyenv_bin_dir = os.path.join(instance_dir, 'pyenv', 'bin')
activate_this = os.path.join(pyenv_bin_dir, 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
from paste.deploy import loadapp
config_filepath = os.path.join(instance_dir, config_file)
from paste.script.util.logging_config import fileConfig
fileConfig(config_filepath)
application = loadapp('config:%s' % config_filepath)

вот моя конфигурация виртуального хоста:

<VirtualHost *:80>

ServerName dck093

ServerAlias dck093

WSGIScriptAlias / /home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py
# pass authorization info on (needed for rest api)
WSGIPassAuthorization On

ErrorLog /var/log/apache2/ckan.emap.fgv.br.error.log
CustomLog /var/log/apache2/ckan.emap.fgv.br.custom.log combined
<Directory /home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin>
    Order deny,allow
    Allow from all
</Directory>
</VirtualHost>

Я пытаюсь отключить сайт по умолчанию 000 (с помощью a2dissite), но это не помогает. После этого я получаю страницу с ошибкой внутреннего сервера. После исправления некоторых разрешений мне удалось получить этот журнал ошибок Pylons:

sudo tail /var/log/apache2/ckan.emap.fgv.br.error.log 
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = self.application(environ, start_response)
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/usr/lib/pymodules/python2.6/repoze/who/middleware.py", line 107, in __call__
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = app(environ, wrapper.wrap_start_response)
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/lib/python2.6/site-packages/pylons/middleware.py", line 201, in __call__
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     self.app, environ, catch_exc_info=True)
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/lib/python2.6/site-packages/pylons/util.py", line 94, in call_wsgi_application
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = application(environ, start_response)
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/usr/lib/pymodules/python2.6/weberror/evalexception.py", line 226, in __call__
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     "The EvalException middleware is not usable in a "
[Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110] AssertionError: The EvalException middleware is not usable in a multi-process environment

Кто-нибудь может указать, что мне не хватает?

Ответы [ 4 ]

16 голосов
/ 31 марта 2011

Поскольку вы развертываете на Apache, убедитесь, что вы не находитесь в интерактивном режиме отладки - который использует EvalException.В своем конфигурационном файле Pylons (ckan.emap.fgv.br.ini) убедитесь, что у вас есть следующее:

[app:main]
set debug = false
3 голосов
/ 31 марта 2011

Ваша первая проблема заключается в том, что вы не можете использовать виртуальные хосты на основе имен в Apache, не имея имени хоста в DNS или локального / etc / hosts, который разрешает IP-адрес сервера, на котором работает Apache.

Вторая проблема заключается в том, что EvalException нельзя использовать в конфигурации с несколькими процессами. Читайте:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Browser_Based_Debugger

Либо отключите EvalException, либо настройте mod_wsgi таким образом, чтобы вы использовали режим демона с 'default' для одного процесса (не используйте процессы = 1).

Для получения информации о различных конфигурациях процессов / потоков, доступных для Apache / mod_wsgi, прочитайте:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

Вы хотите использовать тот, в котором wsgi.multiprocess имеет значение False.

1 голос
/ 30 марта 2011

Не эксперт по среде '' paste '', но не должен быть:

from paste.deploy.loadwsgi import loadapp
0 голосов
/ 12 февраля 2015

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

Прямо сейчас, если я получу 500 Ошибка сервера внутри CKAN (отображается хорошая страница CKAN с информацией об ошибке)в логах я могу найти только описание ошибки без трассировки стека:

[Thu Feb 12 17:04:55.037785 2015] [:error] [pid 15293:tid 139979468994304] [remote 89.71.231.138:5513] Error - <type 'exceptions.TypeError'>: 'NoneType' object is not iterable

Есть ли способ включить полную трассировку стека с помощью debug = false.

...