Запуск 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.