Как я подружил PHP 8.3 с Apache на FastPanel и не сошел с ума
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 хороша как стартовая площадка. Для новичка — лучшее, что есть. Но как только почувствуешь, что панель мешает — не бойся сносить и ставить всё руками. Это следующий уровень.