Перейти до вмісту
EuroVPSEuroVPS

Як усунути поширені проблеми з Apache

FAQ EuroVPS

Оновлено 4 хв читання

Shared FAQ page chrome (breadcrumb, dates, read time, «Читати далі», enquiry block, category labels): see INDEX-AND-CHROME.md. Translate once.

Body

Apache є стабільним і широко використовуваним веб-сервером. Більшість проблем походить від конфігурації, конфліктів портів або інтеграції з іншими сервісами на тому самому хості.

Перевірка журналів Apache

Почніть із журналу помилок. Типові розташування:

Для швидкого ознайомлення нижче наведено типові розташування файлу журналу помилок 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, які тримають порти. Наведеними нижче командами перевірте, чи є такі процеси на сервері.

[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, щоб вивести всі віртуальні хости з основною інформацією: налаштованими портами, номером рядка в конфігурації тощо.

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

Apache не запуститься, якщо файл .htaccess створено неправильно.

Щоб файли .htaccess враховувалися, віртуальні хости Apache мають містити належні визначення. Якщо цих директив немає, файл .htaccess не враховується, і його визначення не завантажуються. Нижче наведено зразок визначення.

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

Після цього файл .htaccess, створений у /home/eurovps/public_html/, враховуватиметься сервером Apache. Файл потребує режиму 644 і користувача домену як власника:

Зразок створення файлу .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

Поради: спробуйте увімкнути докладні журнали для налагодження (LogLevel debug). Перевірте syslog і dmesg на будь-які підказки щодо завершення процесів, перевірте вільну пам’ять і вільний дисковий простір на сервері.

З FAQ EuroVPS.

Більше в категорії «Інструкції»

Ваш наступний партнер з інфраструктури

Залишилося
запитання?

Розкажіть, що ви намагаєтеся зробити. Інженер прочитає і відповість.

+357 222 32280
Інженер EuroVPS несе серверний вузол у залі дата-центру
Розмова з людьми, які доглядатимуть за вашою інфраструктурою.

Почнімо з вашої інфраструктури.

Трохи контексту допомагає нам почати правильну розмову.

Ми використаємо ваші дані, щоб відповісти на ваш запит. Політика конфіденційності