TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #5866 1.95K
Узнал совсем недавно про очень любопытный проект для запуска PHP приложений. Я краем глаза про него слышал, но всё никак не доходили руки разобраться и попробовать. И вот теперь дошли. Речь пойдёт про FrankenPHP. Это одиночный бинарник, собранный на Go на базе веб сервера Caddy. С его помощью можно быстро запускать PHP проекты.

Сразу покажу, как это может работать на практике, а потом уже разберём особенности. Для примера запущу сайт на Wordpress с его помощью.

# wget https://github.com/php/frankenphp/releases/download/v1.12.7/frankenphp-linux-x86_64
# chmod +x frankenphp-linux-x86_64
# mv frankenphp-linux-x86_64 /usr/local/bin/frankenphp
# wget https://ru.wordpress.org/latest-ru_RU.zip
# unzip latest-ru_RU.zip
# cd wordpress
# frankenphp php-server

Cкачали бинарник frankenphp, скачали исходники wp, перешли в директорию с php кодом и запустили веб сервер. По умолчанию у него есть в комплекте популярные php модули, которые нужны для wp, он запускается на 80-м порту. Можно идти по IP адресу сервера и устанавливать Worpdress. Подобным образом он работает и в Windows, и в macOS.

Для запуска одиночных скриптов есть отдельный режим php-cli:

# frankenphp php-cli /path/to/your/script.php

Всё это выглядит удобно. Не нужно тянуть на сервер php со всеми его зависимостями, либо искать подходящий преднастроенный контейнер или набор контейнеров.

Как я уже сказал, frankenphp собран на базе веб сервера Caddy, соответственно, он настраивается точно так же, как он. Можно его запускать с подготовленным заранее конфигурационным файлом. Вот пример типовой конфигурации сайта с php в nginx:

server {
  listen 80;
  server_name example.com;
  root /var/www/app/public;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}


А вот он же в формате caddy:

example.com {
  root /var/www/app/public
  php_server
}


В плане конфигурации и деплоя он максимально упрощён по сравнению со всеми присутствующими решениями для PHP. Плюс в комплекте все плюшки Caddy - HTTPv3 из коробки, автовыпуск сертификатов и т.д. Но вообще FrankenPHP создавался не только для упрощения настройки. У него есть принципиально другой режим обработки запросов.

FrankenPHP умеет загружать PHP приложение полностью в оперативную память и там обрабатывать. Это существенно увеличивает отклик приложения. Нет необходимости на каждый запрос читать файл. Для корректной работы в таком формате придумана функциональность hot reload, которая позволяет автоматически обновлять PHP приложение в памяти при изменении исходников, без необходимости перезапуска службы сервера или полной перезагрузки проекта. То есть всё приложение загружается в память и там автоматически обновляется по мере изменения кода. Для поддержки этого режима нужно вносить изменения в сам код. Там ничего сложного, в документации есть примеры для WP, Symfony, Laravel и других общих случаев.

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

Другое дело разовая задача по запуску скриптов, простеньких проектов или каких-то панелей управления на PHP. Тут можно ничего не оптимизировать и просто запускать код, настроив веб сервер в очень простом формате конфигурации веб сервера Caddy. Он сейчас довольно популярен.

Если кто-то использовал FrankenPHP в реальной работе, дайте обратную связь по нему. Я не нашёл какой-то конкретики, реальных отзывов и сравнения производительности. В основном общие слова и описание. Вижу, что кто-то Bitrix на нём запускал.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#php #webserver
GitHub GitHub - php/frankenphp: 🧟 The modern PHP app server 🧟 The modern PHP app server. Contribute to php/frankenphp development by creating an account on GitHub.
  • 👍 27
  • 👎 2
More from @srv_admin
  1. Sep 25, 2026▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересны…
  2. Sep 25, 2026Девопсы, сисадмины, архитекторы, техлиды (и вообще все, кто принимает технические или бизн…
  3. Sep 25, 2026Подписчик поделился полезным проектом - Webtop. Это Linux дистрибутив с графикой, упакован…
  4. Sep 24, 2026Траблшутинг - мастхэв компетенция для инженера В Rebrain траблшутинги проводят уже несколь…
  5. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  6. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →