Esecuzione di Magento 2 tramite FastCGI (non mod_php) su OS X tramite pacchetti brew


23

Sulla base di vari post sul forum e conversazioni nella comunità, sembra che alcune persone eseguano istanze di sviluppo di Magento 2 su OS X tramite un ambiente PHP che non utilizza la combinazione Apache / PHP integrata e utilizza invece i pacchetti da brewper ottenere un Ambiente FastCGI PHP installato e funzionante con nginxe / o apache.

Qualcuno ha un elenco di comandi e istruzioni di configurazione per far funzionare Magento 2 su OS X usando i pacchetti brew O qualche altro mezzo per eseguire PHP in un ambiente FastCGI su OS X? Non sto cercando Docker o Vagrant: voglio eseguire PHP in modo nativo su OS X e non voglio usarlo mod_php.


Non sono sicuro che sia utile, ma non sono mai stato un fan della birra, quindi ho sempre installato PHP da utilizzare in modo nativo da php-osx.liip.ch
Marcel Hauri,

@mhauri Se hai istruzioni per ottenere php-fpm dai pacchetti liip in esecuzione, una risposta completa sarebbe ottima.
Alan Storm,

Risposte:


12

Apache + PHP-FPM con Homebrew

Passaggio 0: prima di iniziare

brew update
brew tap homebrew/services

Passaggio 1: Apache

1.- Assicuriamoci di interrompere il servizio apache incorporato

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

2.- Installa apache2.4

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

Questo passaggio richiederà un po 'di tempo poiché deve compilare Apache.

3.- Verifica che sia stato installato correttamente, dovresti visualizzare un messaggio simile a:

Per avviare launchd avviare homebrew / apache / httpd24 e riavviare all'avvio: sudo brew services avvia homebrew / apache / httpd24

Eseguiamo il comando:

sudo brew services start homebrew/apache/httpd24

Verifica che tutto sia in esecuzione caricando, http: // localhost, dopo di che dovremmo vedere Funziona! Messaggio Funziona

Passaggio 2: PHP-FPM

1.- Continuiamo installando PHP

brew install -v homebrew/php/php70

2.- Avvia PHP-FPM, il bello di homebrew / php è che installa PHP e FPM, quindi dobbiamo solo eseguire quanto segue:

brew services start homebrew/php/php70

Per ora usiamo la configurazione predefinita, se dobbiamo cambiarla la configurazione si trova in /usr/local/etc/php/7.0/

Passaggio 3: configurazione

1.- Apri la configurazione di Apache:

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

2.- Sblocca le seguenti righe:

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

3.- Imposta la configurazione proxy per PHP-FPM:

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

In genere lo configurerei per vhost per puntarlo alla directory giusta

4.- Infine creiamo una pagina phpinfo () all'interno di / usr / local / var / www / htdocs / e confermiamo che tutto funzioni caricando la pagina di test: Abbiamo php

Ci sono alcune altre modifiche, ma questo dovrebbe farti funzionare direttamente su OSX.

Per una panoramica più dettagliata della configurazione che usiamo, controlla la configurazione (vhost, pool php, ecc.) Su questa casella vagabonda:

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


Ho dovuto a brew install homebrew/apache/httpd24 --with-privileged-portsinvece di a brew install httpd24 --with-privileged-ports. Corrisponde alla tua esperienza nel mondo reale?
Alan Storm,

@AlanStorm Ho seguito la stessa procedura ma in qualche modo il modo in cui .htaccess crea un problema durante il caricamento dell'indice.php di Magento. Tuttavia, non rimuovo la pagina se rimuovo .htaccess dalla cartella principale, quindi si apre almeno Magento, che viene nuovamente distorto per motivi. Potresti guidarmi per favore su questo?
Rizwan Dhuka,

10
  1. Segui uno dei tanti tutorial di installazione di Mac + Nginx + PHP-FPM + Mysql come questo (assicurati di usare brew services):
  2. brew install php70-intl php70-mcrypt
  3. In /usr/local/etc/nginx/nginx.confall'interno httpdefinire nuovi monte

    upstream fastcgi_backend {
      server 127.0.0.1:9070;
    }
    

    9000è la porta predefinita, ma consiglierei di aggiungere il numero di versione di PHP come ultime due cifre, per poter utilizzare poche versioni di PHP contemporaneamente, ad esempio per M1. È possibile modificare la porta FPM nel file/usr/local/etc/php/7.0/php-fpm.d/www.conf - listen = 127.0.0.1:9070e quindi riavviare PHP utilizzando brew services restart php70.

  4. copia nginx.conf.sample modulo repository M2 e salva come /usr/local/etc/nginx/magento2.conf. Questa configurazione utilizzerà fastcgi_backenddefinita nel passaggio precedente.

  5. Installa host e domini
    server {
      ascolta 80;
      nome_server magento2.dev;
      impostare $ MAGE_ROOT / percorso / su / m2 / progetto;
      imposta lo sviluppatore $ MAGE_MODE;
      include /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Riavvia Nginx

quella prima cosa ti chiede di toccare homebrew / dupes, che è deprezzato e (se ricordo bene) non ti darà più le formule di cui hai bisogno. Avvertenza: homebrew / dupes è stato deprecato. Questo rubinetto è ora vuoto poiché tutte le sue formule sono state migrate
Alan Storm,

Sembra che dupesora facciano parte del nucleo, quindi puoi semplicemente ignorarlo e restare brew tap homebrew/phpsolo con .
igloczek,

Grazie. Questo è esattamente ciò di cui avevo bisogno. Ho seguito la configurazione di Magento ma per Ubuntu e la riga 'hear = /run/php-fpm/php-fpm.sock' mi stava causando moltissimi problemi. Tutto ciò di cui avevo bisogno non è quello di aggiungerlo solo per usare: hear = 127.0.0.1:9000 e cambiarlo in hear = 127.0.0.1:9071 se volessi usare la versione multi PHP. Ho trascorso anni alla ricerca di soluzioni.
iva,

10

Passaggio 1: interrompere il servizio apache esistente e installare Apache thru 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

Questo passaggio richiede un po 'di tempo in quanto crea Apache dal sorgente. Al termine, dovresti visualizzare un messaggio come:

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

Passaggio 2: questo è importante perché sarà necessario quel percorso nel passaggio successivo.

$ 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

Ora abbiamo installato Apache di Homebrew e configurato per l'avvio automatico con un account privilegiato.

È possibile raggiungere il server http: // localhost

Passaggio 3: Configurazione di Apache

Percorso del file di configurazione

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

se vuoi cambiare la configurazione, dovresti farlo qui

Nota: ora dovremmo abilitare mod_rewrite che è commentato di default.

LoadModule rewrite_module libexec / mod_rewrite.so

Per l'installazione di Magento mod_rewrite dovrebbe essere abilitato in questo file di configurazione.

# 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

Passaggio 4: installazione di PHP

possiamo ottenere un elenco completo delle opzioni disponibili da includere digitando

$ brew install php71 --with-httpd24

Possiamo scegliere la versione che useremo.

Per configurare l'impostazione di configurazione tweak di PHP per le nostre esigenze, ad esempio memory_limit, date.timezone, display_errors ... etc / apache2 / 2

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

Passaggio 5: installazione di Apache PHP

Ora abbiamo installato con successo le tue versioni di PHP, ma dobbiamo dire ad Apache di usarle. dobbiamo modificare il file di configurazione di apache

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

modificando il percorso php.

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

Gestire le richieste php in apache con la seguente configurazione deve essere modificata

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

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

Salvare il file di configurazione e riavviare l'apache.

$ sudo apachectl -k restart

Passaggio 6: convalida di PHP

crea un file php info.php nella directory root del documento

Il contenuto di info.php è

<?php phpinfo(); ?>

Passaggio 6: controlla l'estensione di dipendenza di PHP per Magento nel file php.ini.

Estensioni PHP richieste per 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

Quindi puoi procedere con l'installazione di Magento.


5
  1. Installa PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. È quindi possibile utilizzare Laravel Valet per automatizzare l'installazione di Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Crea una directory di progetto se non ne hai già una (può essere nominata come preferisci)

    mkdir ~/projects
  4. Di 'a Laravel Valet che lì memorizzi i tuoi progetti

    cd ~/projects
    valet park
  5. Al momento di questo post la versione di Laravel Valet che contiene il driver Magento2 non è stata ancora rilasciata (è stata unita , ma non è ancora stata rilasciata tramite un tag). Per usarlo puoi:

    • Installa Laravel Valet tramite il ramo dev-master:

      composer global require laravel/valet:dev-master`
    • oppure scarica il driver e utilizzalo come driver Valet locale:

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

Ora puoi navigare per http://[projectname].dev/vedere il tuo progetto locale (dove [nome progetto] corrisponde a una directory in ~ / progetti, ad esempio:

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

INFORMATIVA COMPLETA: Sono uno degli autori del driver Magento2 per Laravel Valet


È possibile che io sia piuttosto denso, ma questi passaggi sembrano incompleti (ad esempio valet linking, installazione di nginx m2 ...). Sto pensando troppo a questo?
benmark

Il parcheggiatore si occupa del collegamento. Finché si "parcheggia" nella directory dei progetti e ogni progetto è una sottodirectory contenente un'installazione M2, non c'è altro da fare. Il driver Magento2 per valet si occupa di tutto in modo che Valet sappia come server un sito M2 (quindi non è necessaria alcuna ulteriore configurazione nginx). Si, e davvero cosi semplice. Valet è stato creato per rimuovere il dolore causato dall'installazione di siti Laravel. Hanno permesso di usarlo anche per progetti non Laravel, quindi tutti vincono
Joe Constant,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.