Πώς να αντιμετωπίσετε συνηθισμένα προβλήματα του Apache
Ο Apache είναι ένας σταθερός, ευρέως διαδεδομένος web server. Τα περισσότερα προβλήματα προέρχονται από τις ρυθμίσεις, από συγκρούσεις θυρών ή από τη συνύπαρξη με άλλες υπηρεσίες στον ίδιο host.
Έλεγχος των logs του Apache
Ξεκινήστε από το error log. Συνηθισμένες θέσεις:
Οι συνηθισμένες θέσεις του error log του Apache είναι οι παρακάτω, για γρήγορη αναφορά.
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
Συνηθισμένα προβλήματα του Apache
Συγκρούσεις θυρών
Ελέγξτε ότι τίποτα άλλο δεν ακούει στις θύρες 80 και 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 -
Όπως βλέπετε, ο Nginx χρησιμοποιεί ήδη τη θύρα 80 στη δημόσια διεπαφή και ο Apache δεν θα ξεκινήσει. Τερματίστε τον Nginx και ξεκινήστε ξανά τον Apache.
Άλλες διεργασίες του Apache που έχουν κολλήσει και κρατούν τις θύρες.
Μπορεί να δείτε σφάλματα παρόμοια με αυτά της σύγκρουσης θυρών, με αιτία διεργασίες του Apache που ξεκίνησαν και δεν τερματίστηκαν και κρατούν τις θύρες. Με τις παρακάτω εντολές ελέγχετε αν υπάρχουν τέτοιες διεργασίες στον 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
Τερματίστε όλες τις διεργασίες του Apache που βρήκατε, με την εντολή kill όπως παρακάτω.
[root@server ~]# kill -9 18666 18663 18667 18668 18670 18671 18672 18673 18674 18675 18676 18677
Συντακτικά λάθη στο αρχείο httpd.conf
Ένα συντακτικό λάθος στο httpd.conf εμποδίζει τον Apache να ξεκινήσει. Το σφάλμα αναφέρει τη γραμμή:
Syntax error on line 218 of /etc/httpd/conf/httpd.conf
Ελέγξτε τη σύνταξη πριν από την επανεκκίνηση:
[root@server ~]# apachectl -t
Syntax OK
[root@server ~]# httpd -t
Syntax OK
Σε Debian και Ubuntu ο έλεγχος σύνταξης γίνεται ως εξής.
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.
Αντίστοιχα, με τον διακόπτη -S εμφανίζετε όλα τα virtual hosts με τα βασικά τους στοιχεία, όπως τις ρυθμισμένες θύρες και τη γραμμή ορισμού τους στις ρυθμίσεις.
[root@server ~]# httpd -S
VirtualHost configuration:
127.0.0.1:7080 is a NameVirtualHost
Ο Apache δεν ξεκινά αν το αρχείο .htaccess δεν έχει δημιουργηθεί σωστά.
Για να λαμβάνονται υπόψη τα αρχεία .htaccess, τα virtual hosts του Apache πρέπει να έχουν τους κατάλληλους ορισμούς. Αν λείπουν αυτές οι οδηγίες, το αρχείο .htaccess δεν λαμβάνεται υπόψη και οι ορισμοί του δεν φορτώνονται. Παρακάτω ένας ενδεικτικός ορισμός.
</VirtualHost>
<Directory /home/eurovps/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Μετά από αυτό, ένα αρχείο .htaccess που δημιουργείται στο /home/eurovps/public_html/ θα λαμβάνεται υπόψη από τον Apache. Το αρχείο χρειάζεται δικαιώματα 644 και ιδιοκτήτη τον χρήστη του domain:
Παράδειγμα δημιουργίας αρχείου .htaccess και δικαιωμάτων.
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
Συμβουλές: δοκιμάστε να ενεργοποιήσετε αναλυτικά logs για αποσφαλμάτωση (LogLevel debug). Ελέγξτε το syslog και το dmesg για ενδείξεις τερματισμού διεργασιών, και ελέγξτε την ελεύθερη μνήμη και τον ελεύθερο χώρο δίσκου στον server.
Από τις συχνές ερωτήσεις της EuroVPS.
Περισσότερα στην κατηγορία «Οδηγοί»Ο επόμενος συνεργάτης σας στην υποδομή
Έχετε ακόμη
μια ερώτηση;
Πείτε μας τι προσπαθείτε να κάνετε. Ένας μηχανικός θα το διαβάσει και θα απαντήσει.
+357 222 32280
Ας ξεκινήσουμε από την υποδομή σας.
Λίγο πλαίσιο μάς βοηθά να ξεκινήσουμε τη σωστή συζήτηση.
