Настройка Nginx, PHP в Mac OS X
Потребовалось мне однажды настроить окружение на маке для одного проекта на PHP. Впервые столкнувшись с этим полез в гугл за мануалами. Но как это обычно бывает, с первого раза не завелось, и со второго тоже, и с пятого.. Так прошло несколько часов и вечер плавно перетек в ночь..
На следующий день после некоторых телодвижений все заработало, и я хочу оставить свой мануал по настройке сие тут.
Задача состояла в следующем: настроить виртуальный хост на папку /public проекта, подняв Nginx. Говно вопрос.
На моем маке уже стоял менеджер пакетов Homebrew, но если у вас его нет, скачать можно отсюда
Установка
- Ставим nginx с помощью brew
brew install nginx - Запускаем nginx
sudo nginx - Открываем в браузере ссылку, если видим приветственную надпись Welcome to Nginx, значит nginx запущен и все хорошо.
http://127.0.0.1:8080/ - Ставим PHP также с помощью brew. В Mac OS X PHP уже предустановлен, но можно и обновить.
brew install php
Конфигурация
Конфиг nginx по умолчанию находится по пути /usr/local/etc/nginx/
Создаем папки для локальных виртуальных хостов
mkdir -p /usr/local/etc/nginx/sites-{enabled,available}
Заменяем дефолтный конфиг nginx.conf этим:
worker_processes 1;
error_log /usr/local/etc/nginx/logs/error.log debug;
events {
worker_connections 256;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/etc/nginx/logs/access.log main;
sendfile on;
keepalive_timeout 65;
index index.html index.php;
include /usr/local/etc/nginx/sites-enabled/*;
}
Создаем файл project.local в sites-available
touch /usr/local/etc/nginx/sites-available/project.local
Вставляем туда конфиг
server {
listen 80;
listen [::]:80;
server_name project.local;
location / {
root /Users/{username}/Projects/project/public/;
try_files $uri $uri/ /index.php?$args;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /Users/{username}/Projects/project/public/;
try_files $uri $uri/ /index.php?$args;
index index.html index.htm index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_intercept_errors on;
include fastcgi_params;
}
}
Линкуем наш хост в sites-enabled (создаем симлинк)
ln -s /usr/local/etc/nginx/sites-available/project.local /usr/local/etc/nginx/sites-enabled
Добавляем наш хост в hosts nano /etc/hosts
# Nginx sites
127.0.0.1 project.local
Тестим конфиг nginx
sudo nginx -t
И если ошибок/предупреждений нет, то обновляем новый конфиг nginx
brew services reload nginx
Проверяем доступность созданного хоста
curl -IL http://project.local:8080
Если видим что-то похожее ниже, то открываем в браузере project.local и радуемся жизни!
HTTP/1.1 200 OK
Server: nginx/1.13.12
Date: Sun, 20 May 2018 21:07:25 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 10 Apr 2018 14:11:19 GMT
Connection: keep-alive
ETag: "5accc607-264"
Accept-Ranges: bytes
На этом установка и настройка окружения завершена. По возникшим проблемам всегда можно обращаться к всезнающему Google
UPD 25.05.2018
Возникли проблемы при настройке второго локального хоста. При попытке открыть новый хост, открывался первый. Перезагрузка nginx не помогала. Проблема решилась перезагрузкой системы.