เล่น Magento 2 ผ่าน FastCGI (ไม่ใช่ mod_php) บน OS X ผ่านทาง Brew Packages


23

ขึ้นอยู่กับการโพสต์ฟอรั่มต่างๆและการสนทนาในชุมชนดูเหมือนว่าคนบางคนกำลังทำงานกรณีการพัฒนาวีโอไอพี 2 ใน OS X ผ่านสภาพแวดล้อม PHP ที่ไม่ได้ใช้ในตัว Apache / PHP คำสั่งผสมและแทนที่จะใช้แพคเกจจากbrewที่จะได้รับ FastCGI PHP สภาพแวดล้อมและทำงานกับและnginx / หรือapache

ไม่มีใครมีรายการคำสั่งและคำแนะนำการกำหนดค่าสำหรับการใช้ Magento 2 และทำงานบน OS X โดยใช้แพ็คเกจการชงหรือวิธีการอื่น ๆ สำหรับการใช้งาน PHP ในสภาพแวดล้อม FastCGI บน OS X ผมไม่ได้มองหานักเทียบท่าหรือคนจรจัด - ฉันต้องการใช้ PHP natively บน OS X mod_phpและต้องการอยากจะใช้


ไม่แน่ใจว่ามันมีประโยชน์หรือไม่ แต่ฉันไม่เคยเป็นแฟนของผู้ผลิตดังนั้นฉันจึงติดตั้ง PHP เพื่อใช้จากphp-osx.liip.ch เสมอ
Marcel Hauri

@mauri หากคุณมีคำแนะนำในการรับ php-fpm จากแพ็คเกจ liip ที่ใช้คำตอบแบบเต็มจะดีมาก
Alan Storm

คำตอบ:


12

Apache + PHP-FPM พร้อม Homebrew

ขั้นตอนที่ 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.- ตรวจสอบว่าติดตั้งอย่างถูกต้องคุณควรเห็นข้อความคล้ายกับ:

หากต้องการให้ launchd เริ่มต้น 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>

โดยทั่วไปฉันจะตั้งค่านี้ต่อ vhost เพื่อชี้ไปยังไดเรกทอรีที่เหมาะสม

4.- ในที่สุดเรามาสร้างหน้า phpinfo () ภายใน/ usr / local / var / www / htdocs /และยืนยันว่าทุกอย่างทำงานได้โดยการโหลดหน้าทดสอบ: เรามี 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สิ่งนั้นตรงกับประสบการณ์จริงของคุณหรือไม่?
Alan Storm

@AlanStorm ฉันทำตามขั้นตอนเดียวกัน แต่วิธีการ. htaccess กำลังสร้างปัญหาขณะโหลด index.php ของ Magento มันไม่อนุญาตให้เปิดหน้าเว็บได้ แต่ถ้าฉันลบ. htaccess จากโฟลเดอร์รูทแล้ว atleast 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กำหนดต้นน้ำใหม่

    upstream 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 PHPbrew services restart php70

  4. คัดลอกnginx.conf.sampleรูปแบบที่เก็บ M2 /usr/local/etc/nginx/magento2.confและบันทึกเป็น การกำหนดค่านี้จะใช้fastcgi_backendกำหนดไว้ในขั้นตอนก่อนหน้า

  5. ตั้งค่า vhosts และโดเมน
    เซิร์ฟเวอร์ {
      ฟัง 80;
      server_name magento2.dev;
      ตั้งค่า $ MAGE_ROOT / เส้นทาง / เป็น / m2 / โครงการ
      ตั้งนักพัฒนา $ MAGE_MODE
      รวม /usr/local/etc/nginx/magento2.conf;
    }
    
  6. รีสตาร์ท Nginx

ส่วนสำคัญแรกนั้นขอให้คุณแตะ homebrew / dupes ซึ่งคิดค่าเสื่อมราคาและจะ (ถ้าฉันจำได้) จะไม่ให้สูตรที่คุณต้องการอีกต่อไป คำเตือน: homebrew / dupes เลิกใช้แล้ว ตอนนี้แทปนี้ว่างเปล่าเนื่องจากสูตรทั้งหมดได้ถูกย้าย
Alan Storm

ดูเหมือนว่าdupesตอนนี้จะเป็นส่วนหนึ่งของแกนกลางดังนั้นคุณสามารถเพิกเฉยมันbrew tap homebrew/phpได้
igloczek

ขอขอบคุณ. นี่คือสิ่งที่ฉันต้องการ การติดตั้ง Magento ที่ตามมา แต่สำหรับ Ubuntu และบรรทัด 'Listen = /run/php-fpm/php-fpm.sock' ทำให้ฉันมีปัญหามากมาย สิ่งที่ฉันต้องการไม่ได้เพิ่มไว้เพียงแค่ใช้: Listen = 127.0.0.1:9000 และเปลี่ยนเป็น Listen = 127.0.0.1:9071 หากฉันต้องการใช้ PHP หลายเวอร์ชัน ทุกวัยที่อยู่ในระบบมองหาทางออก
iva

10

ขั้นตอนที่ 1: หยุดบริการ apache ที่มีอยู่และติดตั้ง 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

ขั้นตอนนี้ใช้เวลาสักครู่ในการสร้าง 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

ตอนนี้เราได้ติดตั้ง Apache ของ Homebrew และกำหนดค่าให้เริ่มต้นอัตโนมัติด้วยบัญชีพิเศษ

เซิร์ฟเวอร์สามารถเข้าถึงได้ที่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

เราสามารถเลือกเวอร์ชั่นที่เราจะใช้

สำหรับกำหนดค่าการตั้งค่า tweak ของ 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

จัดการการร้องขอ php ใน apache โดยการกำหนดค่าต่อไปนี้จะต้องมีการแก้ไข

<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 สำหรับ Magento ในไฟล์ php.ini

ส่วนขยาย PHP ที่จำเป็นสำหรับ 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

จากนั้นคุณสามารถดำเนินการติดตั้ง 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. ในขณะที่โพสต์นี้เวอร์ชั่นของ Laravel Valet ที่มีไดรเวอร์ Magento2 ยังไม่ได้รับการปล่อยตัวออกมา (มันถูกรวมเข้าด้วยกันแต่ยังไม่ได้เปิดตัวผ่านแท็ก) หากต้องการใช้คุณสามารถ:

    • ติดตั้ง Laravel Valet ผ่านทางสาขา dev-master:

      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

การเปิดเผยข้อมูลเต็มรูปแบบ:ฉันเป็นหนึ่งในผู้แต่งของ Magento2 ไดรเวอร์สำหรับ Laravel Valet


เป็นไปได้ว่าฉันค่อนข้างหนาแน่น แต่ขั้นตอนเหล่านี้ดูไม่สมบูรณ์ (เช่นvalet linkการตั้งค่า nginx m2 ... ) ฉันคิดอย่างนี้ไหม
benmarks

ที่จอดรถจอดดูแลการเชื่อมต่อ ตราบใดที่คุณ "จอด" ในไดเรกทอรีโครงการของคุณและแต่ละโครงการเป็นไดเรกทอรีย่อยที่มีการติดตั้ง M2 ไม่มีอะไรให้ทำอีกแล้ว ไดรเวอร์ Magento2 สำหรับพนักงานขับรถจะดูแลทุกอย่างเพื่อให้ Valet รู้วิธีการเซิร์ฟเวอร์ไซต์ M2 (ดังนั้นจึงไม่จำเป็นต้องมีการกำหนดค่า nginx เพิ่มเติม) ใช่มันง่ายจริงๆ Valet ถูกสร้างขึ้นเพื่อลบความเจ็บปวดจากการตั้งค่าไซต์ Laravel พวกเขาทำให้มันเป็นไปได้ที่จะใช้มันสำหรับโครงการที่ไม่ใช่ Laravel เช่นกันเพื่อให้ทุกคนชนะ
Joe Constant

1

คุณสามารถใช้Valet +แทนการกำหนดค่าด้วยตัวคุณเองโดย b / c เป็นโซลูชัน Mac OS ที่ทำด้วยโลหะอัตโนมัติโดยอ้างอิงจากแพ็คเกจ Homebrew ขั้นตอนการติดตั้งและสิ่งอื่น ๆ ที่อธิบายไว้ในGithub

โพสต์บล็อกเกี่ยวกับมัน - แนะนำ Valet +, Blazing PHP สภาพแวดล้อมการพัฒนาที่รวดเร็ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.