Настройка окружения для web-разработки на Mac OS X

Настройка окружения для web-разработки на Mac OS X | neur0n.kz

Установку необходимого софта будем производить с использованием менеджера недостающих пакетов для macOS - Homebrew. Если он у вас еще не устанолен, сперва ставим Xcode через AppStore либо в терминале набираем команду:

$ xcode-select --install

согласившись с лицензионным соглашением.

Установка Homebrew

Открываем терминал (вместо стандартного я использую ITerm2) и запускаем установку командой:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

После установки обновляемся, проверяем все ли в порядке:

$ brew update
$ brew upgrade
$ brew doctor

В качестве сервера баз данных я решил использовать MariaDB.

Cтавим MariaDB:

$ brew install mariadb

Выпоним первоначальную настройку сервера:

$ mysql.server start
$ mysql_secure_installation

и проверяем подключение:

$ mysql -uroot -p

Займемся web сервером nginx:

$ brew install nginx

Настройка nginx и создание структуры директорий.

Для виртуальных хостов я использую следующую структуру (вы можете использовать другую, удобную вам но не забудьте исправить пути в конфигах!):

$ mkdir -p ~/Hosts/test.loc/public_html
$ mkdir -p ~/Hosts/test.loc/logs
$ mkdir -p ~/Hosts/localhost/public_html
$ mkdir -p ~/Hosts/localhost/logs

Конфигурационные файлы вирутальных хостов.

Я использую следующую схему:

$ mkdir -p /usr/local/etc/nginx/sites-available
$ mkdir -p /usr/local/etc/nginx/sites-enabled

После установки nginx, в директории /usr/local/etc/nginx/ имеется стандартный конфигурационный файл nginx.conf. Приведем его к следуюущему виду:

user username groupname; #изменить на свои 
worker_processes        auto;

error_log	            /var/log/nginx.error.log;
pid		                /var/tmp/nginx.pid;

events {
	worker_connections  1024;
}

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/var/log/nginx/access.log;
	error_log          /usr/local/var/log/nginx/error.log;
	
	sendfile		    on;
	tcp_nopush		    on;
	keepalive_timeout	75;
	
	gzip			    on;	
	gzip_types		    text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
	
	include sites-enabled/*.conf;
	}

Далее пишем конфигурацию виртуального хоста в директории /usr/local/etc/nginx/sites-available/

server 
    listen              80 default_server;
    server_name         localhost;

    root                /Volumes/Mac/Users/neur0n/Hosts/localhost/public_html;
    index               index.php;

    access_log          /Volumes/Mac/Users/neur0n/Hosts/localhost/logs/access.log;
    error_log           /Volumes/Mac/Users/neur0n/Hosts/localhost/logs/error.log;

    location /
        try_files $uri $uri/ /index.php$is_args$args;

    location ~ \.php$
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $fastcgi_script_name =404;
        fastcgi_index index.php;
        include fastcgi.conf;

    location ~ /\.ht
        deny  all;

Создаем символьную ссылку:

$ ln -sfv /usr/local/etc/nginx/sites-available/default.conf /usr/local/etc/nginx/sites-enabled/default.conf

Установка PHP

$ brew install homebrew/php/php70 homebrew/php/php70-mcrypt homebrew/php/php70-gmagick homebrew/php/php70-opcache homebrew/php/php70-xdebug
$ export PATH="/usr/local/sbin:$PATH"
$ echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile

Если используете zsh то:

$ echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc

Проверяем версии:

$ source ~/.zshrc

либо (в зависимости от того какой используется шел)

$ source ~/.bash_profile
$ php -v
$ php-fpm -v

Версии должны быть одинаковыми!

Далее создадим файл index.php для проверки:

$ echo '<?php phpinfo();' > ~/Hosts/localhost/public_html/index.php

Запускаем сервисы:

$ sudo nginx
$ php-fpm --fpm-config /usr/local/etc/php/7.0/php-fpm.conf -D

В адресной строке браузера набираем localhost и смотрим результат. Чтобы сервисы автоматически запускались после перезагрузки:

$ cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
$ cp /usr/local/opt/php70/homebrew.mxcl.php70.plist ~/Library/LaunchAgents/
$ cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist 
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php70.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Вот вроде бы и все. Если возникнут вопросы, пишите в комментариях либо через форму обратной связи на странице контактов.