Vai al contenuto
EuroVPSEuroVPS

Come risolvere i problemi del web server Apache

FAQ EuroVPS

Aggiornato il 4 min di lettura (shell meta.minRead)

Shared FAQ page chrome (breadcrumb, dates, read time, «Continua a leggere», enquiry block, category labels): see INDEX-AND-CHROME.md. Translate once.

Body

Apache è un web server stabile e largamente diffuso. La maggior parte dei problemi nasce dalla configurazione, da conflitti di porta o dall'integrazione con altri servizi sullo stesso host.

Controllare i log di Apache

Partite dal log di errore. Le posizioni più comuni:

Per un riferimento rapido, i percorsi più comuni del log di errore di Apache sono i seguenti.

cPanel

/usr/local/apache/logs/error_log

Plesk

/var/log/httpd/error_log

CentOS/Fedora

/var/log/httpd/error_log

Debian/Ubuntu

/var/log/apache2/error_log
 tail -f  /var/log/httpd/error_log

Problemi comuni di Apache

Conflitti di porta

Verificate che nient'altro sia in ascolto sulle porte 80 e 443:

[root@server ~]# netstat -plan | grep :80
tcp        0      0 203.0.113.10:80            0.0.0.0:*                   LISTEN      18950/nginx         
tcp        0      0 203.0.113.10:80            203.0.113.10:52630         TIME_WAIT   -                   
tcp        0      0 203.0.113.10:51704         203.0.113.10:80            TIME_WAIT   -                   
tcp        0      0 203.0.113.10:80            203.0.113.10:52626         TIME_WAIT   -                   
tcp        0      0 203.0.113.10:80            203.0.113.10:51712         TIME_WAIT   -                   
tcp        0      0 203.0.113.10:80            203.0.113.10:52622         TIME_WAIT   -    

Come vedete, Nginx sta già usando la porta 80 sull'interfaccia pubblica e Apache non parte. Terminate Nginx e riavviate Apache.

Altre istanze di Apache bloccate che tengono occupate le porte.

Potete ricevere errori simili a un conflitto di porta anche quando dei processi Apache già avviati e non terminati tengono occupate le porte. Con i comandi qui sotto verificate se esistono processi di questo tipo sul server.

[root@server ~]# ps aux  | grep "httpd\|apache"  | grep -v grep
root     18663  0.0  0.6 394336 32168 ?        SNs  15:25   0:00 /usr/sbin/httpd
apache   18666  0.0  0.3 252844 17436 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18667  0.0  0.5 395040 25532 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18668  0.0  0.5 395440 25592 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18670  0.0  0.5 395032 25716 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18671  0.0  0.5 394984 25676 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18672  0.0  0.5 394944 25640 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18673  0.0  0.5 395000 25468 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18674  0.0  0.4 394912 25384 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18675  0.0  0.5 395076 25780 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18676  0.0  0.5 394940 25636 ?        SN   15:25   0:00 /usr/sbin/httpd
apache   18677  0.0  0.4 394892 25280 ?        SN   15:25   0:00 /usr/sbin/httpd

Terminate tutti i processi Apache trovati con il comando kill, come mostrato qui sotto.

[root@server ~]# kill -9   18666  18663   18667  18668 18670 18671 18672 18673 18674 18675 18676 18677 

Errori di sintassi nel file httpd.conf

Un errore di sintassi in httpd.conf impedisce ad Apache di partire. L'errore indica la riga:

Syntax error on line 218 of  /etc/httpd/conf/httpd.conf

Verificate la sintassi prima di riavviare:

[root@server ~]# apachectl -t
Syntax OK
[root@server ~]# httpd -t
Syntax OK

Su Debian e Ubuntu la verifica della sintassi si fa come segue.

apache2ctl -t
Similarly you cause the command with -S switch to list all virtual hosts with essential information like configured ports, defined line number in configuration etc.

Allo stesso modo, con l'opzione -S il comando elenca tutti i virtual host con le informazioni essenziali, come le porte configurate e il numero di riga della definizione nella configurazione.

[root@server ~]# httpd -S
VirtualHost configuration:
127.0.0.1:7080         is a NameVirtualHost

Apache non parte se il file .htaccess non è creato correttamente.

Perché i file .htaccess vengano considerati, i virtual host di Apache devono contenere le definizioni corrette. Se queste direttive mancano, il file .htaccess non viene considerato e le sue definizioni non vengono caricate. Qui sotto una definizione di esempio.

</VirtualHost>
<Directory /home/eurovps/public_html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Fatto questo, il file .htaccess creato in /home/eurovps/public_html/ viene considerato da Apache. Il file deve avere permessi 644 e come proprietario l'utente del dominio:

Esempio di creazione del file .htaccess e dei permessi.

vi /home/eurovps/public_html/.htaccess
#++++Sample_contents++++#
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#++++Sample_contents++++#
Esc  + :wq
chmod 644 /home/eurovps/public_html/.htaccess
chown eurovps.eurovps  /home/eurovps/public_html/.htaccess

Suggerimenti: provate ad attivare i log dettagliati per il debug (LogLevel debug). Controllate syslog e dmesg per indizi su terminazioni di processi, e verificate la memoria libera e lo spazio disco disponibile sul server.

Dalle FAQ di EuroVPS.

Altro in «Guide»

Il vostro prossimo partner per l'infrastruttura

Avete ancora
una domanda?

Diteci cosa state cercando di fare. Un ingegnere la leggerà e vi risponderà.

+357 222 32280
Un ingegnere EuroVPS trasporta un nodo server nella sala del datacenter
Una conversazione con le persone che si prenderanno cura della vostra infrastruttura.

Partiamo dalla vostra infrastruttura.

Un po' di contesto ci aiuta a iniziare la conversazione giusta.

Useremo i vostri dati per rispondere alla vostra richiesta. Informativa sulla privacy