sviluppo-web-qa.it

Come faccio ad avviare Apache all'avvio su Linux?

Ho installato Apache 2 dal sorgente sul mio box Linux. apachectl -k start funziona perfettamente, ma come faccio ad avviare Apache all'avvio?

Questo è su una distribuzione di Red Hat Linux:

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

32
grieve

Si desidera aggiungere il suo script init al livello di esecuzione appropriato. Lo script init è in genere /etc/init.d/Apache2 dove è possibile eseguire manualmente /etc/init.d/Apache2 start per avviarlo.

Su Gentoo scrivi:

rc-update add Apache2 default

Su Ubuntu/Debian funziona:

Sudo update-rc.d Apache2 defaults

Su Red Hat Linux/Fedora/CentOS un po 'di googling mostra questo:

chkconfig --add httpd

Varia un po 'da una distribuzione all'altra, ma l'idea è generalmente la stessa. Fondamentalmente, tutti questi comandi creano un collegamento simbolico da /etc/init.d/ nella cartella appropriata a livello di esecuzione in /etc/.

46
Evan Teran

Ecco cosa finalmente ha funzionato per me. Questo presuppone che tu sia l'utente root.

  1. vi /etc/init.d/Apache2 (modificalo come mostrato di seguito)
  2. chmod 755 /etc/init.d/Apache2
  3. chkconfig --add Apache2
  4. chkconfig --list Apache2 (per verificare che abbia funzionato)

Contenuti di /etc/init.d/Apache2:

 #!/bin/bash 
 # 
 # Apache2 Script di avvio per Apache HTTP Server 
 # 
 # chkconfig: 3 85 15 
 # descrizione: Apache è un server World Wide Web. Viene utilizzato per servire\
 # File HTML e CGI. 
 
/Usr/local/Apache2/bin/apachectl $ @ 

Puoi ottenere il runlevel eseguendo/sbin/runlevel, che nel mio caso era 3. E ovviamente devi chiamare la tua versione di apachectl, che nel mio caso era/usr/local/Apache2/bin/apachectl

Grazie a quanto segue:

26
grieve

Controlla se hai lo script httpd init nel /etc/rc.d directory. Se sì, puoi semplicemente eseguire il seguente comando che abilita il servizio httpd all'avvio.

chkconfig --level 345 httpd on

Se non disponi dello script init, aggiungi semplicemente /etc/rc.local file con apachectl -k start (il comando per avviare Apache).

8
Viky

Come hai installato per sorgente, non ci sarà uno script di init installato nella directory /etc/init.d/. Il binario apachectl è progettato per essere compatibile con le opzioni di script init standard, quindi potresti essere in grado di collegarlo semplicemente a esso anziché creare uno script wrapper (ad esempio ln -s/usr/local/sbin/apachectl /etc/init.d/ Apache)

È quindi possibile seguire le procedure descritte negli altri post per l'aggiunta di collegamenti per richiamare lo script init nei runlevel corretti.

Citation: Apache Documentation http://httpd.Apache.org/docs/2.2/invoking.html

A partire dal Boot-Time

Se si desidera che il server continui a funzionare dopo il riavvio del sistema, è necessario aggiungere una chiamata a apachectl ai file di avvio del sistema (in genere rc.local o un file in una directory rc.N). Questo avvierà Apache come root. Prima di fare ciò, assicurarsi che il server sia configurato correttamente per le restrizioni di sicurezza e accesso.

Lo script apachectl è progettato per agire come uno script init SysV standard; può prendere gli argomenti start, restart, e stop e tradurli nei segnali appropriati in httpd. Quindi spesso puoi semplicemente collegare apachectl nella directory init appropriata. Assicurati di controllare i requisiti esatti del tuo sistema.

4

Su Red Hat Linux c'è un'utilità utile chiamata ntsysv che ti permette di selezionare quali servizi vuoi iniziare nel tuo attuale livello di esecuzione. Si chiama anche specificare quale livello di esecuzione si desidera modificare quando si avvia l'utilità utilizzando --level.

Scorri verso il basso fino a httpd e premi Space così una stella appare nella casella a sinistra. Poi Tab ha preso. stampa Return per salvare e tornare a Shell.

Ho scoperto che si installa praticamente per impostazione predefinita. Non sono mai stato in una posizione in cui non è stato installato.

Dovresti prima installare il servizio copiando lo script del servizio in /etc/init.d, quindi eseguendo:

chkconfig --add <script name>
1
Garry Harthill

chkconfig --levels 345 httpd

inizierà httpd a runlevel 3,4,5.

chkconfig --list mostrerà tutti i servizi e i loro runlevel di avvio correnti. 345 è tipico per un servizio di rete.

1
elint

Dipende dal tuo sapore di Linux. Supponendo che il file /etc/init.d/Apache2 sia stato creato, provare:

chkconfig -a Apache2

o

update-rc.d Apache2 defaults

Uno di loro dovrebbe funzionare.

1
Neobyte