通过brew软件包在OS X上通过FastCGI(不是mod_php)运行Magento 2


23

根据社区中各种论坛的帖子和对话,似乎有些人正在通过PHP环境在OS X上运行Magento 2开发实例,该环境不使用内置的Apache / PHP组合,而是使用来自的软件包brew来获取使用nginx和/或运行和运行的FastCGI PHP环境apache

是否有人提供命令列表和配置说明,以使用Brew软件包启动Magento 2并在OS X上运行,或通过其他方法在OS X的FastCGI环境中运行PHP?我不是在寻找Docker或Vagrant-我想在OS X上原生运行PHP,并且不想使用mod_php


不确定它是否有帮助,但是我从来不是啤酒的狂热者
Marcel Hauri

@mhauri如果您有从运行完整答案的liip软件包获取php-fpm的说明,那就太好了。
艾伦·斯托姆

Answers:


12

带有Homebrew的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.-验证它是否正确安装,您应该看到类似以下的消息:

要立即启动start homebrew / apache / httpd24并在启动时重新启动:sudo brew services启动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>

通常,我会为每个虚拟主机设置此文件,以将其指向正确的目录

4.-最后,让我们在/ usr / local / var / www / htdocs /中创建一个phpinfo()页面,并通过加载测试页面来确认一切正常: 我们有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我遵循相同的步骤,但是在加载Magento的index.php时.htaccess是如何造成问题的。它不允许页面打开,但是,如果我从根文件夹中删除.htaccess,则至少会打开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定义新的上游

    上游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. 设置虚拟主机和域
    服务器{
      听80;
      server_name magento2.dev;
      设置$ MAGE_ROOT / path / to / m2 / project;
      设置$ MAGE_MODE开发人员;
      包括/usr/local/etc/nginx/magento2.conf;
    }
    
  6. 重新启动Nginx

第一个要点是要求您点按自酿/重复,这已贬值,并且(如果我还记得的话)将不再为您提供所需的配方。 警告:不建议使用自制程序/重复项。由于所有公式均已迁移,此水龙头现在为空
艾伦·斯托姆

看起来dupes现在已成为核心的一部分,因此您可以忽略它并brew tap homebrew/php仅坚持使用。
igloczek

谢谢。这正是我所需要的。遵循了Magento的设置,但是对于Ubuntu和行“ listen = /run/php-fpm/php-fpm.sock”,这给我带来了很多问题。我所需要的不是添加仅用于使用的内容:listen = 127.0.0.1:9000,如果我想使用多PHP版本,请将其更改为listen = 127.0.0.1:9071。花了很长时间寻找解决方案。
iva

10

步骤1:停止现有的apache服务,并通过Brew安装Apache。

$ 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

现在,我们已经安装了Homebrew的Apache,并将其配置为使用特权帐户自动启动。

可以访问服务器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 ... etc / apache2 / 2

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

步骤5:Apache PHP安装

现在,我们已经成功安装了您的PHP版本,但是我们需要告诉Apache使用它们。我们需要编辑apache配置文件

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

通过修改php路径。

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

通过修改以下配置来处理apache中的php请求

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

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

保存配置文件并重新启动apache。

$ sudo apachectl -k restart

步骤6:验证PHP

在文档根目录中创建一个php文件info.php

info.php的内容是

<?php phpinfo(); ?>

步骤6:在php.ini文件中检查Magento的PHP依赖扩展。

Magento2所需的PHP扩展:

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. 在发布本文时,包含Magento2驱动程序的Laravel Valet版本尚未发布(已合并,但尚未通过标签发布)。要使用它,您可以:

    • 通过dev-master分支安装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/查看您的本地项目(其中[projectname]对应于〜/ projects中的目录。例如:

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

完全公开:我是Laravel Valet的Magento2驱动程序的作者之一


我可能很忙,但是这些步骤似乎不完整(例如valet linking,nginx m2安装...)。我在想这个吗?
benmarks

代客泊车服务负责联系。只要您在项目目录中“停放”并且每个项目都是一个包含M2安装的子目录,就无需执行其他操作。代客的Magento2驱动程序负责所有事务,因此代客知道如何为M2站点提供服务器(因此无需其他nginx配置)。是的,真的就是这么简单。代客停车旨在消除建立Laravel网站的麻烦。他们也可以将其用于非Laravel项目,因此每个人都可以赢得胜利
Joe Constant

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.