Запуск web.py как службы в Linux

Я использовал web.py для создания веб-службы, которая возвращает результаты в json.

Я запускаю его на своем локальном ящике как python scriptname.py 8888

Однако теперь я хочу запустить его на Linux-боксе.

Как я могу запустить его как службу в Linux?

обновить

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

У меня был небольшой скрипт на Python, который принимает в качестве входных данных файл и на основе некоторой логики разбивает этот файл. Я хотел использовать этот скрипт с веб-интерфейсом, который у меня уже есть (Grails). Я хотел вызвать это из приложения Grails, но не хотел делать это, выполнив командную строку. Поэтому я обернул скрипт Python как веб-сервис. который принимает два параметра и возвращает в json количество разделенных файлов. Этот веб-сервис будет ТОЛЬКО использоваться моим внешним интерфейсом Grails и ничем другим.

Итак, я просто хочу запустить этот небольшой сервис web.py, чтобы он мог отвечать на мой внешний интерфейс Grails.

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


person Anthony    schedule 08.10.2013    source источник
comment
Я запутался: это веб-приложение, которое на самом деле полагается на web.py, или тривиальный скрипт, который может работать в одиночку? Вам нужно запустить сценарий на другом хосте, отличном от Grails?   -  person Alois Mahdal    schedule 09.10.2013
comment
Мне это не нужно, но мне бы хотелось такой гибкости. это не веб-приложение. это тривиальный сценарий, который может работать в одиночку.   -  person Anthony    schedule 09.10.2013


Ответы (2)


В общем, есть две части этого.

Часть «удаленная и основанная на событиях»: служба, используемая удаленно по сети, требует определенного набора навыков: иметь возможность принимать (множественные) соединения, читать запросы, обрабатывать, отвечать, говорить по крайней мере на базовом TCP/HTTP, обрабатывать мертвые соединения, и если это больше, чем небольшая частная локальная сеть, она должна быть надежной (например, DoS) и, возможно, также выполнять некоторую аутентификацию.

Если ваш скрипт готов позаботиться обо всем этом, то он готов открыть свой собственный порт и слушать. Я не уверен, что web.py предоставляет все эти возможности.

Затем есть другая часть, «демонизация», когда вы хотите запустить сервер автоматически: запустить при загрузке, запустить под нужным пользователем, не блокируя вашего родителя (ssh, сценарий инициализации или что-то еще), не с открытым ttys, но, возможно, где-то регистрируется ...

Такие серверы, как nginx и Apache, созданы для этого и предоставляют такие интерфейсы, как mod_python или WSGI, так что гораздо более простые приложения могут отказаться от всего вышеперечисленного, насколько это возможно.

Таким образом, ответ будет таким: да, вам все еще нужен Nginx или что-то подобное, если только:

  • вы можете реализовать это самостоятельно на Python,

  • или вы используете скрипт только на локальном хосте и готовы пойти на некоторые риски нестабильности.

Тогда, вероятно, вы можете сделать это самостоятельно.

person Alois Mahdal    schedule 08.10.2013
comment
отлично, возьму mod_wsgi - person Anthony; 09.10.2013

попробуй это

python scriptname.py 8888 2>/dev/null

он будет работать как демон

person DirectorX    schedule 12.10.2013
comment
Пожалуйста, напишите какое-нибудь объяснение, чтобы сделать его лучшим ответом. - person Szymon; 12.10.2013