В дистрибутивах Linux утилита suexec позволяет запускать PHP в режимах FastCGI и CGI только для пользователей с GID и UID выше 1000. Если при миграции были перенесены пользователи с GID/UID ниже 1000, это может привести к ошибкам при открытии сайтов.
Как проявляется проблема?
Зачастую пользователь видит ошибки:
- ERR_TOO_MANY_REDIRECTS для CGI;
- Internal Server Error для FastCGI.
А если заглянуть в журнал веб-сервиса, то там с большей вероятностью вы обнаружите следующую запись:
cgid: error reading data from FastCGI server, referer: https://domain.con
End of script output before headers: index.php, referer:https://domain.con
Всё это указывает на наличие проблемы. Одна из распространённых проблем связана с изменениями в работе утилит и системных компонентов между дистрибутивами. Рассмотрим способы их устранения.
Как решить проблему?
Вы можете поступить одни из способов, которые будут приведены ниже. Для начала создайте новых пользователей с корректными GID/UID.
После чего перенесите данные с помощью инструмента «Смена владельца».
Альтернативный вариант — сделать резервные копии пользователей и их данных, удалить их и восстановить из свежей резервной копии.
Проблемы с DNS
В Ubuntu 20.04 управление DNS-разрешением по умолчанию осуществляется компонентом systemd-resolved, который динамически обновляет файл /etc/resolv.conf. Это может приводить к тому, что изменения DNS-настроек временно применяются или сбрасываются.
Решается ошибка так - нужно редактировать resolved.conf. Для этого откройте файл /etc/systemd/resolved.conf и добавьте нужные DNS-серверы. Например:
text
[Resolve]
DNS=8.8.8.8 8.8.4.4
После изменений перезапустите службу: systemctl restart systemd-resolved
Установите утилиту resolvconf
sudo apt install resolvconf
Затем отредактируйте файл /etc/resolvconf/resolv.conf.d/base, указав нужные DNS-серверы. Примените изменения командой
resolvconf -u.
Блокировка файла /etc/resolv.conf. Используйте команду chattr +i /etc/resolv.conf, чтобы предотвратить его изменение.
Проверка сетевых настроек и доступности
- Проверьте DNS-настройки. Убедитесь, что домен указывает на правильный IP-адрес. Используйте команды
nslookupилиdig. - Проверьте доступность сайта. Попробуйте получить доступ к сайту через curl:
curl -I https://example.com. Обратите внимание на код ответа, заголовки и редиректы. - Проверьте логи веб-сервера. Изучите журналы Apache, Nginx или другого сервера на предмет ошибок. Например, ошибки типа
ERR_TOO_MANY_REDIRECTSили Internal Server Error могут указывать на проблемы с конфигурацией.
Другие возможные причины
Некорректная миграция конфигурационных файлов. Проверьте файлы конфигурации веб-сервера (например, apache2.conf, nginx.conf) на предмет синтаксических ошибок или устаревших настроек.
Проблемы с SSL-сертификатами. Сертификаты должны быть актуальны и правильно настроены на новом сервере.
Ошибки в редиректах. Проверьте, нет ли цепочек редиректов или некорректных перенаправлений.
Брандмауэр или SELinux. Просмотрите все правила брандмауэра и настройки SELinux. Они не должны не блокировать доступ к веб-серверу.
Если проблема не решена:
- Сделать полный бэкап системы и данных.
- Проверить документацию к используемому ПО (например, панели управления) — там могут быть специфические требования к настройке после миграции.
- Обратиться к специалисту по администрированию Linux.
Для более точного диагноза предоставьте дополнительные детали: тип веб-сервера, ошибки в логах, используемые технологии и инструменты миграции.