Развертывание пилонов на Apache с использованием mod_fcgid
Я попытался развернуть свое приложение Pylons, используя инструкции, найденные здесь. Это просто загружает страницу Pylons по умолчанию, когда я посещаю корень моего домена. Когда я пытаюсь войти в любой путь, я получаю сообщение
Unhandled Exception
An unhandled exception was thrown by the application.
Когда я просматриваю журнал ошибок для моего приложения и журнал ошибок Apache, кажется, что Pylons всегда пытается маршрутизировать вещи в контроллер ошибок. Однако обратите внимание, что вышеприведенное сообщение не то, что должен выводить мой контроллер ошибок.
Любые предложения о том, что проверить? Я люблю разрабатывать с Pylons, но это моя первая попытка развертывания. Я пробовал несколько конфигураций на разных веб-серверах, и мне не повезло.
ОБНОВЛЕНИЕ: Ниже приведена конфигурация для моего приложения Pylons (комментарии удалены, чтобы сделать его немного короче)
[DEFAULT]
smtp_server = localhost
error_email_from = paste@localhost
[server:main]
use = egg:PasteScript#flup_fcgi_thread
[app:main]
use = egg:linkdb
full_stack = true
static_files = true
cache_dir = %(here)s/data
beaker.session.key = linkdb
beaker.session.secret = b75f1813263ab9a082f67278daa26433
sqlalchemy.url = mysql://cclp:878048@mysql.mior.ca/ccorl
authkit.setup.enable = True
authkit.setup.method = form, cookie
authkit.form.authenticate.user.type = linkdb.model.auth:MyUsersFromDatabase
authkit.form.authenticate.user.data = linkdb.model
authkit.cookie.secret = c2b47614b6eb46c4bd7842cae10f27e4
authkit.cookie.signoutpath = /users/logout
authkit.form.template.obj = linkdb.model.auth:make_template
set debug = false
[loggers]
keys = root, routes, linkdb, sqlalchemy
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_routes]
level = INFO
handlers =
qualname = routes.middleware
[logger_linkdb]
level = DEBUG
handlers =
qualname = linkdb
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
ОБНОВЛЕНИЕ: И вот журнал ошибок, созданный приложением (я параноик, поэтому я пометил IP-адреса)
DEBUG:authkit.authenticate.cookie:These cookies were found: []
DEBUG:authkit.authenticate.cookie:Our cookie 'authkit' value is therefore ''
DEBUG:authkit.authenticate.cookie:Remote addr '***.***.***.***', value '', include_ip True
DEBUG:pylons.wsgiapp:Setting up Pylons stacked object globals
DEBUG:pylons.wsgiapp:No controller found, returning 404 HTTP Not Found
DEBUG:authkit.authenticate.multi:Status: '404 Not Found', Headers: [('Content-Type', 'text/html; charset=UTF-8'), ('Content-Length', '154')]
DEBUG:authkit.authenticate.multi:Status checker recieved status '404 Not Found', headers [('Content-Type', 'text/html; charset=UTF-8'), ('Content-Length', '154')], intecept ['401']
DEBUG:authkit.authenticate.multi:Status checker returns False
DEBUG:authkit.authenticate.multi:Multi: No binding was found for the check
DEBUG:authkit.authenticate.cookie:These cookies were found: []
DEBUG:authkit.authenticate.cookie:Our cookie 'authkit' value is therefore ''
DEBUG:authkit.authenticate.cookie:Remote addr '***.***.***.***', value '', include_ip True
DEBUG:pylons.wsgiapp:Setting up Pylons stacked object globals
DEBUG:pylons.wsgiapp:Resolved URL to controller: u'error'
DEBUG:pylons.wsgiapp:Found controller, module: 'linkdb.controllers.error', class: 'ErrorController'
DEBUG:pylons.wsgiapp:Controller appears to be a class, instantiating
DEBUG:pylons.wsgiapp:Calling controller class with WSGI interface
ОБНОВЛЕНИЕ: это скрипт fcgi, который использует мое приложение
#!/usr/bin/env python
import logging
# Load the WSGI application from the config file
from paste.deploy import loadapp
wsgi_app = loadapp('config:/var/www/linkdb/production.ini')
# Deploy it using FastCGI
if __name__ == '__main__':
logging.basicConfig(filename='/var/www/linkdb/error.log', level=logging.DEBUG)
from flup.server.fcgi import WSGIServer
WSGIServer(wsgi_app).run()
1 ответ
Хотя вы можете отладить проблему с fcgid, вам может оказаться гораздо проще развернуть ее с помощью mod_wsgi.
Проблема, с которой вы, вероятно, сталкиваетесь, связана с установкой debug=true в вашем INI-файле, который не работает в многопоточном режиме, или с кодом, который печатает в STDOUT. Если вы можете опубликовать больше ваших настроек, логов и т. Д., То будет относительно легко увидеть, что не так. Вызываются ли действия внутри корневого контроллера? Вы изменили свои маршруты?
Вы использовали virtualenv для настройки вашей среды (установщик go-pylons.py?) Или вы использовали системные библиотеки и сделали easy_install в своем корне?