GNU/Linux >> Linux Esercitazione >  >> Linux

Riavvia Apache

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.


Linux
  1. Apache mod_rewrite

  2. Come riavviare Apache per rendere permanenti le modifiche a httpd.conf?

  3. Installa Apache su CentOS 8

  4. Installa Apache su Debian 10

  5. Riavvia Nginx in Ubuntu

Come riavviare Apache su Ubuntu 20.04 Focal Fossa

Comando di riavvio (riavvio) di Linux

Come avviare, arrestare o riavviare Apache

Server Web Apache

Come installare Apache su Ubuntu 20.04

Come riavviare la rete su Ubuntu 22.04