Il server Apache non si avvia automaticamente


11

Ho installato Apache molto tempo fa come parte della configurazione dell'ambiente di sviluppo sul mio laptop.

Tuttavia, poiché l'ho interrotto alcuni mesi fa, non si avvia più automaticamente all'avvio. Ho questo problema sul mio laptop a casa E sul mio laptop al lavoro.

In entrambi i casi, alcuni mesi fa ho installato Apache in Ubuntu 10.10, l'ho usato per diverse settimane senza problemi, ma poi un giorno l'ho fermato e ora non si avvia più automaticamente. Ho provato a eseguire l'aggiornamento rc per esso manualmente, ma mi è stato detto che lo script di init è già in uso.

Tuttavia, avviarlo / riavviarlo manualmente con

sudo service apache2 start/restart

funziona bene. In entrambi i casi, ho lasciato che fosse fino a dopo l'aggiornamento a 11.04, perché speravo che sarebbe stato risolto dalla nuova versione. Ma non lo è! Le sarei grato se qualcuno potesse dirmi come riavviare automaticamente Apache.

Risposte:


10

Prova a correre

update-rc.d apache2 enable [list of run levels]

come radice.

Potresti essere interessato a leggere

man update-rc.d

1
Grazie mille, ho eseguito il comando (senza un elenco di runlevel, solo le impostazioni predefinite) e sembra funzionare. Sai perché sembrava smettere di funzionare? Non ho giocherellato con gli script di init, penso di aver appena bloccato Apache dalla riga di comando - ma non avevo intenzione di fermarlo definitivamente . :-)
Carsten Agger,

Non ho idea del perché smetta di funzionare :) Forse dopo l'aggiornamento qualcosa inizia a funzionare in modo errato.
ignar

Grazie, ma non aiuta. Indipendentemente da come chiamo update-rc.d abilita apache2, apache smette di funzionare automaticamente. Devo sempre avviarlo manualmente. Sembra che non ci siano problemi reali, poiché inizia sempre correttamente quando lo faccio manualmente.
Carsten Agger,

9

Sto aggiungendo questa risposta in base ai problemi recenti che ho riscontrato con gli stessi sintomi.

Prima alcuni dati di base:

  • Ubuntu utilizza gli script nella /etc/init.d/cartella per avviare / arrestare i servizi.
  • Ubuntu utilizza collegamenti simbolici a quegli /etc/init.d/script, memorizzati nelle /etc/rc#.d/cartelle, per avviare / arrestare i servizi in base al "runlevel".
  • I collegamenti simbolici che iniziano con una "S" indicano che è necessario avviare il servizio.
  • I collegamenti simbolici che iniziano con una "K" indicano che il servizio deve essere arrestato (ucciso).
  • Runlevel 1 esegue gli script collegati in modo simbolico /etc/rc1.d/, usa runlevel 2 /etc/rc2.d/e così via.
  • Il runlevel predefinito per Ubuntu è 2.
  • L'installazione di Apache viene eseguita essenzialmente, sudo update-rc.d apache2 defaultscreando i collegamenti simbolici appropriati nelle /etc/rc#.d/cartelle.

Quindi sembra che sul mio server abbia funzionato qualcosa o qualcuno ad un certo punto sudo update-rc.d apache2 disableche ha rimosso tutti i collegamenti simbolici "S" e li ha sostituiti con collegamenti simbolici "K". Uccidendo così, o semplicemente non avviando, Apache durante l'inizializzazione di uno dei runlevel.

La mia soluzione era solo per riattivare Apache:

sudo update-rc.d apache2 enable

Ora Apache si avvia / si arresta come previsto all'avvio o al cambio dei runlevel.

NB:

Vale la pena notare che la sola esecuzione di sudo update-rc.d apache2 defaultsnuovo non è sufficiente perché rileva l'esistenza di collegamenti simbolici e considera che sono ciò che si desidera. Risponde semplicemente con:

System start/stop links for /etc/init.d/apache2 already exist.

1
Grazie! Questo è stato molto utile per la risoluzione dei problemi della mia configurazione.
Reor

1
Sto riscontrando questo problema, ma questa soluzione sorprendentemente non ha funzionato. Quando corro sudo update-rc.d apache2 enable defaultsrimuove quello che ho e poi lo rimette a posto. Ho K09apache2in rc0, 1 e 6 e ho S91apache2in rc2, rc3, rc4, rc5. service apache2 startfunziona bene, ma devo farlo dopo ogni riavvio poiché non si avvia automaticamente. mysql, d'altra parte, si avvia sempre bene.
Buttle Butkus,

1
Quelli sembrano giusti. Potresti voler aprire una nuova domanda con i dettagli del tuo problema specifico ed essere sicuro di includere linee pertinenti dal tuo /var/log/sysloge /var/log/apache2/error.log. Mandami un messaggio con il link alla domanda e vedrò se posso aiutarti.
Karl Wilbur,

3

In questo caso, ho scoperto perché Apache non sarebbe partito. Non ho trovato traccia di questo nei log di avvio, ma solo nell'output stampato sullo schermo all'avvio.

Ma ecco qui: l'ultima riga della sceneggiatura /etc/apache2/apache2.confnon è riuscita.

Perché?

Dice:

Include sites-enabled/

Tuttavia, due dei siti che ho creato si trovano nella mia directory home, che è crittografata!

Quindi, all'avvio (durante l'avvio di Apache) questi siti non esistono e Apache ha esito negativo e si rifiuta di essere eseguito.

Soluzione?

Ho creato un piccolo script chiamato "disable_sites" e l'ho collegato simbolicamente in /etc/rc0.de /etc/rc6.d(arresto e riavvio):

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Ho anche creato uno script per riattivare i siti ogni volta che eseguo l'accesso e l'ho aggiunto come programma di avvio nelle mie Impostazioni di sistema. Quindi ora funziona!

Quindi, suppongo che la lezione qui sia che quando Apache non riesce a caricarsi inspiegabilmente durante l'avvio e non riesci a trovare alcun errore nei log o all'avvio manuale del server, controlla se tutte le directory di cui ha bisogno sono disponibili. Questo potrebbe probabilmente essere risolto anche in qualche altro modo.


Sono sorpreso che non hai trovato errori nei registri. In passato ho scoperto che alcuni errori di avvio di Apache non si trovavano nel file di registro che mi aspettavo, ma in un file di registro per uno dei miei host virtuali. Potrebbe essere questo il caso?
Marius Gedminas

apachectl configtestti avrebbe avvisato della mancanza di autorizzazioni per accedere ai file, mentre era in esecuzione come demone.
Anuga,

1

Per gli altri che cercano (googling) questo problema, controlla che se esegui:

chkconfig |grep httpd

hai capito

httpd 0: spento 1: spento 2: acceso 3: acceso 4: acceso 5: acceso 6: spento

altrimenti fai:

chkconfig httpd on

(scusate su Ubuntu chkconfig equivalente è update-rc.d vedi alternativa a Chkconfig per Ubuntu Server? )


0

Ho avuto lo stesso problema e sto eseguendo Ubuntu 14 su una configurazione locale di Vagrant. Ho rimosso la /etc/apache2/sites-enableddirectory e aggiunto un link alla mia home directory, che ovviamente è montata sul mio disco locale secondo le configurazioni di Vagrant.

Si scopre che apache non vedeva la directory perché la risorsa non era ancora montata. Ho riscritto la mia disposizione su Vagrant per copiare semplicemente la sites-enableddirectory invece di aggiungere un link simbolico.

Ho anche fatto sudo update-rc.d apache2 enablecome suggerito Karl Wilburper essere sicuro che apache init fosse abilitato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.