Spyke

Switching from Apache to Caddy: how to use php-fpm?

Hi, some bot for some reason really needs to scrape my wordpress blog over and over again, overheating my poor celeron.

For laziness I am just using the default wordpress docker image, which is php+apache.

I did some experiments and with php-fpm+caddy it's much faster.

Now i want to migrate all my wordpress blogs, five in total and I want to manage them from a single caddy instance.

php-fpm needs to be mounted in the same path or it can be different?

For example, the wordpress install places the files in /var/www/html, and so for Caddy I mount in the same path and in the Caddyfile i have:

test.example.com{
        root * /var/www/html
        php_fastcgi wordpress:9000
        file_server
}

if i have multiple installs can I mount different paths like /var/www/html2 and so on (but only on caddy) or it must match both containers?

View original on feddit.it

I've only used Caddy as a reverse proxy in production, but on my development machine I use Caddy with php-fpm. That makes me a bit unsure if I understand your questions correctly.

For me that would look something like this:

test.example.com {
	root * /var/www/html
	php_fastcgi unix//run/php/php7.4-fpm.sock
	file_server
}

(Yeah, PHP 7.4, I know)

It looks like your Docker (?) image is exposing the php-fmp socket? I did not even know that was possible, but I don't doubt it is.

Caddy has no issues serving multiple hosts from the same server, it can even be with different php-fpm sockets. Caddy will just nod at you, maybe silently question your choice of still running PHP 7.4, but it accepts it and runs. Just make another block with a different host in the same Caddyfile, and it will work just fine.

2

I use Caddy in production with a PHP-FPM WordPress Docker container in the same way as you describe. I have the site root mounted as a volume on to Caddy container at /var/www/html and mounted in the WordPress PHP-FPM container under a separate path. In my Caddyfile I use the root directive as you've shown but then override it under the php_fastcgi directive to match the path in the WordPress container.

2

I found my answer here at stackoverflow and it worked

basically, it needs to tell the absolute path of php-fpm with the root directive insde php_fastcgi

localhost:80 {
    root * /srv/www
    encode gzip
    php_fastcgi php:9000 {
        root /var/www/html
    }
    file_server
    log
}

then, i had to take care of permissions, because even if caddy is run as root, php-fpm is run as www-data , so the directory ownership need to be assigned to that

1

You reached the end

Switching from Apache to Caddy: how to use php-fpm? | Spyke