Всем доброго времени суток,
Недавно я заинтересовался технологией WebSocket. Я построил себе сервер с использованием PHP, который я запускал на Windows, используя PHP CLI. Это было хорошо для разработки, но теперь мне нужно подумать о развертывании.
У меня есть небольшой VPS под управлением Ubuntu Server 10.10. У меня есть базовые знания о Linux, поэтому я настроил свой SSH-клиент, установил PHP-CLI и начал работать, чтобы убедиться, что он работает.
Теперь я могу просто запустить свой сервер, используя
php server.php
Но я не думаю, что это отличный способ сделать это. Несколько проблем:
Относительно вывода консоли; Есть ли способ перенаправить STDOUT или что-то в файл, так что я все еще могу видеть вывод консоли на Windows, но на моем VPS он записывается вместо этого? Что касается сбоев сервера, какие есть хорошие способы автоматического перезапуска некоторых процессов при загрузке сервера? И я думаю, что мог бы запустить его как демон или службу, или что-то в этом роде, чтобы он не зависал в главном потоке?
Итак, каковы некоторые обычно используемые решения для этих проблем? Есть ли где-нибудь, где я могу прочитать больше об этом? Я хотел бы немного узнать в процессе!
Спасибо.
Перенаправить и вывод и любые ошибки к some_other_file:
php server.php 2>&1 some_other_file
> и перенаправления поток к другому дескриптору файла (в оболочке Bash):
Или, 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*. У выскочки есть пять пакетов, все установленные по умолчанию:
Изучение очень приятно и определенно стоит того. У выскочки есть веб-сайт: http://upstart.ubuntu.com/
Другие хорошие сообщения: каково различие между "Сервисом" и "/etc/init.d /"?