Архив метки: Ошибки

Ошибка add-apt-repository command not found

В репозиториях Debian и Ubuntu есть множество различных программ, которых будет достаточно для удовлетворения потребностей большинства пользователей. Но есть специфичные программы, которых пока что нет в репозиториях, также там нет новых версий программ. Поэтому достаточно часто в Ubuntu, Debian, Linux Mint и других системах используются репозитории PPA.

Обычно такие репозитории поддерживают либо разработчики программ, таким образом, там будет всегда новая версия, либо добровольцы, они добавляют программы, которых нет в официальных репозиториях. Но при попытке добавить репозиторий в систему может возникнуть ошибка add-apt-repository command not found. В этой небольшой статье мы разберем как ее исправить и почему она возникает.

Читать далее Ошибка add-apt-repository command not found

Ошибка access denied for user root localhost

Если вы захотите настроить резервное копирование базы данных на другой сервер, или протестировать соединение с базой данных из другого сервера. И тогда вы можете столкнуться с ошибкой access denied for user root localhost, даже если вы указали верное имя пользователя, базу данных и пароль.

В этой небольшой статье мы рассмотрим почему возникает эта ошибка, а также как ее исправить и подключиться к MySQL из другого сервера через интернет.

Что означает access denied for user root localhost?

Если переводить дословно, то эта ошибка означает что у вас нет доступа к данной базе данных от имени этого пользователя. В примере я использовал пользователя root, но вы можете использовать и другого пользователя. Это может быть вызвано несколькими причинами:

  • Пароль введен неверно;
  • По каким-либо причинам у пользователя нет прав на доступ к базе данных;
  • В настройках этого пользователя запрещено авторизоваться с этого сервера;

Для безопасности базы данных в mysql была придумана настройка хоста, из которого пользователь может авторизоваться. По умолчанию для пользователей устанавливается разрешение на авторизацию только с localhost. Чтобы разрешить подключение с других хостов, нужно менять настройки. Рассмотрим как это делается с помощью Phpmyadmin и в терминале.

Исправляем ошибку access denied for user root localhost

1. Подключение с другого хоста

Сначала рассмотрим как работать с Phpmyadmin. Это намного проще для начинающих и тех, кто не любит работать в терминале. Откройте Phpmyadmin, авторизуйтесь в программе с правами root и перейдите на вкладку "Учетные записи пользователей":

Здесь, вы увидите, кроме обычных полей, поле "имя хоста", которое указывает с какого хоста может подключаться пользователь. Если в этом поле написано localhost, значит этот пользователь может авторизоваться только с локальной машины. Также, в этом поле может находиться IP адрес, с которого есть разрешение или символ %, который означает, что пользователь может подключаться с любого IP.

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

Затем установите в поле "Имя хоста" значение "Любой хост" чтобы разрешить этому пользователю авторизоваться с любого IP. Если вы хотите разрешить только определенный IP, выберите "Использовать текстовое поле" и укажите нужный адрес или подсеть:

После этого останется нажать кнопку "Вперед" чтобы сохранить настройки. Если вам нужно чтобы был доступ и с локального IP, и с другого, то необходимо создать еще одного пользователя. После этого вы сможете авторизоваться от имени этого пользователя.

Теперь рассмотрим другой способ решить ошибку 1045 access denied for user root localhost, с помощью терминала. Это немного проще, поскольку вам нужно только выполнить несколько команд:

mysql

> UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
> UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
> FLUSH PRIVILEGES;

Уже после этого, вы можете подключаться к серверу баз данных с любого другого компьютера и не получите никаких ошибок. Вместо символа %, можно указать нужный ip или localhost, если ограничение нужно вернуть обратно.

2. Неверный пароль root

Иногда случается, что при установке базы данных пароль для root задается, но вы его не знаете. Поскольку это главный пользователь и если вы не можете войти от его имени, то вы не сможете ничего исправить. Сначала попробуйте авторизоваться от имени root в системе и подключиться к базе без пароля:

mysql

Иногда это работает. Если не сработало, остановите службу mysql и запустите ее без проверки безопасности, а затем попробуйте снова:

systemctl stop mysqld
mysqld --skip-grant-tables
mysql 

> USE mysql;
> UPDATE user SET Password=PASSWORD('ваш_пароль') where USER='root';
> FLUSH PRIVILEGES;

Еще можно попытаться выдать права над всеми таблицами нашему пользователю, если это необходимо:

> GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

Обратите внимание на хост localhost, если вы хотите чтобы удаленные узлы тоже могли подключаться к этому пользователю, то нужно использовать %. Дальше можно перезапустить базу данных и работать как обычно.

Выводы

Теперь вы знаете как решается mysql access denied for user root localhost и что делать в таких ситуациях, чтобы решить проблему. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!

https://youtu.be/avnitMoiJww

Ошибка установки соединения с базой данных WordPress

Ни для кого не секрет, что большинство платформ для создания веб-сайтов, и в том числе такая популярная платформа, как WordPress, используют базу данных для хранения информации. Работа с базой данных намного быстрее, чем с файлами поэтому такой подход и набрал большую популярность. Но иногда при мы можем сталкиваться с такой проблемой, как ошибка установки соединения с базой данных WordPress.

Эта ошибка будет выводиться на каждой странице вашего сайта и вы потеряете посетителей, а также доход, который могли получить. В этой статье мы рассмотрим почему возникает ошибка error establishing a database connection WordPress, а также способы борьбы с ней на хостинге и на VPS.

Читать далее Ошибка установки соединения с базой данных WordPress

Ошибка request header or cookie too large Nginx

Ошибка 400 Request Header Or Cookie Too Large в веб-сервере Nginx встречается достаточно редко. Данная ошибка означает, что отправленный запрос к веб-серверу слишком большой и был отклонен. Это может происходить по разным причинам.

Например, такое бывает, когда идет переход к веб-сайту из поисковой системы, и какой-то заголовок оказался слишком длинным. В этом случае Nginx «не ожидал» такого большого объёма в заголовке и сбросил соединение. В этой статье будет рассмотрено описание данной ошибки и как ее можно исправить.
Читать далее Ошибка request header or cookie too large Nginx

Ошибка grub не видит Windows 10

Многие новички и опытные пользователи Linux держат также установленной на своем компьютере операционную систему Windows, например, последней, десятой версии. Новичкам это нужно чтобы иметь запасную операционную систему, к которой они смогут вернуться, если их Linux сломается. А для опытных пользователей важно программное обеспечение, которое не поддерживается ни в Linux, ни даже с помощью эмулятора Wine, а таких программ достаточно много.

Но временами случается такая ситуация, что загрузчик Grub не распознает установленную Windows и не отображает ее в списке систем для загрузки. В этой статье мы рассмотрим почему возникает ошибка grub не видит Windows 10 и как ее решить.

Ошибка Grub не видит Windows 10

Причин такой ошибки может быть несколько, начиная от того, что система установлена на другом жестком диске, и заканчивая неизвестными глюками пакета os-prober, который и занимается определением операционных систем в Linux. Также, если у вас есть несколько версий Windows на компьютере, то программа может видеть только одну из них.

Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/:

sudo mount -t ntfs-3g -o ro /dev/sda1

Я предполагаю, что система Windows установлена на разделе, который определяется в Linux, как /dev/sda1. Дальше запустите утилиту os-prober:

sudo os-prober

Если программа обнаружит Windows, то вам останется обновить конфигурацию загрузчика Grub:

sudo update-grub

Или:

sudo grub2-mkconfig -o /boot/grub/grub.cfg

Если же этот способ не сработает, а он, скорее всего, не сработает, то вам останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1:

blkid /dev/sda1

Затем откройте файл /etc/grub.d/40_custom и добавьте туда такой код:

menuentry "Windows 10" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set B4A6AEB7A6AE7A0E
chainloader +1
}

Если кратко, то здесь мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:

sudo update-grub

Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.

Когда конфигурация обновлена вы можете перезагрузить компьютер и загружать Windows с помощью нового пункта. Таким образом, можно добавить несколько пунктов, только для разных разделов нужно указывать их UUID.

Выводы

В этой небольшой статье мы разобрали что делать когда у вас возникнет ошибка grub не видит windows 10 и какими способами ее можно исправить. На самом деле решение очень простое, если вы не используете систему с UEFI. В варианте с EFI загрузка Windows управляется не Grub, а загрузчиком UEFI, но при использовании Linux рекомендуется отключить эту технологию.

Как исправить 504 gateway time out Nginx

Веб-сервер Nginx часто работает не только в качестве самого веб-сервера для отдачи контента, но и в качестве прокси, когда он вступает только посредником. Такая ситуация наблюдается намного чаще, чем можно было бы ожидать. Например, при работе с php-fpm и другими модулями динамических языков.

Именно в таком режиме может наблюдаться ошибка 504 gateway time out Nginx. В нашей сегодняшней статье мы попытаемся разобраться почему она возникает и как с ней бороться. Разберем несколько способов решения и причин.
Читать далее Как исправить 504 gateway time out Nginx

Ошибка белый экран WordPress

Если у вас есть свой сайт на WordPress и вы делаете его достаточно давно, то вы однозначно хоть раз видели белый экран смерти Wordress. Это очень неприятная вещь. Вы пытаетесь открыть любую страницу сайта, а в ответ видите только белый экран, он может быть как на абсолютно всех страницах сайта, в админ панели и так далее. Самое плохое здесь, это то, что непонятно что делать и как решить проблему.

В этой статье мы рассмотрим что такое белый экран WordPress, почему он появляется и как исправить ошибку. А исправлять ее нужно быстро, особенно если это популярный сайт в публичном доступе.

Что такое белый экран смерти?

Этот экран получил свое название из-за другого экрана, который, наверное, все помнят:

В некоторых отношениях синий экран Microsoft и белый экран WordPress похожи между собой. Оба они говорят о том, что что-то пошло не так, но на экране WordPress не отображаются ошибки. Видимо ошибка произошла на раннем этапе генерации страницы, она еще не загрузилась и соответственно выведена не будет. Вывод ошибок на экран в WordPress по умолчанию отключен, чтобы ваши пользователи не увидели ничего лишнего.

Вызвать появление белого экрана WordPress могут различные факторы, вот некоторые из ник:

  • Вы обновляли WordPress и обновление было завершено некорректно;
  • Ошибку вызывает установленный плагин;
  • Ошибку вызывает установленная тема;
  • Ошибка работы с базой данных;
  • Проблемы с кэшированием страниц.

Вы знаете причины проблем, а теперь давайте рассмотрим более подробно как выйти из подобной ситуации.

Как исправить белый экран WordPress?

В идеале нам бы был очень кстати полный ssh доступ к серверу, на котором размещен сайт, но если его нет, то вам будет достаточно FTP или же файлового менеджера в веб-интерфейсе. Например, вы можете использовать FTP клиент Filezilla.

Во многих инструкциях пишется что сразу нужно отключить все плагины, недавно установленные темы, кэш, права для файлов и многое другое. Проверять все это можно часами. Но зачем все это делать если можно сразу посмотреть в чем была проблема. Для этого включите режим отладки WordPress и перезагрузите страницу. В большинстве случаев система выведет несколько ошибок и от них уже можно будет отталкиваться. А уже если не выведет, тогда и на кофейной гуще можно начинать гадать, но раньше не надо.

1. Режим отладки

Если у вас есть доступ по ssh, вы можете открыть файл wp-config.php через терминал, для этого наберите:

vi /var/www/путь/к/сайту/wp-config.php

Также вы можете открыть этот файл через редактор FTP. В нем найдите такую строчку:

define('WP_DEBUG', false);

И замените ее значение на true:

define('WP_DEBUG', true);

Дальше сохраните изменения в файле. Набрав :wq в случае использования vim или другим способом по FTP. Также не помешает включить отображение ошибок php. Если у вас VPS вы можете сделать это через терминал:

vi /etc/php.ini

error_reporting = E_ALL;
display_errors = on;

Сохраните изменения и перезапустите веб-сервер. Если же вы пользуетесь веб-хостинг, то найдете возможность включить отображение ошибок php в панели управления cPanel или DirectAdmin.

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

2. Отключите плагины

После того как посмотрели сообщения об ошибках и ничего не поняли либо там ничего не было, то первым делом нужно отключить плагины, которые были установлены недавно. Если у вас есть доступ к админ панели, иногда бывает и такое, попробуйте открыт адрес wp-admin, то вы это сделать.

Если же доступа к админ интерфейсу нет и там тоже белый экран, то можно предположить, что проблема не в плагине, а отключить плагин можно просто переименовав папку с ним через ftp или ssh. Все плагины Wodpress находятся в папке /путь/к/сайту/wp-content/plugins. Если не помогло отключение новых плагинов, можно отключить все. Можете просто переименовать папку plugins в plugins.old. Затем можете по одному активировать плагины чтобы найти виновного.

3. Выбор стандартной темы

Иногда проблемы может создать тема wordpress, самый простой способ решить эту проблему - это использовать тему по умолчанию. Если вы переименуете папку с текущей темой, WordPress автоматически начнет использовать тему по умолчанию.

Еще один способ изменить тему - модификация базы данных. За тему отвечают поля template и stylesheet, измените их значения на twentyfifteen и система будет использовать тему по умолчанию.

4. Очистка кэша

Кєширование тоже иногда может вызвать такие проблемы, и тогда может даже не помочь включение отладки. Но если вы использовали кэширующий плагин, то проблема будет решена отключением плагинов. Если же нет, то вам нужно очистить кэши. Обратите внимание на такие возможные кэши:

  • кэш веб-сервера Nginx - /var/cache/nginx;
  • кэш fastgci - /var/cache/fastcgi;
  • кэш опкода php;

Отключите кэш опкода, затем очистите папки с другими кэшами если используете их. Это может помочь решить проблему.

5. База данных

На всякий случай проверьте запущена ли база данных и доступна она ли из WordPress. Обычно, когда база данных не работает то вы не увидите белый экран WordPress или админки, а получите соответствующую ошибку.

6. Разрешения для файлов

В Linux очень гибкая система разрешений, она позволяет указать какие пользователи смогут получить доступ и к каким файлам. Это же касается сервисов. Если веб-сервер или интерпретатор php не будет иметь доступа на чтение файлов wordpress, то вы не сможете открыть сайт. Права должны быть такими:

  • Все файлы - 644;
  • Все папки - 744;
  • Файл wp-config.php - 660;

Чтобы установить такие права перейдите в папку с сайтом и наберите:

cd /путь/к/сайту
$ sudo find . -type f -exec chmod 664 {} +
$ sudo find . -type d -exec chmod 775 {} +
$ sudo chmod 660 wp-config.php

Если проблема была в этом, то она решена. Также проверьте не включен ли selinux, это дополнительная система прав, которая тоже может создавать проблемы.

7. Ограничения сервера

Возможно, на создание страницы не хватает оперативной памяти или времени выполнения из-за очень жестких ограничений веб-сервера. Чтобы увеличить количество доступной памяти добавьте такую директиву в wp-config:

define('WP_MEMORY_LIMIT', '64M');

Если это не работает, добавьте такую строку в php.ini:

memory_limit 64M

8. Неудачное обновление

Проблему white screen wordpress может вызвать неудачное обновление, например, из-за таймаута сервера. Проверьте есть ли файл .maintence в корневой папке. Этот файл wordpress создает на период обновления. Если обновление было завершено, но этот файл не удалился, то вы можете его удалить вручную, если же обновление не было выполнено, возможно, вам придется обновить wordpress вручную.

Выводы

В этой статье мы рассмотрели что такое ошибка белый экран wordpress, почему она возникает и как ее решить. Причиной этой ошибки могут стать и другие проблемы, например, вирусное заряжение сайта, проблемы с оборудованием хостинга, ошибка DNS. Но рассмотренные в статье причины встречаются наиболее часто. Если у вас остались вопросы, спрашивайте в комментариях!

Ошибка error while loading shared libraries

Новые и опытные пользователи Linux могут сталкиваться с ошибкой error loading shared libraries во время запуска программ, также с ней могут сталкиваться программисты и все желающие компилировать программное обеспечение в своей системе. Эта ошибка в дословном переводе означает что возникла проблема во время загрузки общей библиотеки. О том что такое библиотеки и зачем они нужны вы можете узнать из статьи библиотеки Linux.

В этой же статье мы рассмотрим что значит ошибка error while loading shared libraries более подробно, а главное, как ее решить.

Что означает error while loading shared libraries?

Даже если вы не компилируете свои программы, то вы можете увидеть ошибку error while loading shared libraries: имя_библиотеки: cannot open shared object file: No such file or directory достаточно часто во время установки новых программ не через пакетный менеджер или программ, предназначенных для другого дистрибутива. Как я уже говорил, она возникает потому, что система не может найти библиотеку.

А вот почему ее нельзя найти и загрузить, это уже интересно. Этому может быть несколько причин:

  • Библиотека не установлена в системе;
  • Библиотека установлена, но неизвестно куда;
  • Библиотека установлена правильно, но имеет не ту версию.

При решении проблемы мы будем руководствоваться именно этими причинами и пытаться их решить.

Как исправить ошибку?

1. Библиотека не установлена

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

Например, если нам не хватает библиотеки libfuse2.so, то мы можем найти ее в Ubuntu такой командой:

sudo apt search libfuse2

 

Затем осталось только установить ее:

sudo apt install libfuse2

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

sudo apt install libfuse-dev

И так для любой библиотеки. Но это не всегда помогает.

2. Библиотека находится не в том каталоге

Бывает что библиотека установлена, мы установили ее или она поставлялась вместе с программой, но ошибка как была, так и есть. Причиной этому может быть то, что загрузчик Linux не может найти библиотеку.

Поиск библиотек выполняется по всех папках, которые указаны в конфигурационных файлах /etc/ld.conf.d/. По умолчанию, это такие каталоги, как /usr/lib, /lib, /usr/lib64, /lib64. Если библиотека установлена в другой каталог, то, возможно, это и есть причина проблемы.

Вы можете посмотреть какие библиотеки сейчас доступны загрузчику с помощью команды:

ldconfig -p

Найти, где находится ваша библиотека можно с помощью команды locate. Например, нас интересует библиотека librtfreader.so:

 locate librtfreader

Теперь мы знаем, что она находится по адресу /opt/kingsoft/wps-office/office6/. А значит, для работы программы необходимо сделать чтобы загрузчик библиотек ее видел. Для этого можно добавить путь в один из файлов /etc/ld.so.conf.d/ или же в переменную LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/

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

ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so

3. Неверная версия библиотеки

Эта причина ошибки довольно часто встречается при использовании программ не для вашего дистрибутива. Каждая библиотека имеет дополнительную версию, так называемую ревизию, которая записывается после расширения .so. Например, libav.so.1. Так вот, номер версии меняется всякий раз, когда в библиотеку вносятся какие-либо исправления.

Часто возникает ситуация, когда в одном дистрибутиве программа собирается с зависимостью от библиотеки, например, libc.so.1, а в другом есть только libc.so.2. Отличия в большинстве случаев здесь небольшие и программа могла бы работать на второй версии библиотеки. Поэтому мы можем просто создать символическую ссылку на нее.

Например, библиотеки libusb-1.0.so.1 нет. Но зато есть libusb-1.0.so.0.1, и мы можем ее использовать:

 

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

sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1

В большинстве случаев программа не заметит подмены и будет работать, как и ожидалось. Также для решения этой проблемы можно попытаться найти нужную версию библиотеки в интернете для своей архитектуры и поместить ее в папку /usr/lib/ или /usr/lib64/. Но после этого желательно обновить кэш:

sudo ldconfig

Выводы

В этой статье мы рассмотрели почему возникает ошибка Error while loading shared libraries, а также как ее решить. В большинстве случаев проблема решается довольно просто и вы получите работоспособную программу. Надеюсь, эта информация была полезной для вас.

Настройка звука в wine через oss

Приветствую всех! Хотел бы рассказать о решении проблемы, с которой столкнулся сам. Я решил установить старые игры для Linux: Герои 3, Knights and Merchants. Эти игры используют SDL библиотеки для звука и видео. Но с видео все в порядке а звука нет. Это связано с тем что SDL рассчитывает на OSS, а не ALSA или PulseAudio. Для решения проблемы можно использовать несколько способов. Дальше рассмотрим как выполняется настройка звука wine для работы через oss.

Настройка звука в Wine

Есть несколько вариантов решения проблемы нет звука wine с помощью эмуляции OSS в linux:

  • установить старую звуковую карту и старую версию системы;
  • aoss — перехват обращений через alsa-oss;
  • padsp — перехват обращений через pulseaudio;

Ставить старую звуковую карту и старую систему я не буду, а вот эмулировать звук очень даже подходит. Далее, я пошагово объясню как это сделать. Сначала надо узнать установлен ли Pulse Audio:

ps aux | grep pulseaudio

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

Если выдало ошибку, то у вас ALSA. Дальше нужно зайти в папку с игрой. У меня это ~/knights;

cd /knights

Для PulseAudio команда будет такой:

sudo padsp ./knights

А для Alsa:

sudo aoss ./knights

Все готово, настройка звука Wine завершена, теперь вы можете играть и радоваться звуку. Если у вас x64 разрядная и возникают ошибки, то делаем следующее(только Pulse audio):

sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install libpulse0:i386 libpulsedsp:i386

Копируем исполняемый файл. Я назвал копию padsp32.

sudo cp /usr/bin/padsp /usr/bin/padsp32

Запускаем текстовый редактор от root. Я буду использовать Nano, так как он есть у всех:

sudo nano /usr/bin/padsp32

Заменяем 2 строки в файле padsp32:

/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsedsp.so

на:

/usr/lib/i386-linux-gnu/pulseaudio/libpulsedsp.so

Теперь чтобы запустить игру надо использовать эту команду:

padsp32 ./knights

Вместо ./ путь к файлу, а вместо knights название вашего файла.

Выводы

Вот таким способом можно решить эту проблему, но нужно учесть, что эмуляция эта работает стабильно только, если игра рассчитана на вашу архитектуру (например, x32, а у вас x64 - работать не будет) и в вашей системе есть звук! Спасибо за чтение до конца, это моя первая статья не судите строго! Оставляйте комментарии как работает, если возникли ошибки.

Что значит 502 bad gateway Nginx

Начинающие веб-мастера и системные администраторы временами сталкиваются с ошибкой 502 bad gateway nginx. Nginx - это не просто один из лучших веб-серверов, в то же время, он проектировался как отличный прокси. Логически можно предположить, что эта ошибка возникает, когда что-то не так со шлюзом.

И необязательно чтобы вы использовали Nginx в качестве прокси для доступа к сети. Нет, для работы большинства сайтов требуется генерация динамического контента, например, на php. Поэтому Nginx часто выступает в прокси для Apache или php-fpm. В этой статье мы рассмотрим что означает 502 bad gateway Nginx, как исправить ее.

Что означает 502 bad gateway Nginx

Как и следует из названия, эта ошибка значит, что Nginx попытался связаться со шлюзом и у него ничего не вышло. Например, запросы от пользователей принимает Nginx, поскольку он работает быстро и потребляет мало ресурсов, а за генерацию контента отвечает php-fpm. Если сервис php-fpm во время обработки запроса получил какую-либо ошибку и не вернул результата, или же он вообще отключен и Nginx не может получить к нему доступ мы получим такую ошибку.

Вот основные причины:

  • Nginx используется в качестве прокси для Apache или php-fpm, но эти сервисы не запущены;
  • Nginx используется качестве прокси для php-fpm, но параметры доступа к сокету неверно настроены;
  • Неверно настроены значения размера буфера и таймаута для php-fpm в nginx.conf;
  • Ошибки в конфигурации Nginx.

Как исправить ошибку 502 bad gateway Nginx

1. Анализ логов и перезапуск

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

tail -f /var/log/nginx/error.log

Это уже должно дать вам некоторые подсказки что делать дальше. Еще в первую очередь не помешает проверить файл конфигурации Nginx на ошибки:

nginx -t

 

Допустим, у нас в качестве шлюза для генерации динамического содержимого используется php-fpm. Тогда нужно проверить запущен ли вообще этот сервис:

ps aux | grep php

Если все процессы уже запущены, попробуйте перезапустить их с помощью systemd:

sudo systemctl restart php-fpm

Если процесс остановлен, то его нужно запустить:

sudo systemctl start php-fpm

Это самая распространенная причина, вызывающая ошибку 502 Bad Gateway и обычно после перезапуска сервиса все будет работать, вам осталось выяснить только почему он завершился. В этом вам может помочь просмотр лога php-fpm:

sudo tail -f /var/log/php7.0-fpm.log

Но если такой рецепт не помог, и ошибка 502 bad gateway nginx нужно идти дальше. Внимательно пересмотрите лог, возможно, там уже есть ответ.

2. Доступность php-fpm и владелец

Также эта ошибка может возникать при проблемах доступа к файлу сокета php-fpm, например, когда этот файл называется по другому или для него выставлены неверные права. Сначала убедитесь, что в конфигурационном файле /etc/nginx/nginx.conf указан правильный адрес файла сокета php-fpm:

location ~ \.php$ {
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
include fastcgi_params;
}

Файл /var/run/php7.0-fpm.sock должен действительно существовать в файловой системе. Дальше нужно убедиться, что у сокета правильный владелец, это должен быть тот же пользователь, от имени которого запускается Nginx, группа тоже должна соответствовать. Откройте файл /etc/php7.0/fpm/pool.d/www.conf и найдите строчки user и group. Они должны иметь такое же значение, как строчка user в конфиге nginx.conf:

listen = /var/run/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data

После того как выставите правильные параметры, перезапустите сервисы:

sudo service php5-fpm restart
$ sudo service nginx restart

3. Время отклика и размер буфера

Возможно, размер буфера и время ожидания ответа от fastcgi настроены неверно и программа просто не успевает обработать большой запрос. Попробуйте увеличить такие параметры в /etc/nginx/nginx.conf. Если таких строк не существует, добавьте их в блок http, как здесь:

sudo vi /etc/nginx/nginx.conf

http {
...
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
...
}

Выводы

В этой статье мы рассмотрели 502 bad gateway nginx что это значит и как исправить эту ошибку. Как видите, может быть достаточно много причин ее возникновения, но решить все достаточно просто если внимательно посмотреть логи и понять в чем там действительно проблема. Надеюсь, информация была полезной для вас.