FreeBSD, Caddy e PHP - un connubio perfetto
NOTA: Il seguente post è la traduzione dell'equivalente in inglese sul blog it-notes. L'originale sarà sempre più aggiornato.
Caddy è un ottimo server web. È più facile da configurare rispetto a nginx e gestisce le richieste/rinnovi dei certificati ssl, quindi non è necessario utilizzare certbot/cron. A volte si potrebbe preferire usare Caddy invece di Nginx/Apache/Lighttpd/etc.
FreeBSD e Caddy funzionano molto bene insieme per siti web statici/reverse proxy, ma spesso abbiamo bisogno di servire siti web dinamici. Aggiungere PHP è abbastanza facile.
Iniziamo con l'installare e abilitare Caddy:
pkg install caddy service caddy enable
Ora installiamo PHP - diciamo PHP 8.1 - e abilitiamo php-fpm:
pkg install php81 service php-fpm enable
Preferisco usare php-fpm tramite socket locali, se il server web e php-fpm sono in esecuzione sullo stesso host. Perciò modifichiamo alcune configurazioni modificando /usr/local/etc/php-fpm.d/www.conf:
Cambiamo la configurazione da:
_listen = 127.0.0.1:9000_
a
_listen = /var/run/php81.sock_
Cambiamo ora il proprietario del socket, basta decommentare:
listen.owner = www listen.group = www listen.mode = 0660
Avviamo ora php-fpm:
service php-fpm start
Ora va modificato /usr/local/etc/caddy/Caddyfile. Basta aggiungere qualcosa del genere:
my.website.com { root * /usr/local/www/website php_fastcgi unix//var/run/php81.sock file_server }
Questo configurerà un virtualhost chiamato my.website.com (e Caddy cercherà di ottenere un certificato per esso), con la sua radice su /usr/local/www/website e processerà qualsiasi richiesta di file .php tramite php socket. La direttiva file_server assicura che i file statici possano essere serviti dal percorso principale.
Avviamo ora Caddy:
service caddy start
Questo è tutto. Naturalmente si tratta di una configurazione molto elementare, ma può essere usata come bozza per setup più avanzati. Per esempio, si può aggiungere qualcosa del tipo:
@disallowed { path /xmlrpc.php path *.sql path /wp-content/uploads/*.php } rewrite @disallowed '/index.php'
e potrete avere un'installazione di Wordpress funzionante (e abbastanza sicura).
Commenti