Uruchamianie Magento 2 przez FastCGI (nie mod_php) na OS X przez pakiety parzenia


23

W oparciu o różne komentarze na forum i rozmów w społeczności, wydaje się, że niektórzy ludzie są uruchomione Magento 2 przypadki rozwoju na OS X za pomocą środowiska PHP, który nie korzysta z wbudowanego serwera Apache / PHP combo, a zamiast tego korzysta z pakietów brew, aby uzyskać Środowisko FastCGI PHP działa z nginxi / lubapache .

Czy ktoś ma listę poleceń i instrukcji konfiguracji do uruchomienia Magento 2 w systemie OS X przy użyciu pakietów brew lub w inny sposób do uruchamiania PHP w środowisku FastCGI w systemie OS X? Nie szukam Dockera ani Vagranta - chcę uruchomić PHP natywnie na OS X i nie chcę używać mod_php.


Nie jestem pewien, czy to jest pomocne, ale nigdy nie byłem fanem naparu, więc zawsze instalowałem PHP, aby używać natywnie z php-osx.liip.ch
Marcel Hauri

@ mhauri Jeśli masz instrukcje dotyczące pobierania php-fpm z pakietów Liip, pełna odpowiedź byłaby świetna.
Alan Storm,

Odpowiedzi:


12

Apache + PHP-FPM z Homebrew

Krok 0: Zanim zaczniemy

brew update
brew tap homebrew/services

Krok 1: Apache

1.- Upewnijmy się, aby zatrzymać wbudowaną usługę apache

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

2. - Zainstaluj apache 2.4

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

Ten krok zajmie trochę czasu, ponieważ musi skompilować Apache.

3.- Sprawdź, czy został poprawnie zainstalowany, powinieneś zobaczyć komunikat podobny do:

Aby uruchomić uruchom teraz homebrew / apache / httpd24 i uruchom ponownie przy starcie: sudo brew services start homebrew / apache / httpd24

Uruchommy polecenie:

sudo brew services start homebrew/apache/httpd24

Sprawdź, czy wszystko działa, ładując http: // localhost, po którym powinniśmy zobaczyć, że działa! wiadomość To działa

Krok 2: PHP-FPM

1.- Kontynuujmy instalację PHP

brew install -v homebrew/php/php70

2.- Uruchom PHP-FPM, piękno homebrew / php polega na tym, że instaluje PHP i FPM, więc wystarczy uruchomić następujące czynności:

brew services start homebrew/php/php70

Na razie skorzystajmy z domyślnej konfiguracji, jeśli musimy ją zmienić, konfiguracja znajduje się w /usr/local/etc/php/7.0/

Krok 3: Konfiguracja

1. - Otwórz konfigurację Apache:

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

2.- Odkomentuj następujące wiersze:

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

3.- Skonfiguruj konfigurację proxy dla PHP-FPM:

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

Zwykle ustawiałbym to dla każdego hosta vhost, aby wskazywał właściwy katalog

4.- Na koniec stwórzmy stronę phpinfo () wewnątrz / usr / local / var / www / htdocs / i potwierdź, że wszystko działa, ładując stronę testową: Mamy php

Jest jeszcze kilka drobnych poprawek i zmian, ale to powinno sprawić, że zaczniesz działać bezpośrednio na OSX.

Aby uzyskać bardziej szczegółowy opis konfiguracji, której używamy, sprawdź konfigurację (vhost, pule php itp.) Na tym błędnym polu:

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


Musiałem brew install homebrew/apache/httpd24 --with-privileged-portszamiast brew install httpd24 --with-privileged-ports. Czy to pasuje do twoich wrażeń z prawdziwego świata?
Alan Storm,

@AlanStorm Postępowałem zgodnie z tą samą procedurą, ale niektórzy wyjaśniają, w jaki sposób .htaccess tworzy problem podczas ładowania index.php Magento. Nie pozwala jednak na otwarcie strony, jeśli usunę plik .htaccess z folderu głównego, wówczas otworzy się przynajmniej Magento, który ponownie ulega zniekształceniu z przyczyn. Czy możesz mi pomóc w tej sprawie?
Rizwan Dhuka

10
  1. Wykonaj jeden z wielu samouczków instalacyjnych Mac + Nginx + PHP-FPM + MySQL, takich jak ten (koniecznie użyj brew services):
  2. brew install php70-intl php70-mcrypt
  3. W /usr/local/etc/nginx/nginx.confśrodku httpokreślić Nowe wydanie

    upstream fastcgi_backend {
      serwer 127.0.0.1:9070;
    }
    

    9000jest domyślnym portem, ale polecam dodać numer wersji PHP jako dwie ostatnie cyfry, aby móc korzystać z kilku wersji PHP jednocześnie, tj. dla M1. Możesz zmodyfikować port FPM w pliku /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070a następnie zrestartować PHP używając brew services restart php70.

  4. Skopiuj nginx.conf.samplerepozytorium formularza M2 i zapisz jako /usr/local/etc/nginx/magento2.conf. Ta konfiguracja użyje fastcgi_backendzdefiniowanej w poprzednim kroku.

  5. Skonfiguruj vhosty i domeny
    serwer {
      słuchaj 80;
      nazwa_serwera magento2.dev;
      ustaw $ MAGE_ROOT / path / na / m2 / project;
      ustaw programistę $ MAGE_MODE;
      obejmują /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Uruchom ponownie Nginx

ten pierwszy sposób prosi o wybranie homebrew / dupesów, co jest amortyzowane i nie będzie (jeśli pamiętam) już nie daje potrzebnych formuł. Ostrzeżenie: homebrew / dupes było przestarzałe. Ten kran jest teraz pusty, ponieważ migrowano wszystkie jego formuły
Alan Storm,

Wygląda na to, że dupessą teraz częścią rdzenia, więc możesz go zignorować i trzymać się brew tap homebrew/phptylko.
igloczek

Dziękuję Ci. Właśnie tego potrzebowałem. Postępowałem zgodnie z konfiguracją Magento, ale dla Ubuntu i wiersza „Listen = /run/php-fpm/php-fpm.sock” sprawiało mi tyle problemów. Wszystko czego potrzebowałem, to nie dodawać tego tylko do użycia: Listen = 127.0.0.1:9000 i zmienić go na Listen = 127.0.0.1:9071, jeśli chciałbym używać wielu wersji PHP. Spędzony czas szukał rozwiązań.
iva

10

Krok 1: Zatrzymaj istniejącą usługę Apache i zainstaluj Apache poprzez 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

Ten krok zajmuje trochę czasu, ponieważ buduje Apache ze źródła. Po zakończeniu powinien zostać wyświetlony komunikat:

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

Krok 2: Jest to ważne, ponieważ będziesz potrzebować tej ścieżki w następnym kroku.

$ 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

Teraz zainstalowaliśmy Apache Homebrew i skonfigurowaliśmy go do automatycznego uruchamiania z uprzywilejowanym kontem.

Do serwera można dotrzeć http: // localhost

Krok 3: Konfiguracja Apache

Ścieżka pliku konfiguracyjnego

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

jeśli chcesz zmienić konfigurację, powinieneś to zrobić tutaj

Uwaga: powinniśmy teraz włączyć mod_rewrite, który jest domyślnie komentowany.

LoadModule rewrite_module libexec / mod_rewrite.so

W przypadku instalacji Magento mod_rewrite powinien być włączony w tym pliku konfiguracyjnym.

# 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

Krok 4: Instalacja PHP

możemy uzyskać pełną listę dostępnych opcji do włączenia, pisząc

$ brew install php71 --with-httpd24

Możemy wybrać wersję, której będziemy używać.

W celu skonfigurowania ustawienia konfiguracji poprawiania PHP dla naszych potrzeb, na przykład, limit_pamięci, data.timezone, błędy_wyświetlania ... etc / apache2 / 2

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

Krok 5: Konfiguracja Apache PHP

Teraz pomyślnie zainstalowaliśmy twoje wersje PHP, ale musimy powiedzieć Apache, aby ich używał. musimy edytować plik konfiguracyjny Apache

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

modyfikując ścieżkę php.

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

Obsługa żądań php w Apache przez następującą konfigurację wymaga modyfikacji

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

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

Zapisz plik konfiguracyjny i uruchom ponownie apache.

$ sudo apachectl -k restart

Krok 6: Sprawdzanie poprawności PHP

utwórz plik php info.php w katalogu głównym dokumentu

Treść info.php to

<?php phpinfo(); ?>

Krok 6: Sprawdź rozszerzenie zależności PHP dla Magento w pliku php.ini.

Wymagane rozszerzenia PHP dla 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

Następnie możesz kontynuować instalację Magento.


5
  1. Zainstaluj PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Następnie możesz użyć Laravel Valet do zautomatyzowania instalacji Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Utwórz katalog projektu, jeśli jeszcze go nie masz (możesz go nazwać, jak chcesz)

    mkdir ~/projects
  4. Powiedz Laravelowi Valet, że przechowujesz tam swoje projekty

    cd ~/projects
    valet park
  5. W momencie pisania tego postu wersja Laravel Valet, która zawiera sterownik Magento2, nie została jeszcze wydana (została scalona , ale nie została jeszcze wydana przez tag). Aby go użyć, możesz:

    • Zainstaluj Laravel Valet za pośrednictwem gałęzi dev-master:

      composer global require laravel/valet:dev-master`
    • lub pobierz sterownik i użyj go jako lokalnego sterownika usługi Lokaj:

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

Możesz teraz przeglądać, aby http://[projectname].dev/zobaczyć lokalny projekt (gdzie [nazwa projektu] odpowiada katalogowi w ~ / projects. Np .:

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

PEŁNE UJAWNIENIE: Jestem jednym z autorów sterownika Magento2 dla Laravela Valet


Możliwe, że jestem dość gęsty, ale te kroki wydają się niepełne (np. valet linkKonfiguracja nginx m2 ...). Czy zastanawiam się nad tym?
zyskuje

Parkowanie samochodu zajmuje się łączeniem. Tak długo, jak „zaparkujesz” w katalogu projektów, a każdy projekt jest podkatalogiem zawierającym instalację M2, nie pozostaje nic więcej do roboty. Sterownik Magento2 dla kamerdynera zajmuje się wszystkim, dzięki czemu Lokaj wie, jak serwować witrynę M2 (więc nie jest wymagana dodatkowa konfiguracja nginx). Tak, to naprawdę takie proste. Lokaj został zbudowany, aby usunąć ból związany z konfigurowaniem witryn Laravel. Dzięki niemu można było używać go również w projektach spoza Laravela, więc wszyscy wygrywają
Joe Constant

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.