Potrebbe essere necessario riavviare Apache® quando si desidera che le modifiche apportate abbiano effetto o quando è necessario riportare l'utilizzo delle risorse di Apache a un intervallo normale. Tuttavia, a volte Apache non si riavvia. Questo articolo mostra come controllare le impostazioni di configurazione e riavviare Apache in caso di errore.
Nota :prima di utilizzare le seguenti istruzioni e apportare modifiche ai file di configurazione, ti consigliamo di eseguire il backup dei file esistenti.
Controlla la sintassi
La causa dell'errore potrebbe essere semplicemente una parola errata o un punto (.) fuori posto. Esegui il comando seguente per controllare la sintassi:
[user@server ~]$ httpd –S
Dovresti vedere il seguente output:
Syntax OK
Se ricevi un messaggio di errore simile a quello nel seguente output di esempio, devi correggere l'errore prima di tentare di riavviare Apache:
Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration
Controlla i log degli errori di Apache
Se risolvi quegli errori e Apache continua a non riavviarsi, controlla i log degli errori di Apache. L'uso di due finestre potrebbe essere utile. In una finestra, usa il comando tail contro il log degli errori eseguendo il comando seguente:
tail –f /var/log/httpd/error_log
Nell'altra finestra, prova a riavviare Apache eseguendo il comando seguente:
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Guarda la prima finestra durante il riavvio di Apache per vedere eventuali errori che vengono generati nei log.
Anche Apache potrebbe non riavviarsi se esiste un altro servizio che si lega alla porta che Apache sta tentando di utilizzare, come mostrato nel seguente output:
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Questo output mostra che Apache non è in grado di avviarsi perché un altro servizio è già assegnato alla porta 80.
Puoi cambiare la porta a cui è assegnato Apache o controllare se l'altro servizio assegnato a questa porta dovrebbe essere sulla porta 80. Esegui netstat
comando per identificare l'altro servizio che sta utilizzando quella porta, come mostrato nell'esempio seguente:
[user@server ~]$ sudo netstat –plnt
L'output dovrebbe essere simile al seguente esempio:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5272/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1581/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5835/mysqld
tcp 0 0 :::80 :::* LISTEN 5272/sshd
tcp 0 0 ::1:25 :::* LISTEN 1581/master
In questo esempio, l'output mostra che Secure Shell (SSH) è in ascolto sulla porta 80, il che non dovrebbe essere il caso. Puoi correggere questa situazione modificando il file di configurazione affinché SSH sia in ascolto su una porta diversa, quindi riavvia Apache.
Potresti anche visualizzare il seguente errore:
httpd dead but subsys locked, but pid exists
Questo errore significa che Apache era in esecuzione, ma si è arrestato in modo anomalo. Quando avvii Apache, crea un file di blocco per indicare che è in esecuzione. Il file di blocco aiuta a impedire l'esecuzione di più istanze. Quando arresti Apache, questo file di blocco viene rimosso. Quando si arresta in modo anomalo, tuttavia, il file di blocco esiste ancora ma il processo no. Se vedi questo errore, devi rimuovere il file di blocco eseguendo i seguenti comandi:
# For RHEL/CentOS based distributions
[user@server ~]$ sudo rm /var/lock/subsys/httpd
# For Ubuntu/Debian based distributions
[user@server ~]$ sudo rm /var/lock/subsys/apache2
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
L'esecuzione di questi comandi rimuove il file di blocco inutilizzato in modo che Apache possa crearne uno nuovo al riavvio.
Utilizza la scheda Feedback per inserire commenti o porre domande. Puoi anche avviare una conversazione con noi.