Como obtenho o Apache na inicialização durante o boot no Linux?

30

Instalei o Apache 2 a partir do código-fonte em minha caixa do Linux. apachectl -k start funciona muito bem, mas como obtenho o Apache para iniciar no momento da inicialização?

Isso está em uma distribuição do Red Hat Linux:

Linux < hostname > 2.6.9-55.ELsmp # 1 SMP Sex 20 Abr 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux

    
por grieve 01.06.2009 / 16:13

7 respostas

46

Você deseja adicionar seu script de inicialização ao nível de execução apropriado. O script de inicialização normalmente é /etc/init.d/apache2 , no qual você pode executar manualmente /etc/init.d/apache2 start para iniciá-lo.

No Gentoo você escreveria:

rc-update add apache2 default

No Ubuntu / Debian isso funciona:

sudo update-rc.d apache2 defaults

No Red Hat Linux / Fedora / CentOS, um pequeno googling mostra isso:

chkconfig --add httpd

Varia um pouco da distribuição para a distribuição, mas a ideia é geralmente a mesma. Basicamente, todos esses comandos fazem um link simbólico de /etc/init.d/ para a pasta de nível de execução apropriada em /etc/ .

    
por 01.06.2009 / 16:19
25

Aqui está o que finalmente funcionou para mim. Isso pressupõe que você é o usuário root.

  1. vi /etc/init.d/apache2 (edite-o conforme mostrado abaixo)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --add apache2
  4. chkconfig --list apache2 (para verificar se funcionou)

Conteúdo do /etc/init.d/apache2:

#!/bin/bash
#
# apache2        Startup script for the Apache HTTP Server
#
# chkconfig: 3 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.

/usr/local/apache2/bin/apachectl $@

Você pode obter o runlevel rodando / sbin / runlevel, que no meu caso era 3. E é claro que você precisa chamar sua versão do apachectl, que no meu caso era / usr / local / apache2 / bin / apachectl

Graças ao seguinte:

por 01.06.2009 / 17:27
7

Verifique se você tem o script httpd init no diretório /etc/rc.d . Se sim, você pode simplesmente executar o seguinte comando que permite que o serviço link inicie no momento da inicialização.

chkconfig --level 345 httpd on

Se você não tiver o script init, basta anexar o arquivo /etc/rc.local com apachectl -k start (o comando para iniciar o Apache).

    
por 01.06.2009 / 17:28
3

Como você instalou por fonte, não haverá um script de inicialização instalado no diretório /etc/init.d/. O binário do apachectl é projetado para ser compatível com as opções padrão do script init, então você pode simplesmente fazer uma ligação simbólica nele em vez de criar um script wrapper (por exemplo, ln -s / usr / local / sbin / apachectl /etc/init.d/ apache)

Você pode seguir os procedimentos descritos nas outras postagens para adicionar links para invocar o script de inicialização nos runlevels corretos.

Citação: Documentação do Apache link

Starting at Boot-Time

If you want your server to continue running after a system reboot, you should add a call to apachectl to your system startup files (typically rc.local or a file in an rc.N directory). This will start Apache as root. Before doing this ensure that your server is properly configured for security and access restrictions.

The apachectl script is designed to act like a standard SysV init script; it can take the arguments start, restart, and stop and translate them into the appropriate signals to httpd. So you can often simply link apachectl into the appropriate init directory. But be sure to check the exact requirements of your system.

    
por 01.06.2009 / 16:28
1

chkconfig - níveis 345 httpd

iniciará o httpd nos runlevels 3,4,5.

chkconfig --list mostrará todos os serviços e seus runlevels de inicialização atuais. 345 é típico para um serviço de rede.

    
por 01.06.2009 / 16:17
1

No Red Hat Linux existe um utilitário útil chamado ntsysv que permite selecionar quais serviços você deseja iniciar no seu nível de execução atual. Você também especifica qual nível de execução deseja editar ao iniciar o utilitário usando --level .

Desça até o httpd e pressione Espaço para que uma estrela apareça na caixa da esquerda. Então, Tab para OK. Pressione Return para salvar e retornar ao shell.

Eu descobri que ele é instalado por padrão. Eu nunca estive em uma posição onde não foi instalado.

Você precisaria instalar o serviço primeiro copiando o script de serviço para /etc/init.d e executando:

chkconfig --add <script name>
    
por 01.06.2009 / 17:34
1

Depende do seu sabor do Linux. Assumindo que o arquivo /etc/init.d/apache2 foi criado, tente:

chkconfig -a apache2

ou

update-rc.d apache2 defaults

Um deles deve funcionar.

    
por 01.06.2009 / 16:18