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 dizerError 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?
5 answers
- Obter NGinx ( http://nginx.org/en/download.html ) e uzip to C:\foobar\nginx
- Obter nssm ( https://nssm.cc/)
- executar "nssm instalar nginx" a partir da linha de comandos
- na gui do NSSM faça o seguinte:
- na página da aplicação: definir a localização para C:\foobar\nginx\nginx.exe, configure a pasta inicial para C:\foorbar\nginx
- 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.
- 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.
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.
Encontrei outra solução que não NSSM. Esta é a embalagem de Serviço do Windows e as seguintes são as instruções:
-
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.)
-
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.
- 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.
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.
<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
)