Exécuter Magento 2 via FastCGI (pas mod_php) sur OS X via des packages de brassage

23

Sur la base de diverses publications et conversations sur le forum dans la communauté, il semble que certaines personnes exécutent des instances de développement Magento 2 sur OS X via un environnement PHP qui n'utilise pas le combo Apache / PHP intégré et utilise à la place des packages de brewpour obtenir un Environnement PHP FastCGI opérationnel avec nginxet / ou apache.

Quelqu'un a-t-il une liste de commandes et d'instructions de configuration pour que Magento 2 soit opérationnel sur OS X à l' aide de packages de brassage OU d'autres moyens pour exécuter PHP dans un environnement FastCGI sur OS X? Je ne recherche pas Docker ou Vagrant - je veux exécuter PHP nativement sur OS X et je ne veux pas l'utiliser mod_php.

Alan Storm
la source
Je ne sais pas si c'est utile, mais je n'ai jamais été un fan de brew, j'ai donc toujours installé PHP pour l'utiliser nativement depuis php-osx.liip.ch
Marcel Hauri
@mhauri Si vous avez des instructions pour obtenir le php-fpm à partir des paquets liip exécutant une réponse complète, ce serait bien.
Alan Storm

Réponses:

12

Apache + PHP-FPM avec Homebrew

Étape 0: avant de commencer

brew update
brew tap homebrew/services

Étape 1: Apache

1.- Assurons-nous d'arrêter le service Apache intégré

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

2.- Installez apache2.4

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

Cette étape prendra un certain temps car elle doit compiler Apache.

3.- Vérifiez qu'il a été installé correctement, vous devriez voir un message similaire à:

Pour que launchd démarre homebrew / apache / httpd24 maintenant et redémarre au démarrage: sudo brew services démarre homebrew / apache / httpd24

Exécutons la commande:

sudo brew services start homebrew/apache/httpd24

Vérifiez que tout fonctionne en chargeant, http: // localhost après quoi nous devrions voir It Works! message Ça marche

Étape 2: PHP-FPM

1.- Continuons en installant PHP

brew install -v homebrew/php/php70

2.- Démarrez PHP-FPM, la beauté de l'homebrew / php est qu'il installe PHP et FPM, nous n'avons donc besoin que de lancer ce qui suit:

brew services start homebrew/php/php70

Pour l'instant, utilisons la configuration par défaut, si nous devons la changer, la configuration se trouve dans /usr/local/etc/php/7.0/

Étape 3: configuration

1.- Ouvrez la configuration Apache:

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

2.- Décommentez les lignes suivantes:

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

3.- Configurez la configuration proxy pour PHP-FPM:

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

En règle générale, je configurerais cela par vhost pour le pointer vers le bon répertoire

4.- Enfin, créons une page phpinfo () dans / usr / local / var / www / htdocs / et confirmons que tout fonctionne en chargeant la page de test: Nous avons php

Il y a quelques réglages et virages supplémentaires, mais cela devrait vous permettre de démarrer directement sur OSX.

Pour une description plus détaillée de la configuration que nous utilisons, vérifiez la configuration (vhost, pools de php, etc.) sur cette boîte vagabonde:

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

Allan MacGregor
la source
Je devais un brew install homebrew/apache/httpd24 --with-privileged-portsau lieu d'un brew install httpd24 --with-privileged-ports. Cela correspond-il à votre expérience du monde réel?
Alan Storm
@AlanStorm J'ai suivi la même procédure mais certains comment .htaccess crée un problème lors du chargement de l'index.php de Magento. Il ne laisse cependant pas la page ouverte si je supprime .htaccess du dossier racine, puis au moins Magento s'ouvre, ce qui est à nouveau déformé pour des raisons. Pourriez-vous me guider à ce sujet?
Rizwan Dhuka
10
  1. Suivez l'un des nombreux tutoriels de configuration Mac + Nginx + PHP-FPM + Mysql comme celui-ci (assurez-vous d'utiliser brew services):
  2. brew install php70-intl php70-mcrypt
  3. En /usr/local/etc/nginx/nginx.confdedans httpdéfinir un nouveau amont

    fastcgi_backend en amont {
      serveur 127.0.0.1:9070;
    }
    

    9000est le port par défaut, mais je recommanderais d'ajouter le numéro de version de PHP comme deux derniers chiffres, pour pouvoir utiliser plusieurs versions de PHP en même temps, c'est-à-dire pour M1. Vous pouvez modifier le port FPM dans le fichier /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070puis redémarrer PHP à l'aide de brew services restart php70.

  4. Copiez le nginx.conf.sampleréférentiel du formulaire M2 et enregistrez-le sous /usr/local/etc/nginx/magento2.conf. Cette configuration utilisera fastcgi_backenddéfinie à l'étape précédente.

  5. Configurer les hôtes et les domaines
    serveur {
      écouter 80;
      nom_serveur magento2.dev;
      définissez $ MAGE_ROOT / path / to / m2 / project;
      définir le développeur $ MAGE_MODE;
      inclure /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Redémarrez Nginx
igloczek
la source
ce premier point vous demande d'appuyer sur homebrew / dupes, qui est déprécié et (si je me souviens bien) ne vous donnera plus les formules dont vous avez besoin. Attention: homebrew / dupes a été déprécié. Ce robinet est maintenant vide car toutes ses formules ont été migrées
Alan Storm
Apparemment, ils dupesfont maintenant partie du noyau, vous pouvez donc simplement l'ignorer et ne vous en tenir brew tap homebrew/phpqu'à.
igloczek
Merci. C'est exactement ce dont j'avais besoin. Suivi de la configuration de Magento mais pour Ubuntu et la ligne 'listen = /run/php-fpm/php-fpm.sock' me causait tellement de problèmes. Tout ce dont j'avais besoin est de ne pas ajouter cela juste pour utiliser: listen = 127.0.0.1:9000 et le changer pour écouter = 127.0.0.1:9071 si je voulais utiliser la version multi PHP. A passé des âges à chercher des solutions.
iva
10

Étape 1: arrêtez le service Apache existant et installez Apache via 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

Cette étape prend un peu de temps car elle crée Apache à partir des sources. Une fois terminé, vous devriez voir un message comme:

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

Étape 2: Ceci est important car vous aurez besoin de ce chemin à l'étape suivante.

$ 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

Nous avons maintenant installé Apache de Homebrew et l'avons configuré pour démarrer automatiquement avec un compte privilégié.

Le serveur peut être atteint http: // localhost

Étape 3: Configuration d'Apache

Chemin du fichier de configuration

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

si vous voulez changer la configuration, vous devez le faire ici

Remarque: nous devons maintenant activer mod_rewrite qui est mis en commentaire par défaut.

LoadModule rewrite_module libexec / mod_rewrite.so

Pour l'installation de Magento, mod_rewrite doit être activé dans ce fichier de configuration.

# 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

Étape 4: installation de PHP

nous pouvons obtenir une liste complète des options disponibles à inclure en tapant

$ brew install php71 --with-httpd24

Nous pouvons choisir la version que nous allons utiliser.

Pour configurer le paramètre de configuration tweak de PHP pour nos besoins par exemple, memory_limit, date.timezone, display_errors ... etc / apache2 / 2

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

Étape 5: Configuration d'Apache PHP

Nous avons maintenant installé avec succès vos versions PHP, mais nous devons dire à Apache de les utiliser. nous devons modifier le fichier de configuration d'apache

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

en modifiant le chemin php.

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

Gérer les requêtes php dans apache par la configuration suivante doit être modifiée

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

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

Enregistrez le fichier de configuration et redémarrez l'apache.

$ sudo apachectl -k restart

Étape 6: validation de PHP

créer un fichier php info.php dans le répertoire racine du document

Le contenu de info.php est

<?php phpinfo(); ?>

Étape 6: Vérifiez l'extension de dépendance de PHP pour Magento dans le fichier php.ini.

Extensions PHP requises pour 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

Ensuite, vous pouvez procéder à l'installation de Magento.

Suresh S
la source
5
  1. Installez PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Vous pouvez ensuite utiliser Laravel Valet pour automatiser l'installation de Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Créez un répertoire de projet si vous n'en avez pas déjà un (peut être nommé comme vous voulez)

    mkdir ~/projects
  4. Dites à Laravel Valet que vous y stockez vos projets

    cd ~/projects
    valet park
  5. Au moment de cette publication, la version de Laravel Valet qui contient le pilote Magento2 n'était pas encore sortie (elle a été fusionnée , mais pas encore publiée via une balise). Pour l'utiliser, vous pouvez soit:

    • Installez Laravel Valet via la branche dev-master:

      composer global require laravel/valet:dev-master`
    • ou téléchargez le pilote et utilisez-le comme pilote Valet local:

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

Vous pouvez maintenant parcourir pour http://[projectname].dev/voir votre projet local (où [nom du projet] correspond à un répertoire dans ~ / projets. Par exemple:

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

DIVULGATION COMPLÈTE: Je suis l'un des auteurs du pilote Magento2 pour Laravel Valet

Joe Constant
la source
Il est possible que je sois assez dense, mais ces étapes semblent incomplètes (par exemple valet link ing, configuration de nginx m2 ...). Suis-je trop réfléchir à cela?
benmarks
Le valet park s'occupe de la liaison. Tant que vous "stationnez" dans votre répertoire de projets et que chaque projet est un sous-répertoire contenant une installation M2, il n'y a plus rien à faire. Le pilote Magento2 pour valet s'occupe de tout pour que Valet sache comment gérer un site M2 (donc aucune configuration nginx supplémentaire n'est nécessaire). Oui, c'est vraiment aussi simple que cela. Valet a été construit pour éliminer la douleur de la mise en place des sites Laravel. Ils ont également permis de l'utiliser pour des projets non-Laravel afin que tout le monde gagne
Joe Constant