Иногда при работе сайта или приложения могут возникать неполадки. Одна из типичных ошибок — это код ответа сервера в формате 5хх. Ошибка вида 5хх говорит о том, что сервер не может корректно обработать запрос и вернуть ответ браузеру.
Среди ошибок сервера чаще всего встречаются:
- 500 Internal Server Error;
- 502 Bad Gateway;
- 504 Gateway Time Out. Также можно встретить варианты “ошибка подключения 504” или “504 Nginx”.
В статье мы расскажем о возможных способах устранения этих ошибок.
- Проверьте доступность сервера из внешней сети
- Запустите службы для работы сайта
- Проанализируйте дисковое пространство
- Проверьте количество inodes
- Назначьте необходимые права для папок с логами
- Проверьте отработку скриптов в коде сайта
Проверьте доступность сервера из внешней сети
Проверка доступности сервера будет полезна для того, чтобы исключить отказ оборудования. Для проверки доступности используется команда:
Вместо 123.123.123.123 укажите IP-адрес сервера. Если сервер доступен, пакеты будут доставлены без потерь:
Чтобы остановить выполнение команды, используйте комбинацию клавиш Ctrl + C.
Если обмен пакетами не происходит, сервер недоступен. Чтобы исправить это, необходимо выполнить ряд действий:
- Подключитесь к серверу по SSH.
- Проверьте конфигурацию с помощью команды:
Вывод должен иметь следующий вид:
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
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
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)
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)
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)
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)
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)
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 |
Чтобы проверить работу служб:
- Подключитесь к серверу по SSH.
- Проверьте работу службы:
Вместо apache2 укажите наименование нужной вам службы.
Если в сообщении от службы указан статус Active (running), она запущена и работает:
- Если служба выключена, запустите ее. Для этого выполните команду:
Вместо apache2 укажите наименование запущенной службы.
Проанализируйте дисковое пространство
Иногда ошибки в работе сайта связаны с тем, что на сервере закончилось место для файлов. Узнать об этом поможет диагностика дискового пространства сервера. Чтобы начать проверку:
- Подключитесь к серверу по SSH.
- Выполните команду:
На экране отобразится информация об объеме диска и занятом пространстве на нем:
Если диск переполнен, нужно удалить ненужные файлы с сервера или повысить тариф (если речь идет о виртуальном сервере).
Чтобы получить дополнительную информацию о состоянии диска, используйте инструкцию Анализ дискового пространства.
Проверьте количество inodes
Индексные дескрипторы, или inodes, — это идентификатор файла в системах Linux. Каждый файл имеет только один индексный дескриптор.
Проблемы в работе сайта могут возникать, если число inodes превысило рамки тарифа. Чтобы проверить сервер сайта на количество индексных дескрипторов:
- Подключитесь к серверу по SSH(https://help.sweb.ru/entry/84/).
- Выполните команду:
На экране отобразится подробная информация о количестве свободных и занятых inodes:
Если количество inodes превышено, его можно изменить по инструкции.
Назначьте необходимые права для папок с логами
Лог — это текстовый файл, в который записывается информация о работе программы. В логах могут быть отражены дата и время запуска службы, а также ошибки в ее работе.
Так как на сервере установлено несколько программ, логи каждой из них записываются в отдельные директории: это помогает избежать путаницы.
Чтобы логи записывались корректно, директории должны иметь права на запись. Чтобы проверить их наличие:
- Подключитесь к серверу по SSH.
- Проверьте наличие прав на запись:
Вместо /var/log/ укажите путь к общей директории логов.
На экране отобразится содержимое общей папки и права на каждый объект:
Если у одной из директорий нет прав на запись, выполните следующие действия:
- Подключитесь к серверу по SSH.
- Назначьте права директории с логами:
Вместо /var/log/apache2/ укажите путь к директории, которой нужно назначить новые права.
Проверьте отработку скриптов в коде сайта
Иногда перебои в работе сайта могут быть вызваны скриптами в коде сайта: например, долгой их отработкой или ошибкой в синтаксисе. Чтобы выполнить поиск и устранение ошибок, нужно включить их отображение. Например, для PHP-скриптов существует несколько способов:
- директива в php.ini,
- директива в .htaccess.
О том, как включить отображение ошибок, мы рассказали ниже.
Как включить отображение ошибок через php.ini
- Подключитесь к серверу по SSH.
- Чтобы получить доступ к редактированию файла, выполните команду:
Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.
- Откройте php.ini:
Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.
- Добавьте строку:
После этого сохраните изменения и закройте файл.
- Верните стандартные права для php.ini:
Вместо /usr/local/php/etc/php.ini укажите путь к файлу на вашем сервере.
Как включить отображение ошибок через .htaccess
- Подключитесь к серверу по SSH.
- Откройте файл .htaccess:
Вместо /var/www/test.ru/.htaccess укажите путь к директории, где размещен файл htaccess для сайта.
- Добавьте строки:
php_flag display_errors on
После этого сохраните изменения и закройте файл.
Если у вас возникли сложности или сайт по-прежнему недоступен, обратитесь в службу поддержки.