Executando o Magento 2 via FastCGI (não mod_php) no OS X via pacotes brew

23

Baseado em várias mensagens do fórum e conversas na comunidade, parece que algumas pessoas estão correndo Magento 2 instâncias de desenvolvimento no OS X através de um ambiente de PHP que não usar o built-in Apache / PHP combinação e em vez disso usa pacotes de brewobter um Ambiente PHP FastCGI em funcionamento com nginxe / ou apache.

Alguém tem uma lista de comandos e instruções de configuração para instalar o Magento 2 no OS X usando pacotes brew OU algum outro meio para executar o PHP em um ambiente FastCGI no OS X? Não estou procurando Docker ou Vagrant - quero executar o PHP nativamente no OS X e não quero usá-lo mod_php.

Alan Storm
fonte
Não tenho certeza se é útil, mas eu nunca fui um fã de cerveja então eu sempre instalado PHP para usar nativamente a partir php-osx.liip.ch
Marcel Hauri
@mhauri Se você tiver instruções para obter o php-fpm dos pacotes liip executando uma resposta completa, seria ótimo.
Alan Storm

Respostas:

12

Apache + PHP-FPM com Homebrew

Etapa 0: antes de começarmos

brew update
brew tap homebrew/services

Etapa 1: Apache

1.- Certifique-se de interromper o serviço apache incorporado

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

2.- Instale o apache2.4

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

Esta etapa vai demorar um pouco, pois precisa compilar o Apache.

3.- Verifique se foi instalado corretamente, você deve ver uma mensagem semelhante a:

Para que o launchd inicie o homebrew / apache / httpd24 agora e reinicie na inicialização: sudo brew services inicie o homebrew / apache / httpd24

Vamos executar o comando:

sudo brew services start homebrew/apache/httpd24

Verifique se tudo está funcionando carregando http: // localhost, após o qual devemos ver o It Works! mensagem Funciona

Etapa 2: PHP-FPM

1.- Vamos continuar instalando o PHP

brew install -v homebrew/php/php70

2.- Inicie o PHP-FPM, a beleza do homebrew / php é que ele instala o PHP e o FPM, portanto, precisamos apenas executar o seguinte:

brew services start homebrew/php/php70

Por enquanto, vamos usar a configuração padrão. Se precisarmos alterar, a configuração está localizada em /usr/local/etc/php/7.0/

Etapa 3: Configuração

1.- Abra a configuração do Apache:

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

2.- Descomente as seguintes linhas:

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

3.- Configure a configuração do proxy para PHP-FPM:

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

Normalmente, eu configuraria isso por vhost para apontá-lo para o diretório certo

4.- Finalmente vamos criar uma página phpinfo () dentro de / usr / local / var / www / htdocs / e confirmar que tudo está funcionando carregando a página de teste: Temos php

Existem mais alguns ajustes, mas isso deve colocá-lo em funcionamento diretamente no OSX.

Para uma explicação mais detalhada da configuração que usamos, verifique a configuração (vhost, php pools, etc) nesta caixa vagrant:

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

Allan MacGregor
fonte
Eu tive que um em brew install homebrew/apache/httpd24 --with-privileged-portsvez de um brew install httpd24 --with-privileged-ports. Isso corresponde à sua experiência no mundo real?
Alan Storm
@ AlanStorm Eu segui o mesmo procedimento, mas de alguma forma como .htaccess está criando um problema ao carregar o index.php do Magento. Ele não deixa a página aberta, no entanto, se eu remover .htaccess da pasta raiz, pelo menos o Magento será aberto, o que novamente fica distorcido por motivos. Poderia, por favor, me orientar sobre isso?
Rizwan Dhuka
10
  1. Siga um dos muitos tutoriais de configuração do Mac + Nginx + PHP-FPM + Mysql como este (não se esqueça de usar brew services):
  2. brew install php70-intl php70-mcrypt
  3. No /usr/local/etc/nginx/nginx.confinterior httpdefinir novo a montante

    upstream fastcgi_backend {
      servidor 127.0.0.1:9070;
    }
    

    9000é a porta padrão, mas eu recomendo adicionar o número da versão do PHP nos últimos dois dígitos, para poder usar poucas versões do PHP ao mesmo tempo, ou seja, para o M1. Você pode modificar a porta do FPM no arquivo /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070e depois reiniciar o PHP usando brew services restart php70.

  4. Copie o nginx.conf.sampleformulário do repositório M2 e salve como /usr/local/etc/nginx/magento2.conf. Esta configuração será fastcgi_backenddefinida na etapa anterior.

  5. Configuração de vhosts e domínios
    servidor {
      ouça 80;
      server_name magento2.dev;
      defina $ MAGE_ROOT / caminho / para / m2 / projeto;
      defina o desenvolvedor $ MAGE_MODE;
      inclua /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Reinicie o Nginx
igloczek
fonte
essa primeira essência pede que você toque homebrew / dupes, que é depreciado e (se bem me lembro) não fornecerá mais as fórmulas necessárias. Aviso: homebrew / dupes foi preterido. Esta torneira está agora vazia como todas as suas fórmulas foram migrados
Alan Storm
Parece que dupesagora fazem parte do núcleo, então você pode simplesmente ignorá-lo e ficar com brew tap homebrew/phpapenas.
Igloczek
Obrigado. Isso é exatamente o que eu precisava. Segui a instalação do Magento, mas para o Ubuntu e a linha 'listen = /run/php-fpm/php-fpm.sock' estava me causando muitos problemas. Tudo o que eu precisava não era adicionar isso apenas para usar: listen = 127.0.0.1:9000 e alterá-lo para listen = 127.0.0.1:9071 se eu quisesse usar a versão multi PHP. Passamos idades procurando soluções.
Iva
10

Etapa 1: Interrompa o serviço apache existente e instale o Apache através do 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

Esta etapa leva um pouco de tempo, pois cria o Apache a partir do código-fonte. Após a conclusão, você verá uma mensagem como:

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

Etapa 2: isso é importante porque você precisará desse caminho na próxima etapa.

$ 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

Agora instalamos o Apache do Homebrew e o configuramos para iniciar automaticamente com uma conta privilegiada.

O servidor pode ser acessado http: // localhost

Etapa 3: Configuração do Apache

Caminho do arquivo de configuração

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

se você quiser alterar a configuração, faça aqui

Nota: agora devemos ativar o mod_rewrite que é comentado por padrão.

LoadModule rewrite_module libexec / mod_rewrite.so

Para a instalação do Magento, o mod_rewrite deve ser ativado neste arquivo de configuração.

# 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

Etapa 4: instalação do PHP

podemos obter uma lista completa de opções disponíveis para incluir, digitando

$ brew install php71 --with-httpd24

Podemos escolher qual versão vamos usar.

Para definir a configuração do PHP para nossas necessidades, por exemplo, memory_limit, date.timezone, display_errors ... etc / apache2 / 2

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

Etapa 5: Configuração do Apache PHP

Agora instalamos com sucesso suas versões do PHP, mas precisamos dizer ao Apache para usá-las. precisamos editar o arquivo de configuração do apache

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

modificando o caminho php.

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

Manipule as solicitações php no apache pela seguinte configuração precisa ser modificada

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

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

Salve o arquivo de configuração e reinicie o apache.

$ sudo apachectl -k restart

Etapa 6: validando o PHP

crie um arquivo php info.php no diretório raiz do documento

O conteúdo de info.php é

<?php phpinfo(); ?>

Etapa 6: verifique a extensão de dependência do PHP for Magento no arquivo php.ini.

Extensões PHP necessárias para 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

Então você pode prosseguir com a instalação do Magento.

Suresh S
fonte
5
  1. Instale o PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Você pode usar o Laravel Valet para automatizar a instalação do Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Crie um diretório de projeto se você ainda não tiver um (pode ser nomeado como quiser)

    mkdir ~/projects
  4. Diga ao Laravel Valet que você armazena seus projetos lá

    cd ~/projects
    valet park
  5. No momento desta publicação, a versão do Laravel Valet que contém o driver Magento2 ainda não foi lançada (foi mesclada , mas ainda não foi lançada por meio de uma tag). Para usá-lo, você pode:

    • Instale o Laravel Valet através do ramo dev-master:

      composer global require laravel/valet:dev-master`
    • ou faça o download do driver e use-o como um driver Valet local:

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

Agora você pode navegar para http://[projectname].dev/ver seu projeto local (onde [nome do projeto] corresponde a um diretório em ~ / projects. Por exemplo:

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

DIVULGAÇÃO COMPLETA: Sou um dos autores do driver Magento2 para o Laravel Valet

Joe Constant
fonte
É possível que eu esteja sendo bastante denso, mas essas etapas parecem incompletas (por exemplo valet link, ing, configuração do nginx m2 ...). Estou pensando demais nisso?
21717 ben ben
O manobrista cuida da ligação. Enquanto você "estaciona" no diretório de projetos e cada projeto é um subdiretório que contém uma instalação M2, não há mais o que fazer. O driver Magento2 para manobrista cuida de tudo para que o Manobrista saiba como servidor de um site M2 (portanto, nenhuma configuração adicional do nginx é necessária). Sim, é realmente assim tão simples. O manobrista foi criado para remover a dor de criar os sites do Laravel. Eles tornaram possível usá-lo para projetos não-Laravel tão bem como vitórias todos
Joe Constante