Come risolvere i problemi del web server Apache
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
Partiamo dalla vostra infrastruttura.
Un po' di contesto ci aiuta a iniziare la conversazione giusta.
