Questão Como executar o script como um serviço do Windows XP?


Eu quero rodar meu servidor web ruby ​​como um Serviço do Windows XP.

Alguém pode aconselhar como fazer isso?


Eu mudei (removi a palavra rubi) o título para que mais pessoas possam encontrar a resposta. Ele funcionará para qualquer tipo de script.


1


origem




Respostas:


Estou editando um documento que criei e publiquei na Web para outro problema difícil e o adaptei à sua pergunta. Não posso ter 100% de certeza de que as ferramentas do Resource Kit funcionarão com o XP, mas acredito que provavelmente funcionarão.

1) Crie um arquivo de lote para executar seu script e iniciar seu servidor Ruby. Para ser franco, não tenho informações suficientes para lhe dizer como fazer isso. Copie o arquivo em lotes para um local seguro, como c: \ windows \ system32

2) Baixe o kit de recursos do Windows 2003 e instale-o em um diretório sem espaços, não o padrão em “C: \ Program Files”. Use C: \ RECOURCEKIT, pois vou usá-lo para o restante do documento. Isso é muito importante para alguns programas, que não entendem o espaço em “C: \ Arquivos de Programas”, mas não para outros… por segurança, coloque aqui.

3) Abra um prompt de comando e vá para o diretório em que você instalou o Windows 2003 resource kit, neste caso, C: \ RESOURCEKIT.

4) Nesse diretório, instale o script como um serviço com o seguinte comando “instsrv YourServiceName C: \ RESOURCEKIT \ srvany.exe” sem as aspas em torno dele. Você pode nomear o serviço a qualquer nome razoavelmente não muito longo que desejar e isso aparecerá no arquivo Services.msc. Isso deve retornar "O serviço foi adicionado com sucesso!" Em seguida, temos que configurar o novo serviço YourServiceName.

5) Abra o editor do Registro para a chave [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ YourServiceName].

6) Clique com o botão direito do mouse na chave YourServiceName e faça “New> Key” e nomeie Parameters (case sensitive).

7) Expanda a nova chave Parameters e, no painel direito, clique com o botão direito do mouse e faça “New> String Value” e nomeie-o como Application (case sensitive).

8) Dê um duplo clique na sua nova chave “Application” e digite c: \ windows \ system32 \ YourBatchFileName.bat e salve-a. O serviço está agora pronto para ser executado.

9) Teste execute-o a partir do Painel de Controle> Ferramentas do Administrador> MMC de Serviços. Você verá o serviço YourServiceName agora listado e você pode iniciá-lo.

Aqui está uma cópia do meu artigo original: http://www.eggheadcafe.com/microsoft/Windows-Server-Networking/30399980/solution-to-have-a-persistent-vpn-start-automatically-on-boot.aspx


5



Funciona como um encanto. Obrigado. Pena que eu não posso votar 100x ... - Radek
Parar o serviço não para o servidor da web. Posso fazê-lo funcionar de alguma forma para que a web pare quando o serviço não está em execução? - Radek
@Radek Provavelmente não, a menos que você possa programar seu script não apenas para iniciá-lo, mas também para interrompê-lo condicionalmente. Eu nunca cansei disso, mas se você colocar condições no script para checar e ver se foram parados, então execute a parte inicial do script, e se estiver rodando, então pare. Esse problema é comum com esses tipos de serviços ad-hock. - KCotreau
Em alternativa, você poderia simplesmente criar um arquivo de lote de parada e colocá-lo em algum lugar conveniente, como o lançamento rápido, por vezes você quer pará-lo no meio de uma sessão. Se você estiver executando o XP pro, você poderia entrar em gpedit.msc, e você também pode colocar o arquivo de lote de parada nos scripts de desligamento do sistema, para que ele seja encerrado corretamente no desligamento do sistema. - KCotreau
Eu posso usar taskkill /f /t /im ruby.exe para parar o servidor, mas eu não sei como implementá-lo em relação a parar o servidor do MMC. Você sabe o que o serviço de parada faz? ele executa o serviço novamente com algum parâmetro ou algo assim? - Radek