Executando o servidor PHP-CLI

0

Bom dia a todos,

Recentemente me interessei pela tecnologia WebSocket. Eu construí um servidor usando PHP que eu corri no Windows usando o PHP CLI. Isso foi bom para o desenvolvimento, mas agora preciso pensar em implantação.

Eu consegui um pequeno VPS rodando o Ubuntu Server 10.10. Eu tenho conhecimento básico de Linux, então eu configurei meu cliente SSH, instalei o PHP-CLI e mexi para ter certeza de que funciona, o que faz.

Agora, posso simplesmente executar meu servidor usando

php server.php

Mas não acho que seja uma ótima maneira de fazer isso. Algumas preocupações:

  • O que acontecerá com a saída do console quando eu fechar meu cliente SSH?
  • E se o servidor travar?
  • Eu não posso fazer mais nada no meu VPS enquanto o servidor está sendo executado dessa maneira no thread principal

Em relação à saída do console; Existe uma maneira de redirecionar STDOUT ou algo para um arquivo, então eu ainda posso ver a saída do console no Windows, mas no meu VPS é registrado em vez disso? Quanto aos travamentos do servidor, quais são algumas boas maneiras de reiniciar alguns processos automaticamente na inicialização do servidor? E eu acho que eu poderia executá-lo como um daemon ou um serviço ou algo assim para não travar o tópico principal?

Então, quais são algumas soluções geralmente usadas para esses problemas? Existe algum lugar que eu possa ler mais sobre isso? Eu gostaria de aprender um pouco no processo!

Obrigado.

    
por Xeon06 16.02.2011 / 00:47

1 resposta

2

Para redirecionar a saída e os erros para some_other_file:

php server.php 2>&1 some_other_file

O > & amp; redireciona um fluxo para outro descritor de arquivo (no shell BASH):

  • 0 é stdin
  • 1 é stdout
  • 2 é stderr

Ou, 2 > & 1; redireciona 2 para 1. E, em seguida, para assistir a essa saída em tempo real:

tail -f some_other_file

Começando no momento da inicialização: você pode chamar o script de /etc/rc.local . Ou, uma solução mais avançada pode ser escrever um script no diretório /etc/init.d / . Veja /etc/init.d/README como fazer isso.

Se você criar o arquivo PHP, server.php, executável, poderá adicionar uma linha ao topo do arquivo (também conhecido como arquivo magic / shebang / hashbang) para chamar assim: server.php em vez de php server.php . Você pode até mesmo remover a extensão php se por algum motivo você quiser fazer isso. Assim:

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

Upstart é provavelmente o caminho a percorrer para garantir que o serviço continue em exibição. Este método não envolve o / etc / rc *. O Upstart possui cinco pacotes, todos instalados por padrão:

  • Upstart do daemon de inicialização e utilitário initctl
  • upstart-logd fornece o daemon de logd e o arquivo de definição de tarefa para o serviço logd
  • upstart-compat-sysv fornece arquivos de definição de tarefa para as tarefas rc e as ferramentas de reinicialização, runlevel, shutdown e telinit que fornecem compatibilidade com o SysVinit
  • startup-tasks fornece arquivos de definição de tarefa para tarefas de inicialização do sistema
  • system-services fornece arquivos de definição de tarefa para serviços tty

A aprendizagem é muito agradável e vale a pena. O Upstart tem um site: link

Outros bons posts: Qual é a diferença entre "Service" e "/etc/init.d / "?

    
por user8290 16.02.2011 / 01:56