MacOS окружение через brew

На линукс можно поставить как локально, так и через 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

Источники

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.