Nginx

High performance web server

Installation

Hugh installed, presumably brew install nginx

Storage & Configs

Web roots in /Volumes/Data/www/{domain}

Config in /opt/homebrew/etc/nginx/ and /opt/homebrew/etc/nginx/sites-enabled/

Operation

Homebrew stuff is installed and runs under the user hugh so sudo su -l hugh before poking nginx… and don’t forget the -l flag!

Test configs with /opt/homebrew/bin/nginx -t (as user hugh!)

To reload after changing configs, run (as hugh) brew services restart nginx

php-fpm

Runs on 127.0.0.1:9000, config in /opt/homebrew/etc/php/8.3/php-fpm.conf and /opt/homebrew/etc/php/8.3/php-fpm.d/www.conf

PHP 8.3 is a lot fussier about type-hinting function arguments and return values, which causes all kinds of issues with legacy code (including Seme4 Platform).

There’s a script php8-fixes.php that crudely changes some stuff to fix errors and shut up the warnings… it’s a bit of a horror show and prob needs revisiting in the course of time. Shout if you see any deprication warnings in use!

SSL

Obtain certificates via letsencrypt

You need the following lines (as a minimum) in the domain’s nginx config. See ragld.com for a simple example.

server {
    listen 443 ssl;
    server_name domain.tld www.domain.tld;

    # SSL certificate paths
    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/domain.tld/chain.pem;

    # Root directory
    root /Volumes/Data/www/Sites/domain.tld;

    # standard vhost, including PHP
    include vhost.conf;

}