executar o nginx como serviço do windows

estou a tentar executar o nginx (proxy inverso) como um serviço do windows para que seja possível substituir um pedido mesmo quando um utilizador não está ligado.

procurei muito e encontreiwinsw que iria criar um serviço a partir de um .ficheiro exe (como o nginx).

encontrei muitos tutoriais online a dizer para criar um ficheiro xml como se segue

<service>
   <id>nginx</id>
   <name>nginx</name>
   <description>nginx</description>
   <executable>c:\nginx\nginx.exe</executable>
   <logpath>c:\nginx\</logpath>
   <logmode>roll</logmode>
   <depend></depend>
   <startargument>-p c:\nginx</startargument>
   <stopargument>-p c:\nginx -s stop</stopargument>
</service>

(eu tenho nginx.exe em uma pasta chamada nginx sob c: o os caminhos estão corretos).

O problema é que ... o serviço é criado, mas não consigo fazê-lo começar, cada vez que tento iniciá-lo aparece uma janela a dizer

Error 1053: The service didn't respond to the start or control request in a timely fashion
Alguém sabe como posso corrigir isto ou uma forma diferente de executar o nginx como serviço de janelas?

Author: John Smith, 2016-11-28

5 answers

Apenas tropecei aqui e consegui que as coisas funcionassem com esta alternativa livre de código aberto: https://nssm.cc/ É basicamente apenas uma interface gráfica para ajudá-lo a criar um serviço. Passos que eu usei:
  1. Obter NGinx ( http://nginx.org/en/download.html ) e uzip to C:\foobar\nginx
  2. Obter nssm ( https://nssm.cc/)
  3. executar "nssm instalar nginx" a partir da linha de comandos
  4. na gui do NSSM faça o seguinte:
  5. na página da aplicação: definir a localização para C:\foobar\nginx\nginx.exe, configure a pasta inicial para C:\foorbar\nginx
  6. no tipo de Página I / O "iniciar nginx" na entrada lenta. Opção definida C:\foobar\nginx\logs\service.as.registo e C:\foobar\nginx\logs\service.errar.registar nos 'slots' de saída e erro.
  7. Carregue em "install service". Vai aos Serviços, começa o "nginx". Hit http://localhost:80 e devias ir buscar o logon nginx. Desligue o serviço, desactive a 'cache' do navegador e actualize, o ecrã deverá agora não carregar.

Você deve estar pronto para ir a partir de então.

 15
Author: Dave, 2017-01-04 15:15:57

Eu encontrei NSSM (O Gestor de serviços que não chupa): um programa que faz exactamente o que eu quero e é muito mais fácil de configurar.

 2
Author: John Smith, 2018-09-07 06:00:00

Encontrei outra solução que não NSSM. Esta é a embalagem de Serviço do Windows e as seguintes são as instruções:

  1. Descarregue a última versão do Windows Service Wrapper via github .

    • a versão atual desta escrita é v2. 1. 2 (desde v2.x executáveis para. NET2. 0 e. NET4. 0 estão disponíveis-outros apenas a pedido.)
  2. Mudar o nome do winsw-xxxx.exe a algo como nginxservice.exe.

      Isto é ... o nome que irá aparecer para o processo que possui o seu processo Nginx.
  3. Coloque um ficheiro XML ao lado do ficheiro exe com o mesmo nome de base, por exemplo, nginxservice.xml. O conteúdo deve ser como abaixo (verifique a sua localização nginx).

<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>c:\nginx\nginx.exe</executable> <logpath>c:\nginx\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p</startargument> <startargument>c:\nginx</startargument> <stopexecutable>c:\nginx\nginx.exe</stopexecutable> <stopargument>-p</stopargument> <stopargument>c:\nginx</stopargument> <stopargument>-s</stopargument> <stopargument>stop</stopargument> </service>

  • Poderá encontrar detalhes actualizados sobre a configuração na página de configuração do GitHub e um exemplo genérico que mostra todas as opções possíveis aqui .

      [7] comando nginxservice.exe install.
    • Agora você terá um serviço Nginx em seus serviços! (Está configurado para iniciar automaticamente no arranque; se você quiser iniciar o seu servidor, você deve iniciar manualmente o serviço (net start Nginx).)

A resposta acima foi retirada de um post.

 1
Author: Sam G, 2017-09-11 10:18:14

Como dito em outras respostas NSSM é a melhor ferramenta para executar Nginx como um serviço.
Se você não quiser usar nenhum software externo de terceiros então você pode implementar qualquer um destes dois métodos.

  • Escalonamento De Tarefas Do Windows
  • atalho de arranque do Windows

Escalonamento De Tarefas Do Windows

  • Como mencionado em esta resposta prepare um começo.bat file.
  • põe este ficheiro onde o nginx.a exe está presente.
  • abrir janelas escalonamento de tarefas e configurar a tarefa como descrito em esta resposta para executá-la indefinidamente.
  • não se esqueça de executar esta tarefa como o maior privilégio com a conta do sistema, mais detalhes podem ser encontrados aqui .
  • faça a tarefa para começar diariamente em um determinado momento, através do arquivo bat irá verificar se o serviço já está em execução para evitar a criação de vários nginx.casos exe.
  • Se, por alguma razão, a Nginx se desligar, dentro de 5 minutos, irá parar. Comece.

Atalho de arranque do Windows

  • Crie um atalho de nginx.exe e coloque - o na pasta de arranque do Windows.

  • Siga esta resposta para encontrar a sua localização inicial.

  • o Nginx irá correr automaticamente sempre que entrar no sistema.
  • Este é o mais fácil. No entanto, depende do perfil do utilizador, ou seja, se estiver a correr o Nginx num servidor, ele irá correr apenas para a sua conta de utilizador, quando se registar pára. Isto é ideal para o ambiente dev.
 0
Author: Soumendra, 2018-02-03 08:56:15
Vais precisar disto para o winsw.
   <service>
        <id>nginx</id>
        <name>nginx</name>
        <description>nginx</description>
        <executable>c:\...\nginx.exe</executable>
        <logpath>...</logpath>
        <logmode>roll</logmode>
        <stopexecutable>c:\nginx\nginx-1.14.0\nginx.exe</stopexecutable>
        <stopargument>-s</stopargument>
        <stopargument>stop</stopargument>
    </service>

Vai precisar de um <executable> assumindo que está a usar a nginx.conf portanto, não precisa de argumentos iniciais e também de um <stopexecutable> e <stopargument> s (para emular nginx -s stop)

 0
Author: tmjee, 2018-05-28 01:57:26