Запуск сервера PHP-CLI

Всем доброго времени суток,

Недавно я заинтересовался технологией WebSocket. Я построил себе сервер с использованием PHP, который я запускал на Windows, используя PHP CLI. Это было хорошо для разработки, но теперь мне нужно подумать о развертывании.

У меня есть небольшой VPS под управлением Ubuntu Server 10.10. У меня есть базовые знания о Linux, поэтому я настроил свой SSH-клиент, установил PHP-CLI и начал работать, чтобы убедиться, что он работает.

Теперь я могу просто запустить свой сервер, используя

php server.php

Но я не думаю, что это отличный способ сделать это. Несколько проблем:

  • Что произойдет с выходом консоли, когда я закрою свой SSH-клиент?
  • Что если произойдет сбой сервера?
  • Я не могу сделать что-нибудь еще на моем VPS, пока сервер работает таким образом, в основном потоке

Относительно вывода консоли; Есть ли способ перенаправить STDOUT или что-то в файл, так что я все еще могу видеть вывод консоли на Windows, но на моем VPS он записывается вместо этого? Что касается сбоев сервера, какие есть хорошие способы автоматического перезапуска некоторых процессов при загрузке сервера? И я думаю, что мог бы запустить его как демон или службу, или что-то в этом роде, чтобы он не зависал в главном потоке?

Итак, каковы некоторые обычно используемые решения для этих проблем? Есть ли где-нибудь, где я могу прочитать больше об этом? Я хотел бы немного узнать в процессе!

Спасибо.

0
задан 16 February 2011 в 02:47

1 ответ

Перенаправить и вывод и любые ошибки к some_other_file:

php server.php 2>&1 some_other_file

> и перенаправления поток к другому дескриптору файла (в оболочке Bash):

  • 0 stdin
  • 1 stdout
  • 2 stderr

Или, 2> &1 перенаправляет от 2 до 1. И затем наблюдать тот вывод в режиме реального времени:

tail -f some_other_file

Запуск во время начальной загрузки: Вы могли назвать сценарий от/etc/rc.local. Или, больше передового решения могло бы состоять в том, чтобы записать сценарий в/etc/init.d/каталоге. См./etc/init.d/README для того, как сделать это.

При создании файла PHP, server.php, исполняемого файла, можно добавить строку к вершине файла (иначе файл magic/shebang/hashbang) для вызова его этим путем: server.php вместо php server.php. Вы могли даже удалить php расширение, если по некоторым причинам Вы хотите сделать это. Как это:

#!/usr/bin/php
<?php
    // PHP code here

Выскочка является, вероятно, способом пойти, чтобы удостовериться, что сервис остается рабочим. Этот метод не включает/etc/rc*. У выскочки есть пять пакетов, все установленные по умолчанию:

  • Выскочка init демон и initctl утилита
  • выскочка-logd предоставляет logd демону и файлу определения задания для logd сервиса
  • upstart-compat-sysv обеспечивает файлы определения задания для емкостно-резистивных задач и перезагрузки, runlevel, завершения работы и telinit инструментов, которые предоставляют совместимости с SysVinit
  • задачи запуска обеспечивают файлы определения задания для системных задач запуска
  • системные службы предоставляют файлы определения задания tty сервисам

Изучение очень приятно и определенно стоит того. У выскочки есть веб-сайт: http://upstart.ubuntu.com/

Другие хорошие сообщения: каково различие между "Сервисом" и "/etc/init.d /"?

0
ответ дан 16 February 2011 в 02:47

Другие вопросы по тегам:

Похожие вопросы: