Запуск Magento 2 через FastCGI (не mod_php) на OS X за допомогою варільних пакетів


23

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

Чи є у когось список команд та інструкцій по налаштуванню для отримання Magento 2 та запуску на OS X за допомогою пакетів варити АБО чи інших засобів для запуску PHP у середовищі FastCGI на OS X? Я не шукаю Докера або Вагранта - я хочу запустити PHP в оригінальному режимі на OS X і не хочу використовувати mod_php.


Не впевнений, чи це корисно, але я ніколи не був фанатом пивоваріння, тому я завжди встановлював 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.- Перевірте, чи було встановлено правильно, ви побачите повідомлення, подібні до:

Щоб запустити запуску homebrew / apache / httpd24 зараз і перезапустити при запуску: служби sudo brew запускають 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>

Як правило, я налаштував би це за vhost, щоб вказати його на потрібний каталог

4.- Нарешті давайте створимо сторінку phpinfo () всередині / usr / local / var / www / htdocs / і підтвердимо, що все працює, завантаживши тестову сторінку: У нас є php

Є ще кілька налаштувань, але це повинно вас запустити і працювати безпосередньо на OSX.

Для більш детального ознайомлення з конфігурацією ми використовуємо перевірку конфігурації (vhost, php пули тощо) у цьому поле бродячого:

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 створює проблему під час завантаження Magento's index.php. Однак вона не дозволяє відкрити сторінку, якщо я видаляю .htaccess з кореневої папки, тоді відкриється atleast Magento, який знову ж таки спотворюється з причин. Не могли б ви мене про це направити?
Rizwan Dhuka

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 / шлях / до / м2 / проект;
      встановити розробника $ MAGE_MODE;
      включати /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Перезапустіть Nginx

цей перший суть просить вас натиснути домашню капусту / мальви, що знецінилося і більше (якщо я пригадую) більше не дасть вам потрібних формул. Попередження: домашнє пиво / дупи було застарілим. Цей кран тепер порожній, оскільки всі його формули були переміщені
Алан Шторм

Схоже dupes, зараз це частина ядра, тому ви можете просто проігнорувати його та дотримуватися brew tap homebrew/phpлише цього.
igloczek

Дякую. Це саме те, що мені було потрібно. Слідкував за налаштуванням Magento, але для Ubuntu та рядка "liste = /run/php-fpm/php-fpm.sock" викликала у мене багато проблем. Все, що мені було потрібно, - це не додати, що просто використовувати: listen = 127.0.0.1:9000 і змінити його на прослуховування = 127.0.0.1:9071, якщо я хотів би використовувати версію PHP з декількома мовами. Витрачені віки шукають рішення.
iva

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 ... тощо / apache2 / 2

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

Крок 5: Налаштування PHP Apache

Зараз ми успішно встановили ваші версії 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>

Збережіть файл конфігурації та перезапустіть апаш.

$ 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 через відділення майстра розробників:

      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/my-super-awesome-client => my-super-awesome-client.dev

ПОВНИЙ ВІДКРИТТЯ: Я один з авторів драйвера Magento2 для Laravel Valet


Можливо, я досить щільний, але ці кроки здаються неповними (наприклад, valet linking, налаштування nginx m2 ...). Чи я це передумую?
орієнтири

Парк парковки дбає про зв'язування. Поки ви «паркуєте» у своєму каталозі проектів і кожен проект є підкаталогом, що містить встановлення M2, більше нічого робити. Драйвер Magento2 для Valet піклується про все, щоб Valet знав, як сервер M2-сайту (тому додаткові конфігурації nginx не потрібні). Так, це насправді так просто. Valet був побудований, щоб зняти біль за налаштування сайтів Laravel. Вони дозволили використовувати його і для проектів, що не належать до Laravel, тому всі перемагають
Джо Констант

1

Ви можете використовувати Valet + замість того, щоб налаштувати його самостійно, але це автоматизоване рішення з голими металами Mac OS на основі пакетів Homebrew. Кроки налаштування та інші речі описані на Github .

Блог про це - Представляючи Valet +, швидке середовище розробки PHP

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.