mysurik.ru

Как я подружил PHP 8.3 с Apache на FastPanel и не сошел с ума

IT блог системного администратора

FastPanel — удобно, но со своими тараканами

Мой сайт mysurik.ru работает на FastPanel. Это панель управления хостингом на nginx + Apache. Удобная штука: сайты добавляются в два клика, SSL Let’s Encrypt автоматом, базы MySQL через phpMyAdmin.

Но когда я решил поменять версию PHP, началось веселье.

Как переключить PHP на FastPanel

По умолчанию FastPanel ставит PHP 8.3 от Apache (mod_php). Работает от пользователя fastuser. В админке FastPanel можно выбрать версию PHP для каждого сайта отдельно: 7.4, 8.0, 8.1, 8.2, 8.3.

Я хотел подключить PHP 8.3, потому что WordPress 7.0 рекомендует именно его. В админке выбрал — и всё. PHP сменился без перезагрузки Apache. Магия.

Но потом WordPress начал падать с ошибкой «Allowed memory size exhausted». Пришлось лезть в php.ini:

/etc/php/8.3/apache2/php.ini

Там я увеличил memory_limit до 512M, upload_max_filesize до 100M, post_max_size до 100M. После правок перезагрузил Apache через FastPanel — всё заработало.

Фокус с пользователем fastuser

Важный нюанс: в FastPanel Apache работает от пользователя fastuser (а не www-data, как обычно). Это значит, что файлы на сайте должны принадлежать fastuser, иначе WordPress не сможет загружать картинки, обновлять плагины, устанавливать темы.

Я наступил на эти грабли: скопировал сайт на сервер через root, и файлы принадлежали root. WordPress ругался «Unable to create directory». Пришлось менять владельца:

chown -R fastuser:fastuser /var/www/fastuser/data/www/mysurik.ru

После этого всё заработало.

FastPanel PHP vs обычный PHP

В FastPanel есть два PHP: системный (через Apache mod_php) и отдельный PHP для CLI (/opt/fphp/bin/php). Они могут быть разных версий.

Я долго не мог понять, почему wp-cli не работает — а он использовал системный PHP, а не fastpanel-ский. Пришлось вызывать его явно:

/opt/fphp/bin/php wp-cli.phar

Теперь занёс это в алиас в .bashrc.

Итог

FastPanel — нормальная панель для небольших сайтов. Для WordPress она даже удобнее, чем чистая настройка nginx + Apache вручную. Главное — помнить про пользователя fastuser и разные версии PHP.

FastPanel — почему я выбрал эту панель

Когда я впервые увидел FastPanel, подумал «очередная админка для хостов». Но покопавшись, понял — вещь. Она легче Vestacp, быстрее ISPmanager и, главное, бесплатная. Ставится одной командой, весит копейки, а делает всё то же самое: сайты, почта, БД, DNS.

Установка прошла гладко. Скрипт сам подтянул Apache 2.4, PHP 8.3 и MySQL 8. Через 10 минут после установки у меня уже работал тестовый сайт. Без лишних телодвижений.

Первая настройка PHP — тут я офигел

Открыл php.ini — а там стандартные 8 MB для upload_max_filesize. У меня на сайте тема с демками весит 15 MB. Пришлось лезть в панель FastPanel, там есть отдельный раздел для PHP-настроек. Поменял на 32 MB, сохранил, перезагрузил PHP-FPM.

Но самое смешное — забыл про Apache. Без перезагрузки самого Apache изменения PHP не применяются к mod_php. Потратил час на поиск проблемы, хотя решение было на поверхности: systemctl reload apache2.

mod_php vs PHP-FPM — вечный спор

FastPanel по умолчанию ставит mod_php для Apache. Это удобно — не надо настраивать прокси, всё работает из коробки. Но mod_php жрёт память как не в себя. На тестовом сервере с 2 GB RAM Apache отжирал 500 MB даже при пустом сайте. Переключился на PHP-FPM — память упала до 150 MB. Разница колоссальная.

Переключение заняло 5 минут: зашёл в настройки FastPanel, выбрал PHP-FPM, указал пул, перезагрузил сервисы. И всё. Для тех, кто не знает — советую сразу ставить на PHP-FPM. mod_php — прошлый век.

Что я понял про FastPanel за неделю

Панель отличная для small-scale проектов. Если у тебя один-два сайта на WordPress — она справится идеально. Но когда сайтов станет 10+, начинаются тормоза в интерфейсе и путаница с пулами PHP. Я упёрся в этот потолок где-то на 8 сайте. Пришлось переезжать на nginx + ручное управление.

Мой вердикт: FastPanel хороша как стартовая площадка. Для новичка — лучшее, что есть. Но как только почувствуешь, что панель мешает — не бойся сносить и ставить всё руками. Это следующий уровень.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *