title: “debian12 编译frankenphp” date: 2024-01-19
tags: [ “Frankenphp”, “caddy”, “xcaddy” ] weight: 100 image: “/images/frankenphp.png”
前言
FrankenPHP 是建立在 Caddy Web 服务器之上的现代 PHP 应用程序服务器。
FrankenPHP 凭借其令人惊叹的功能为你的 PHP 应用程序提供了超能力:早期提示、worker 模式、实时功能、自动 HTTPS、HTTP/2 和 HTTP/3 支持……
FrankenPHP 可与任何 PHP 应用程序一起使用,并且由于提供了与 worker 模式的集成,使你的 Symfony 和 Laravel 项目比以往任何时候都更快。
FrankenPHP 也可以用作独立的 Go 库,将 PHP 嵌入到任何使用 net/http 的应用程序中。
本质来说,frankenphp是通过cgo来跑php的!
至于快/慢问题,目测是比fast-cgi/php-fpm快的。
编译前准备
- 安装必要的依赖
apt-get install libbrotli-dev \
libsnmp-dev
libxml2-dev
libsqlite-dev
libsnmp-dev
libxml2-dev
libsqlite3-dev
libzstd-dev
liblz4-dev
libjpeg-dev
libpng-dev
libpcre3-dev
libmcrypt-dev
libgd-dev
libbz2-dev
libonig-dev
libpq-dev
libreadline-dev
libsodium-dev
- 编译php
./configure --prefix=/usr --libdir=/usr/local/lib --enable-embed=static --enable-static --enable-zts --disable-shared --disable-cgi --disable-fpm --disable-phpdbg --with-config-file-path=/etc/frankenphp --with-config-file-scan-dir=/etc/frankenphp/php.d --enable-zend-max-execution-timers --with-snmp --enable-bcmath --enable-mbstring --enable-ctype --enable-dom --enable-session --enable-simplexml --enable-sockets --enable-tokenizer --enable-xml --enable-xmlreader --enable-xmlwriter --enable-soap --enable-opcache --enable-pdo --with-pdo-mysql --with-pdo-pgsql --with-pgsql --with-zip --with-curl --with-zlib --with-readline --with-iconv --with-libxml --with-openssl --with-bz2 --enable-gd --with-jpeg --with-webp --with-freetype --with-sodium --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-pcntl --enable-shmop --enable-phar
make -j $(nproc)
make install
** 注意,我这里启用了一些扩展,比如snmp,我寄望是一些网络监控服务,诸如cacti/zabbix/librenms也能过痛过这个方式来跑; **
- 设置环境变量
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig export LIBRARY_PATH=/usr/local/lib export C_INCLUDE_PATH=/usr/include/php:/usr/include/php/main:/usr/include/php/TSRM:/usr/include/php/Zend:/usr/include/php/ext export LD_LIBRARY_PATH=/usr/local/lib export PHP_CONFIG=/usr/bin/php-config export CGO_ENABLED=1 export XCADDY_GO_BUILD_FLAGS="-ldflags=’-w -s’ -tags=nobadger,nomysql,nopgx,nowatcher" export CGO_CFLAGS=$(php-config –includes) export CGO_LDFLAGS="$(php-config –ldflags) $(php-config –libs)"
