2009-11-18 5 views
1

Я разработал приложение CGI для Python, которое отлично работает в моей области разработки. Однако мой хостинг-провайдер дает мне небольшой контроль над своим сервером: я использую множество настраиваемых материалов в моей среде python (например, sqlalchemy и mako templating), а версия python для серверов слишком старая, чтобы ее можно было использовать. Мой вопрос: как настроить изолированную, полную автономную среду python в моем домашнем каталоге и установить необходимые модули для запуска моего приложения? ... самый простой способ;)Развертывание приложения CGI python

+0

Что вы контролируете на своем хосте? Какой сервер вы используете? Можете ли вы написать произвольные конфиги для сервера? Какая операционная система и архитектура - ваш хост? Эти детали необходимы, но не достаточные условия для получения хорошего ответа. –

+0

У меня есть контроль над моей домашней директорией, включая ~/public_html, мой провайдер использует apache, и я не могу получить доступ к его основным файлам конфигурации, но он настроен отлично для базового CGI. У хоста есть определенный пользовательский linux, установленный в поле x86_64 – akosch

+0

Это поможет добавить к заголовку вопрос «на сервере без доступных python». Люди, видящие этот вопрос, которого лучше всего обслуживают virtualenv, не будут видеть этот ответ из-за ваших необычных требований. –

ответ

4

как я создал изолированный, полный, автономный окружение питона в моем домашнем каталоге

  1. mkdir /home/me/.local (если он еще не существует.Вы не должны использовать .local но он становится нормальным местом, чтобы поместить это)
  2. mkdir /home/me/.local/src (Ditto)
  3. cd /home/me/.local/src
  4. wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz
  5. gzip -d Python-2.6.4.tgz
  6. tar xf Python-2.6.4.tar
  7. cd Python-2.6.4
  8. ./configure --prefix=/home/me/.local
  9. make
  10. make install

Надеюсь, теперь вы можете запустить Python:

  • /home/me/.local/bin/python

Установка пакетов вам нужно, используя обычный setup.py скрипт, но с вашей версией Python:

  • /home/me/.local/bin/python setup.py install

Набор hashbang на CGI-файлов, чтобы использовать версию Python:

  • #!/home/me/.local/bin/python

Рассмотрим перенастройки приложение WSGI, если вы можете. Разумеется, вы все равно можете развернуть приложения WSGI через CGI, используя wsgiref.handlers.CGIHandler, но в будущем, когда у вас будет менее печальная хостинговая среда, вы сможете развертывать с использованием гораздо менее расточительного интерфейса сервера, такого как mod_wsgi.

+0

большое спасибо: это сработало отлично! – akosch

0

Это выглядит как работа для virtualenv. На сайте:

Также, если вы не можете установить пакеты в каталог глобальных сайтов-пакетов? Например, на общем хосте.

Это выглядит как раз вверх по вашей аллее.

+0

Я нашел это сам, и это не то, что мне нужно: я не хочу использовать систему Python version ... Мне нужна отдельная среда с моим собственным Python, а не только с разными libs. – akosch

+0

Вот что приятно о virtualenv. Вам не нужно использовать Python-версию системы. Вы можете использовать любой бинарный Python, который вы хотите, пока вы можете выполнить его в своей системе. Virtualenv позволяет полностью изолировать среды исполнения для разных проектов или в этом случае от системы в целом. Каждый virtualenv, который вы создаете, является полностью отдельным экземпляром Python. Если вы этого хотите, у вас может быть один для каждого проекта, приложения или демона. Вот видео-учебник, который иллюстрирует, как легко его использовать: http://showmedo.com/videotutorials/video?name=2910000&fromSeriesID=291 – jathanism

+0

sry, если я был неясен: я не могу использовать virtualenv или easy_install, потому что им нужен python работать, и у меня нет рабочей среды python в этой системе. Мне нужно настроить python с нуля в моем домашнем каталоге – akosch

1

В вашей обуви я бы использовал pyinstaller, чтобы связать Python, мой код и все мои зависимости в один исполняемый файл установщика, загрузить его и запустить. Просто не забудьте использовать SVN-ствол pyinstaller - «выпущенная» версия WAY устарела.

Помните, что с помощью SQLAlchemy и всего остального с CGI вы можете обнаружить, что вы очень медленны, так как вы платите полную стоимость запуска каждый раз, когда страница посещается. Но если CGI - это все, что вы можете себе позволить, я думаю, что так я попытаюсь справиться! -)

0

Я нахожусь на общем плане. Помимо CGI, они также предлагают FastCGI, что делает вещи намного быстрее, чем CGI. Вы должны проверить, предлагает ли ваш хостинг-провайдер это. Или, может быть, они предоставляют Passenger for Ruby, чтобы вы могли скомпоновать свой Python.

Если вы скомпилируете Python самостоятельно, имейте в виду настройку UCS, если вы пытаетесь установить предварительно скомпилированные пакеты и испытывать сбои. См. StackOverflow article. В вики вики Dreamhost есть несколько советов о том, как вы могли бы на своем сервере: build and deploy Python; вы можете адаптироваться к вашим потребностям.

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