Diversi modi per riavviare Apache?


11

Ho una domanda su Apache qui.

Per tutta la mia carriera come sviluppatore, ho riavviato Apache in questo modo:

sudo /etc/init.d/apache2 restart

Proprio oggi ho distribuito la mia prima applicazione Rails, ma non riuscivo a riavviare Apache sul computer host. Quando l'ho provato in quel modo, Apache avrebbe provato a riavviare, ma alla fine si sarebbe bloccato.

Questo, tuttavia, ha funzionato bene:

sudo apachectl restart

Quali sono le differenze tra queste due tecniche? Avevo supposto che il secondo fosse, nella migliore delle ipotesi, "zucchero sintattico" per il primo, ma questo non deve essere il caso, dato che quest'ultimo ha funzionato mentre il primo no.

Se è pertinente (e sospetto che possa essere), questa applicazione Rails utilizza Phusion Passenger. La mia precedente esperienza di sviluppo (per cui il metodo precedente funziona bene) è principalmente con PHP. Sono abbastanza nuovo su Rails.

Il server in questione esegue Ubuntu 11.04 (Natty).


1
Un'altra alternativa è il riavvio del servizio apache2, anche se non sono sicuro di come questo differisca dai precedenti 2 se non altro
Phil

Risposte:


6
sudo /etc/init.d/apache2 restart

Questo metodo utilizza gli script init della tua distro Linux per riavviare il processo. Questi script vengono eseguiti all'avvio per avviare apache.

sudo apachectl restart

Questo metodo utilizza il programma di controllo apachectl . In quasi tutte le occasioni consiglierei l'uso di apachectl per manipolare il demone apache. Hai un controllo più fine su come il processo viene riavviato (vedi grazioso vs. riavvio), opzioni di convalida della configurazione e un modo per ottenere informazioni sullo stato.

La differenza principale tra l'uso degli script init per riavviare apache e apachectl è che apachectl è specificamente progettato per consentire agli amministratori di controllare apache mentre gli script init sono progettati come un modo generalizzato per gli Unix di avviare i processi dopo che il kernel e il daeamon init sono stati caricati.

EDIT: Sfortunatamente, non ho idea di come risolvere il problema con Rails o Phusion Passenger. Prova a cercare nei log di Apache per trovare indizi.


2
Cosa pensi esattamente che farà il tuo sistema operativo quando si riavvia e il servizio apache2 start non funziona? L'uso di apachectl va bene per i test e lo sviluppo degli sviluppatori, ma l'esecuzione di server che avrebbe causato problemi. Attaccarlo in rc.local non è neanche una soluzione.
Kashani,

Devo dire che sto solo rispondendo a metà della domanda: la differenza tra i due metodi per riavviare apache. Sfortunatamente non conosco tutti i dettagli di Rails ... una specie di lettura veloce di questo al mio primo giro.

grazie per l'aiuto. Ciò ha chiarito le differenze tra i due per me. Per quanto riguarda le cose di Rails, l'avevo risolto prima di pubblicare qui. apachectl infatti ha funzionato come un campione, mentre il metodo init.d non ha funzionato. Quindi ora lo so! Grazie.
Chris Allen Lane,
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.