Работает на сервере RHEL 5. Попытка создать небольшое приложение CherryPy, которое принимает аргументы из URL-адреса (например, internet.com/cherrypy/data/22/45, вернет 22 и 45), а затем использовать это для запроса SQL Server с этими включенными аргументами. Затем возвращает это в формате JSON. Застрял на довольно большом препятствии.
RHEL 5 поставляется с Python 2.4, в 2.4 нет встроенной обработки JSON, поэтому я установил Python26 из EPEL вместе с 2.4. Я могу запустить 2.6 с командой python26, а также 2.4 с простой командой python. Я оставил 2.4 включенным, так как читал, что yum зависит от 2.4. Затем я удалил CherryPy из 2.4 и переустановил его в 2.6. Я запускаю CherryPy под Apache2 с Mod_wsgi. Так что я предполагаю, что это может быть корнем проблемы. Я подумал, что если бы я добавил shebang (только что узнал об этом сегодня, отличное имя, ха-ха.) В свой скрипт CherryPy, который интерпретировал бы его с помощью 2.6, но этого не произошло, и я все еще получаю 500 ошибок, когда перехожу к корню приложение CherryPy (internet.com/cherrpy/). Это мой сценарий на данный момент:
#!/usr/bin/python2.6
import sys
sys.stdout = sys.stderr
import atexit
import threading
import cherrypy
cherrypy.config.update({'environment': 'embedded'})
class Root(object):
def index(self):
return 'Nothing to see here. Move along.'
index.exposed = True
def data(self, building, ser):
return 'You requested data for SER number: ' + ser + ' in building number: ' + building
data.exposed = True
application = cherrypy.Application(Root(), script_name=None, config=None)
У меня установлен mod_wsgi 3.2 (mod_wsgi-3.2-1.el5.x86_64.rpm), который, как мне кажется, я загрузил через wget и установил локально, потому что его не было в репозитории RHEL.
Это строка в моем httpd.conf, которая относится к CherryPy:
WSGIScriptAlias /cherrypy /fs1/html/data/scripts/test.py
Я не уверен, что причиной является наличие двух версий python в системе, и он не знает, с помощью чего интерпретировать скрипт, или mod_wsgi является виновником, и мне нужно переустановить версию, созданную для 2.6 (Этот и связанный с ним вопрос предполагает, что). Кто-нибудь знает наверняка, что мне делать?
Редактировать: Это руководство на кодовой странице googled mod_wsgI указывает на сборку с аргументом для другой версии python. Должен ли я сделать это и передать аргумент «--with-python = python26»?
Edit2: пробовал построить mod_wsgi из источника с помощью:
sudo ./configure --with-python=/usr/bin/python26
Но после запуска make меня встречает вот такое барахло: http://pastebin.com/khzctxDT Это все, что я мог скопировать, попытался записать вывод в файл с "sudo make> file.txt", но я получаю ошибку отказа в разрешении. Скучаю по руту ...
Да, вам нужно перестроить mod_wsgi для конкретной версии Python, которую вы собираетесь использовать.
Как описано в требованиях, подробно описанных в инструкциях по установке, предоставленных с исходным кодом mod_wsgi, у вас должны быть установлены пакеты разработки как для Python, так и для Apache. Кажется, у вас не установлен пакет разработки для Python.
Итак, ознакомьтесь с инструкциями по установке, прилагаемыми к самому mod_wsgi, а также по адресу:
http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide