Раздел помощи SpaceWeb

Базовая диагностика при ошибках в работе сайта

16 сен, 2024

Иногда при работе сайта или приложения могут возникать неполадки. Одна из типичных ошибок — это код ответа сервера в формате 5хх. Ошибка вида 5хх говорит о том, что сервер не может корректно обработать запрос и вернуть ответ браузеру.

Среди ошибок сервера чаще всего встречаются:

  • 500 Internal Server Error;
  • 502 Bad Gateway;
  • 504 Gateway Time Out. Также можно встретить варианты “ошибка подключения 504” или “504 Nginx”.

В статье мы расскажем о возможных способах устранения этих ошибок. 

Проверьте доступность сервера из внешней сети

Проверка доступности сервера будет полезна для того, чтобы исключить отказ оборудования. Для проверки доступности используется команда:

ping 123.123.123.123

Вместо 123.123.123.123 укажите IP-адрес сервера. Если сервер доступен, пакеты будут доставлены без потерь:

Чтобы остановить выполнение команды, используйте комбинацию клавиш Ctrl + C.

Если обмен пакетами не происходит, сервер недоступен. Чтобы исправить это, необходимо выполнить ряд действий:

  1. Подключитесь к серверу по SSH.
  2. Проверьте конфигурацию с помощью команды:
ifconfig

Вывод должен иметь следующий вид:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.123  netmask 255.255.254.0  broadcast 123.123.123.255
        inet6 fe80::3eec:efff:fe1c:c53c  prefixlen 64  scopeid 0x20<link>
        inet6 2a02:408:7722:1:77:222:40:224  prefixlen 64  scopeid 0x0<global>
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
        RX packets 4401360996  bytes 2764801604146 (2.5 TiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6286642214  bytes 6849482341634 (6.2 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0.405: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.4.6.224  netmask 255.255.252.0  broadcast 10.4.7.255
        inet6 fe80::3eec:efff:fe1c:c53c  prefixlen 64  scopeid 0x20<link>
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
        RX packets 319292750  bytes 138957932266 (129.4 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 674925007  bytes 288439583338 (268.6 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0:auto.42c3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.105  netmask 255.255.254.0  broadcast 123.123.123.255
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
eth0:auto.6e27: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.129  netmask 255.255.254.0  broadcast 123.123.123.255
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
eth0:auto.a8c3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.210  netmask 255.255.254.0  broadcast 123.123.123.255
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
eth0:auto.af0a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.88  netmask 255.255.254.0  broadcast 123.123.123.255
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
eth0:auto.e7ff: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.123.123.197  netmask 255.255.254.0  broadcast 123.123.123.255
        ether 3c:ec:ef:1c:c5:3c  txqueuelen 1000  (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1395489571  bytes 10476506884474 (9.5 TiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1395489571  bytes 10476506884474 (9.5 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Если в одном из блоков строка inet пустая, укажите IP-адрес вашего сервера.
Затем сохраните изменения и закройте файл.

Запустите службы для работы сайта

Службы — это программы, которые предназначены для помощи в работе вашего сайта. Чаще всего используется следующее ПО:

  • веб-серверы Apache и Nginx,
  • СУБД MySQL и ее модификация MariaDB.

При выполнении команд по SSH-соединению нужно использовать специализированные наименования.

Служба

Наименование

Apache

apache2 или httpd

Nginx

nginx

MySQL

mysql или mysqld

MariaDB

mariadb

Чтобы проверить работу служб:

  1. Подключитесь к серверу по SSH.
  2. Проверьте работу службы:
service apache2 status

Вместо apache2 укажите наименование нужной вам службы.
Если в сообщении от службы указан статус Active (running), она запущена и работает:

  1. Если служба выключена, запустите ее. Для этого выполните команду:
service apache2 start

Вместо apache2 укажите наименование запущенной службы.

Проанализируйте дисковое пространство

Иногда ошибки в работе сайта связаны с тем, что на сервере закончилось место для файлов. Узнать об этом поможет диагностика дискового пространства сервера. Чтобы начать проверку:

  1. Подключитесь к серверу по SSH.
  2. Выполните команду:
df -h

На экране отобразится информация об объеме диска и занятом пространстве на нем:

Если диск переполнен, нужно удалить ненужные файлы с сервера или повысить тариф (если речь идет о виртуальном сервере). 
Чтобы получить дополнительную информацию о состоянии диска, используйте инструкцию Анализ дискового пространства.

Проверьте количество inodes

Индексные дескрипторы, или inodes, — это идентификатор файла в системах Linux. Каждый файл имеет только один индексный дескриптор.

Проблемы в работе сайта могут возникать, если число inodes превысило рамки тарифа. Чтобы проверить сервер сайта на количество индексных дескрипторов:

  1. Подключитесь к серверу по SSH(https://help.sweb.ru/entry/84/).
  2. Выполните команду:
df -hTi

На экране отобразится подробная информация о количестве свободных и занятых inodes:

Если количество inodes превышено, его можно изменить по инструкции.

Назначьте необходимые права для папок с логами

Лог — это текстовый файл, в который записывается информация о работе программы. В логах могут быть отражены дата и время запуска службы, а также ошибки в ее работе.
Так как на сервере установлено несколько программ, логи каждой из них записываются в отдельные директории: это помогает избежать путаницы. 

Чтобы логи записывались корректно, директории должны иметь права на запись. Чтобы проверить их наличие:

  1. Подключитесь к серверу по SSH.
  2. Проверьте наличие прав на запись:
ls -lah /var/log/

Вместо /var/log/ укажите путь к общей директории логов.
На экране отобразится содержимое общей папки и права на каждый объект:

Если у одной из директорий нет прав на запись, выполните следующие действия:

  1. Подключитесь к серверу по SSH.
  2. Назначьте права директории с логами:
chmod -R 755 /var/log/apache2/

Вместо /var/log/apache2/ укажите путь к директории, которой нужно назначить новые права.

Проверьте отработку скриптов в коде сайта

Иногда перебои в работе сайта могут быть вызваны скриптами в коде сайта: например, долгой их отработкой или ошибкой в синтаксисе. Чтобы выполнить поиск и устранение ошибок, нужно включить их отображение. Например, для PHP-скриптов существует несколько способов:

  • директива в php.ini,
  • директива в .htaccess.

О том, как включить отображение ошибок, мы рассказали ниже.

Как включить отображение ошибок через php.ini

  1. Подключитесь к серверу по SSH.
  2. Чтобы получить доступ к редактированию файла, выполните команду:
chmod -R 644 /usr/local/php/etc/php.ini

Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.

  1. Откройте php.ini:
sudo nano /usr/local/php/etc/php.ini

Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.

  1. Добавьте строку:
display_errors = on

После этого сохраните изменения и закройте файл.

  1. Верните стандартные права для php.ini:
chmod -R 444 /usr/local/php/etc/php.ini

Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.

Как включить отображение ошибок через .htaccess

  1. Подключитесь к серверу по SSH.
  2. Откройте файл .htaccess:
sudo nano /var/www/test.ru/.htaccess

Вместо /var/www/test.ru/.htaccess укажите путь к директории, где размещен файл htaccess для сайта.

  1. Добавьте строки:
php_flag display_startup_errors on
php_flag display_errors on

После этого сохраните изменения и закройте файл.
Если у вас возникли сложности или сайт по-прежнему недоступен, обратитесь в службу поддержки.