Запуск Magento 2 через FastCGI (не mod_php) на OS X через brew Packages

23

Основываясь на различных публикациях на форуме и разговорах в сообществе, кажется, что некоторые люди запускают экземпляры разработки Magento 2 на OS X через среду PHP, которая не использует встроенную комбинацию Apache / PHP и вместо этого использует пакеты from brewдля получения FastCGI PHP среда работает и работает с nginxи / или apache.

У кого-нибудь есть список команд и инструкций по настройке для запуска и запуска Magento 2 на OS X с использованием пакетов brew ИЛИ других способов запуска PHP в среде FastCGI на OS X? Я не ищу Docker или Vagrant - я хочу запустить PHP на OS X и не хочу его использовать mod_php.

Алан Сторм
источник
Не уверен, что это полезно, но я никогда не был фанатом
Марсель Хаури
@mhauri Если у вас есть инструкции для получения php-fpm из пакетов liip с полным ответом, было бы здорово.
Алан Сторм

Ответы:

12

Apache + PHP-FPM с домашним пивом

Шаг 0: Прежде чем мы начнем

brew update
brew tap homebrew/services

Шаг 1: Apache

1.- Обязательно остановим встроенный сервис apache

sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
sudo apachectl stop

2.- Установите apache2.4

brew install homebrew/apache/httpd24 --with-privileged-ports

Этот шаг займет некоторое время, так как он должен скомпилировать Apache.

3.- Убедитесь, что он был установлен правильно, вы должны увидеть сообщение, подобное:

Чтобы запустить startd, запустите homebrew / apache / httpd24 и перезапустите при запуске: sudo brew services запустите homebrew / apache / httpd24

Давайте запустим команду:

sudo brew services start homebrew/apache/httpd24

Убедитесь, что все работает, загрузив, http: // localhost, после чего мы должны увидеть, что это работает! сообщение Оно работает

Шаг 2: PHP-FPM

1.- Давайте продолжим, установив PHP

brew install -v homebrew/php/php70

2.- Запустите PHP-FPM, прелесть homebrew / php в том, что он устанавливает PHP и FPM, поэтому нам нужно только выполнить следующее:

brew services start homebrew/php/php70

А пока давайте используем конфигурацию по умолчанию, если нам нужно ее изменить, она находится по адресу /usr/local/etc/php/7.0/

Шаг 3: Конфигурация

1.- Откройте конфигурацию Apache:

vim /usr/local/etc/apache2/2.4/httpd.conf

2.- Раскомментируйте следующие строки:

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_fcgi_module libexec/mod_proxy_fcgi.so

3.- Настройте конфигурацию прокси для PHP-FPM:

<IfModule proxy_module>
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/local/var/www/htdocs/$1
</IfModule>

Обычно я настраиваю это для каждого хоста, чтобы он указывал на правильный каталог

4.- Наконец, давайте создадим страницу phpinfo () внутри / usr / local / var / www / htdocs / и подтвердим, что все работает, загрузив тестовую страницу: У нас есть php

Есть еще несколько твиков и поворотов, но это должно заставить вас работать прямо на OSX.

Для более подробного ознакомления с настройкой, которую мы используем, проверьте конфигурацию (vhost, php pool и т. Д.) В этом бродячем окне:

https://github.com/DemacMedia/vagrant-lamp/tree/master/files

Аллан МакГрегор
источник
Я должен был brew install homebrew/apache/httpd24 --with-privileged-portsвместо brew install httpd24 --with-privileged-ports. Это соответствует твоему опыту реального мира?
Алан Шторм
@AlanStorm Я следовал той же процедуре, но кое-как, как .htaccess создает проблему при загрузке index.php в Magento. Это не позволяет открыть страницу, однако, если я удаляю .htaccess из корневой папки, то открывается, по крайней мере, Magento, который снова искажается по причинам. Не могли бы вы помочь мне в этом?
Ризван Дхука
10
  1. Следуйте одному из множества руководств по установке Mac + Nginx + PHP-FPM + Mysql, как это (обязательно используйте brew services):
  2. brew install php70-intl php70-mcrypt
  3. В /usr/local/etc/nginx/nginx.confвнутри httpопределить новый вверх по течению

    upstream fastcgi_backend {
      сервер 127.0.0.1:9070;
    }
    

    9000является портом по умолчанию, но я бы рекомендовал добавить номер версии PHP в виде двух последних цифр, чтобы можно было использовать несколько версий PHP одновременно, то есть для M1. Вы можете изменить порт FPM в файле /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070и затем перезапустить PHP, используя brew services restart php70.

  4. Скопируйте nginx.conf.sampleформу M2 хранилище и сохраните как /usr/local/etc/nginx/magento2.conf. Этот конфиг будет использовать fastcgi_backendопределенный на предыдущем шаге.

  5. Настройка vhosts и доменов
    сервер {
      слушай 80;
      имя_сервера magento2.dev;
      установить $ MAGE_ROOT / path / to / m2 / project;
      установить $ MAGE_MODE developer;
      include /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Перезапустите Nginx
igloczek
источник
эта первая суть просит вас нажать homebrew / dupes, что обесценивается и больше не даст (если я помню) формулы, которые вам нужны. Предупреждение: доморощенный / dupes устарел. Этот кран теперь пуст, так как все его формулы были перенесены
Alan Storm
Похоже dupes, теперь это часть ядра, так что вы можете просто проигнорировать это и придерживаться brew tap homebrew/phpтолько.
igloczek
Спасибо. Это именно то, что мне было нужно. После установки Magento, но для Ubuntu и строки 'listen = /run/php-fpm/php-fpm.sock' было очень много проблем. Все, что мне нужно, это не добавлять это просто для использования: listen = 127.0.0.1:9000 и изменить его на listen = 127.0.0.1:9071, если я хочу использовать версию с несколькими PHP. Потратил века на поиски решения.
ива
10

Шаг 1: Остановите существующую службу Apache и установите Apache через Brew.

$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ brew install httpd24 --with-privileged-ports --with-http2

Этот шаг занимает немного времени, поскольку он собирает Apache из исходного кода. По завершении вы должны увидеть сообщение вроде:

/usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 minute 60 seconds

Шаг 2: Это важно, потому что вам понадобится этот путь на следующем шаге.

$ sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons

$ sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

$ sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

$ sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

Теперь мы установили Apache Homebrew и настроили его на автоматический запуск с привилегированной учетной записью.

Сервер может быть достигнут http: // localhost

Шаг 3: Конфигурация Apache

Путь к файлу конфигурации

/usr/local/etc/apache2/2.4/httpd.conf

если вы хотите изменить конфигурацию, сделайте это здесь

Примечание: теперь мы должны включить mod_rewrite, который закомментирован по умолчанию.

LoadModule rewrite_module libexec / mod_rewrite.so

Для установки Magento mod_rewrite должен быть включен в этом файле конфигурации.

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

Шаг 4: установка PHP

мы можем получить полный список доступных вариантов, набрав

$ brew install php71 --with-httpd24

Мы можем выбрать, какую версию мы будем использовать.

Для настройки параметров настройки PHP для наших нужд, например, memory_limit, date.timezone, display_errors ... etc / apache2 / 2

/usr/local/etc/php/7.1/php.ini

Шаг 5: Настройка Apache PHP

Теперь мы успешно установили ваши версии PHP, но нам нужно указать Apache, чтобы они использовались. нам нужно отредактировать файл конфигурации apache

/usr/local/etc/apache2/2.4/httpd.conf

изменив путь php.

LoadModule php7_module    /usr/local/opt/php71/libexec/apache2/libphp7.so

Обрабатывать запросы php в apache следующей конфигурацией, которую необходимо изменить

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Сохраните файл конфигурации и перезапустите apache.

$ sudo apachectl -k restart

Шаг 6: Проверка PHP

создайте php-файл info.php в корневой директории документа

Содержание info.php

<?php phpinfo(); ?>

Шаг 6: Проверьте расширение зависимостей PHP для Magento в файле php.ini.

Требуемые расширения PHP для Magento2:

bc-math 
curl
gd, ImageMagick 6.3.7 (or later) or both
intl
mbstring
mcrypt
mhash
openssl
PDO/MySQL
SimpleXML
soap
xml
xsl
zip
PHP 7 only:
json
iconv

Затем вы можете продолжить установку Magento.

Суреш С
источник
5
  1. Установите PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Затем вы можете использовать Laravel Valet для автоматизации установки Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Создайте каталог проекта, если у вас его еще нет (можно назвать как угодно)

    mkdir ~/projects
  4. Скажите Laravel Valet, что вы храните там свои проекты

    cd ~/projects
    valet park
  5. На момент написания этой статьи версия Laravel Valet, содержащая драйвер Magento2, еще не была выпущена (она была объединена , но еще не выпущена с помощью тега). Чтобы использовать его, вы можете:

    • Установите Laravel Valet через ветку dev-master:

      composer global require laravel/valet:dev-master`
    • или загрузите драйвер и используйте его в качестве локального драйвера Valet:

      curl https://github.com/laravel/valet/raw/master/cli/drivers/Magento2ValetDriver.php -o ~/.valet/Drivers/Magento2ValetDriver.php

Теперь вы можете просмотреть http://[projectname].dev/свой локальный проект (где [имя_проекта] соответствует каталогу в ~ / projects. Например:

~/projects/my-super-awesome-client => my-super-awesome-client.dev

ПОЛНОЕ РАСКРЫТИЕ: Я один из авторов драйвера Magento2 для Laravel Valet

Джо констант
источник
Возможно, я довольно плотный, но эти шаги кажутся незавершенными (например, valet linking, настройка nginx m2 ...). Я обдумываю это?
отметки
Служебный парк позаботится о связи. Пока вы «паркуетесь» в своем каталоге проектов, а каждый проект является подкаталогом, содержащим установку M2, больше ничего не нужно делать. Драйвер Magento2 для valet позаботится обо всем, чтобы Valet знал, как обслуживать сайт M2 (поэтому никакой дополнительной настройки nginx не требуется). Да, это действительно так просто. Камердинер был построен, чтобы устранить боль при настройке сайтов Laravel. Они позволили использовать его и для проектов, не относящихся к Laravel, поэтому все выигрывают
Джо Констан,
1

Вы можете использовать Valet + вместо того, чтобы настраивать его самостоятельно, потому что это автоматическое решение для Mac OS на основе железа, основанное на пакетах Homebrew. Шаги установки и другие вещи описаны на Github .

Сообщение в блоге об этом - Представляем Valet +, Blazing быстро среду разработки PHP

igloczek
источник