Como iniciar automaticamente um serviço (apache2) com o Linux Mint

11

(Strangley) Meu Apache2 instalado não inicia ao efetuar login no Linux Mint.

A execução deste comando faz o seguinte:

sudo service apache2 start

Como devo tentar iniciar este serviço em cada login?

eoinoc
fonte
Você pode inserir esse comando ~/.xinitrc, que será executado na inicialização.
N0pe
2
@MaxMackie Pelo contrário, ~/.xinitrcé executado no momento do login, o que não está certo. O Apache precisa ser iniciado pela raiz no momento da inicialização.
Gilles 'SO- stop be evil' em
@ Gilles, certo, eu esqueci disso, obrigado por corrigir. No entanto, por que o apache precisa ser iniciado na inicialização? O login não realizaria aproximadamente a mesma coisa?
N0pe
@ MaxMackie Não, se você não fizer o login imediatamente após a inicialização, obviamente. Além disso, o Apache não é executado como você, então você teria que conceder privilégios. Ele deve iniciar parte dos scripts de inicialização e normalmente inicia.
Gilles 'SO- stop be evil' em
@Gilles certo. Obrigado por esclarecer isso.
N0pe 9/03/12

Respostas:

12

Debian (Ubuntu / Linux Mint)

rcconf (CLI-GUI)

sudo apt-get install rcconf
sudo rcconf

update-rc.d

sudo update-rc.d -f apache2 add

ou

sudo update-rc.d apache2 defaults

RedHat / Fedora / CentOS

chkconfig

sudo chkconfig --add apache2

ou

sudo chkconfig -- level 35 apache2 on
earthmeLon
fonte
O Apache já estava marcado quando executei o rcconf.
eoinoc
Executando o update-rc.dchumbo comando para um erro: update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5).
eoinoc
Você deu defaults apache2 update-rc.d ou update-rc.d -f apache2 adicionar 3 5
earthmeLon
1
Obrigado, mas nem funcionou. O primeiro resultou em um aviso "já existe", o segundo resultou em warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5).
eoinoc
6

Como o Mint é baseado no Ubuntu e o Ubuntu mudou para o Upstart, o Upstart Cookbook tem todas as informações para iniciar um serviço na inicialização ou em qualquer nível de execução especificado.

Este site fornece um livro de receitas detalhado para iniciar o Apache na inicialização.

bsd
fonte
Essa página fala sobre como inserir um script bash /etc/init.d/apache2. Mas esse arquivo já está cheio de um script bash muito mais complicado, que deve ter sido colocado lá pelo próprio Apache.
eoinoc
3

Outra causa do mesmo problema é a prioridade dos links do apache em rc [0-6] .d. Os meus eram S90 e K09, e o Apache não iniciava na inicialização. Definir as prioridades em seus padrões, 20, funcionou para mim. Os links existentes precisam ser removidos primeiro.

sudo update-rc.d -f apache2 remove
sudo update-rc.d apache2 defaults
htoip
fonte
2

No desligamento, vi um erro:

Erro de sintaxe na linha 230 de /etc/apach2/apache.conf .... / etc / apache / sites-enable / mysite: Esse arquivo ou diretório não existe

O problema era que mysitehavia um link simbólico para um arquivo na minha pasta pessoal.

Isso normalmente não deveria ser um problema, pensei.

Mas até onde eu sei, minha partição pessoal é criptografada . Portanto, acho que o Apache não pôde ler o arquivo do site virtual durante o carregamento. O arquivo não estava acessível até eu digitar minha senha.

Uma situação complexa e demorou meses para resolver :)

eoinoc
fonte
Então, como você resolveu isso?
Jonas Äppelgran
0

Uma nova resposta atualizada em 2019:

sudo systemctl start httpd

sudo systemctl enable httpd

O comando systemctl é uma nova ferramenta para controlar o sistema e o serviço systemd. Esta é a substituição do gerenciamento antigo do sistema SysV init. A maioria dos sistemas operacionais Linux modernos está usando essa nova ferramenta. Se você estiver trabalhando com o CentOS 7, Ubuntu 16.04 ou posterior ou sistema Debian 9. Eles optaram pelo systemd agora.

O serviço ativado é iniciado automaticamente na inicialização do sistema. Esta é a opção semelhante para systemd que chkconfig para o init do SysV.

rauldeng
fonte
1
Você pode inverter o pedido, para que ele seja ativado antes de solicitar que ele inicie.
Jeff Schaller