На линукс можно поставить как локально, так и через Docker при этом не изменится ни скорость, ни способы взаимодействия с ОС (не вдаваясь в подробности), в отличии от систем Windows или MacOS, где Docker работает иначе, что сказывается на скорости ответа и в целом на работе с докером, кроме того оказывается довольно большая нагрузка на жесткий диск. Поэтому некоторые сервисы системы можно установить локально
Brew
Устанавливаем brew.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
в ходе установке будет установлена xcode
по факту brew — это установщик пакетов, который дополняет то, что не предоставляет apple. Кроме того, можно создать свой пакет, который будет устанавливать пакеты из исходного кода из репозиториев. Как пишут на сайте brew — это ruby и git.
дополнительное руководство по установке можно посмотреть на digital ocean
PHP
Установка
brew install php
Запуск php-fpm
brew services start php
теперь можно обращаться к 127.0.0.1:9000 (по-умолчанию при использовании стандартного файла php-fpm) директива listen = 127.0.0.1:9000 в файле php-fpm.d/www.conf
php конфиг можно найти /usr/local/etc/php/8.1/
Остановка, перезапуск
# restart
brew services restart php
# stop
brew services stop php
nginx
Установка
brew install nginx
Настройка и запуск
Для запуска на 80 порту nginx требует root права, поэтому можно либо не использовать порт 80 (использовать другие порты, например 8080) или запускать от root. Это так же справедливо и для запуска через сервис.
# с использованием 80 порта
sudo brew services start nginx
# или без сервиса
sudo nginx
если использовать порт отличный от 80, то sudo не обязателен
конфиг для nginx можно найти /usr/local/etc/nginx
стандартный конфига содержит сервер по-умолчанию с именем localhost на порту 8080, чтобы добавить свой сервер, можно либо в nginx.conf добавить свои настройки, либо это сделать в каталоге servers
пример конфига (размещать либо в nginx.conf внутри http, либо в отдельном файле например по имени сервера с расширением .conf в папке servers)
server {
  listen   80;
  root /Users/USERNAME/www;
  index index.php index.html index.htm;
  server_name example.com;
  location / {
    try_files $uri $uri/ /index.html;
  }
  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /Users/USERNAME/www;
  }
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}
Если при запуске вы увидете ошибку 403 Forbidden, скорей всего файл(ы), указанный в директиве index не был найден. Возможно стоит проверить указанный путь root.
Так же может быть ошибка 404 Not Found, но при этом в логах будет forbidden, то как вариант можно изменить права на папку пользователя
chmod 755 $HOME # /Users/username
Расширения php
Для установки некоторых расширений нужно использовать pecl. Pecl ставится по-умолчанию с php, но если не установился, то можно установить вручную, например выполнив команду:
curl -O https://pear.php.net/go-pear.phar
php -d detect_unicode=0 go-pear.phar # или с sudo для установки глобально
после установки расширений php-fpm необходимо перезапустить
brew services restart php
XDebug
pecl install xdebug
при установке через pecl  будет установлено расширение, собрано и установлено в необходимую папку php и добавлено в php.ini
imagick
установка imagick требует удовлетворения зависимостей
brew install pkg-config imagemagick
далее устанавливаем расширение через pecl
pecl install imagick
при ошибке permission denied, возможно необходимо установить imagick от root
sudo pecl install imagick
Redis
расширение для редис php-redis требует установку через исходный код
git clone https://www.github.com/phpredis/phpredis.git
cd phpredis
phpize && ./configure && make && sudo make install
поскольку сборка идет самостоятельно, то необходимо
- скопировать файл расширения 
modules/redis.soв папку с расширениями (указана в php.ini в директивеextension_dir=/usr/local/lib/php/pecl/20210902) - добавить 
extension=redis.soвphp.ini - перезапустить php
 
Установка Postgresql
brew install postgresql
Запуск и остановка
brew services start postgresql
brew services stop postgresql
Первичная настройка
Вход в консоль psql
psql postgres # войдем в postgresql от root пользователя
Создадим пользователя с именем username паролем password и с правом создавать базу данных.
CREATE ROLE username WITH LOGIN PASSWORD 'password';
ALTER ROLE username CREATEDB;
Установка pg_dump
brew install libpq
для отображения команды в консоли, нужно добавить
# ZSH
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# Bash
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
Node
brew install node
brew install node@14 # для установки другой версии
для того, чтобы при вызове node в консоли использовалась необходимая версия, можно добавить в ~/.zshrc строку alias node='export PATH="/usr/local/opt/node@14/bin:$PATH"; node -v' или аналогичным образом можно разделить вызов по версиям:
alias node16='export PATH="/usr/local/bin:/usr/local/opt/node@16/bin:$PATH"; node -v'
alias node14='export PATH="/usr/local/opt/node@14/bin:$PATH"; node -v'
Разное
Brew Alias
установка alias
brew alias aliasname=command --new
список алиасов
brew alias
редактирование и удаление алиасов можно производить в папке /Users/username/.brew-aliases
Источники
- How To Install and Use Homebrew on macOS | DigitalOcean
 - Как установить и настроить PHP в macOS — Блог HTML Academy
 - How to Configure Nginx to Execute PHP Using PHP-FPM
 - Install Pecl on Mac — Black Deer Dev
 - How to install PHP, Pear, PECL, and APC with Homebrew on Mac OS X? — Super User
 - Install PHP’s imagick extension on Mac with Brew
 - php — Install phpredis MAC OSX — Stack Overflow
 - Installing PostgreSQL on a Mac with Homebrew
 - how to install pg_dump on mac Code Example
 - How to switch between Node.js versions with Homebrew (2021) | RJS
 - mac osx — nginx symlinks permission denied / 403 Forbidden on Mac OSX — Server Fault