Chạy Magento 2 qua FastCGI (không phải mod_php) trên OS X thông qua các gói brew


23

Dựa trên các bài đăng và cuộc trò chuyện khác nhau trong cộng đồng, có vẻ như một số người đang chạy các phiên bản phát triển Magento 2 trên OS X thông qua môi trường PHP không sử dụng kết hợp Apache / PHP tích hợp và thay vào đó sử dụng các gói từ brewđể có được Môi trường PHP FastCGI lên và chạy với nginxvà / hoặc apache.

Có ai có danh sách các lệnh và hướng dẫn cấu hình để khởi động Magento 2 trên OS X bằng các gói brew HOẶC một số phương tiện khác để chạy PHP trong môi trường FastCGI trên OS X không? Tôi không tìm kiếm Docker hoặc Vagrant - Tôi muốn chạy PHP tự nhiên trên OS X và không muốn sử dụng mod_php.


Không chắc nó có hữu ích không, nhưng tôi chưa bao giờ là một người hâm mộ của bia nên tôi luôn cài đặt PHP để sử dụng nguyên bản từ php-osx.liip.ch
Marcel Hauri

@mhauri Nếu bạn có hướng dẫn để nhận php-fpm từ các gói liip chạy một câu trả lời đầy đủ sẽ rất tuyệt.
Alan Storm

Câu trả lời:


12

Apache + PHP-FPM với Homebrew

Bước 0: Trước khi chúng tôi bắt đầu

brew update
brew tap homebrew/services

Bước 1: Apache

1.- Hãy chắc chắn dừng dịch vụ apache tích hợp

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

2.- Cài đặt apache2.4

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

Bước này sẽ mất một lúc vì nó phải biên dịch Apache.

3.- Xác minh nó đã được cài đặt chính xác, bạn sẽ thấy một thông báo tương tự như:

Để có launchd bắt đầu homebrew / apache / httpd24 ngay bây giờ và khởi động lại khi khởi động: dịch vụ sudo brew bắt đầu homebrew / apache / httpd24

Hãy chạy lệnh:

sudo brew services start homebrew/apache/httpd24

Xác minh mọi thứ đang chạy bằng cách tải, http: // localhost sau đó chúng ta sẽ thấy Nó hoạt động! thông điệp Nó hoạt động

Bước 2: PHP-FPM

1.- Hãy tiếp tục bằng cách cài đặt PHP

brew install -v homebrew/php/php70

2.- Khởi động PHP-FPM, cái hay của homebrew / php là nó cài đặt PHP và FPM, vì vậy chúng ta chỉ cần chạy như sau:

brew services start homebrew/php/php70

Bây giờ, hãy sử dụng cấu hình mặc định, nếu chúng ta cần thay đổi cấu hình, cấu hình được đặt tại /usr/local/etc/php/7.0/

Bước 3: Cấu hình

1.- Mở cấu hình Apache:

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

2.- Bỏ ghi chú các dòng sau:

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

3.- Thiết lập cấu hình proxy cho PHP-FPM:

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

Thông thường tôi sẽ thiết lập cái này cho mỗi vhost để trỏ nó vào thư mục bên phải

4.- Cuối cùng, hãy tạo một trang phpinfo () bên trong / usr / local / var / www / htdocs / và xác nhận mọi thứ đang hoạt động bằng cách tải trang thử nghiệm: Chúng tôi có php

Có một vài điều chỉnh và biến, nhưng điều này sẽ giúp bạn bắt đầu và chạy trực tiếp trên OSX.

Để biết hướng dẫn chi tiết hơn về cấu hình, chúng tôi sử dụng kiểm tra cấu hình (vhost, php pool, v.v.) trên hộp mơ hồ này:

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


Tôi đã phải brew install homebrew/apache/httpd24 --with-privileged-portsthay một brew install httpd24 --with-privileged-ports. Điều đó phù hợp với kinh nghiệm thế giới thực của bạn?
Alan Storm

@AlanStorm Tôi đã làm theo quy trình tương tự nhưng một số cách .htaccess đang tạo ra một vấn đề trong khi tải index.php của Magento. Tuy nhiên, nó không cho phép mở trang nếu tôi xóa .htaccess khỏi thư mục gốc thì ít nhất Magento sẽ mở lại vì lý do đó. Bạn có thể vui lòng hướng dẫn cho tôi về điều này?
Rizwan Dhuka

10
  1. Thực hiện theo một trong nhiều hướng dẫn thiết lập Mac + Nginx + PHP-FPM + Mysql như thế này (hãy chắc chắn sử dụng brew services):
  2. brew install php70-intl php70-mcrypt
  3. /usr/local/etc/nginx/nginx.confbên trong httpxác định ngược dòng mới

    ngược dòng fastcgi_backend {
      máy chủ 127.0.0.1:9070;
    }
    

    9000là cổng mặc định, nhưng tôi khuyên bạn nên thêm số phiên bản PHP làm hai chữ số cuối cùng, để có thể sử dụng một vài phiên bản PHP cùng một lúc, ví dụ như cho M1. Bạn có thể sửa đổi cổng FPM trong tệp /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070và sau đó khởi động lại PHP bằng cách sử dụng brew services restart php70.

  4. Sao chép nginx.conf.samplekho lưu trữ mẫu M2 và lưu dưới dạng /usr/local/etc/nginx/magento2.conf. Cấu hình này sẽ sử dụng fastcgi_backendđược xác định trong bước trước.

  5. Thiết lập vhost và tên miền
    máy chủ {
      nghe 80;
      server_name magento2.dev;
      đặt $ MAGE_ROOT / đường dẫn / đến / m2 / dự án;
      đặt nhà phát triển $ MAGE_MODE;
      bao gồm /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Khởi động lại Nginx

rằng ý chính đầu tiên yêu cầu bạn nhấn vào homebrew / dupes, phần này không được dùng nữa và sẽ (nếu tôi nhớ lại) không còn cung cấp cho bạn các công thức bạn cần. Cảnh báo: homebrew / dupes không được dùng nữa. Vòi này hiện đang trống vì tất cả các công thức của nó đã được di chuyển
Alan Storm

Có vẻ như dupesbây giờ là một phần của cốt lõi, vì vậy bạn chỉ có thể bỏ qua nó và gắn bó với brew tap homebrew/phpmà thôi.
igloczek

Cảm ơn bạn. Đây chính xác là những gì tôi cần. Đã làm theo thiết lập Magento nhưng đối với Ubuntu và dòng 'lắng nghe = /run/php-fpm/php-fpm.sock' đã khiến tôi gặp nhiều vấn đề. Tất cả những gì tôi cần là không thêm nó chỉ để sử dụng: nghe = 127.0.0.1:9000 và thay đổi nó thành nghe = 127.0.0.1:9071 nếu tôi muốn sử dụng phiên bản nhiều PHP. Đã dành tuổi tìm kiếm một giải pháp.
iva

10

Bước 1: Dừng dịch vụ apache hiện có và cài đặt 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

Bước này mất một chút thời gian vì nó xây dựng Apache từ nguồn. Sau khi hoàn thành, bạn sẽ thấy một thông báo như:

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

Bước 2: Điều này rất quan trọng vì bạn sẽ cần con đường đó trong bước tiếp theo.

$ 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

Bây giờ chúng tôi đã cài đặt Apache của Homebrew và định cấu hình nó để tự động bắt đầu với một tài khoản đặc quyền.

Máy chủ có thể đạt được http: // localhost

Bước 3: Cấu hình Apache

Đường dẫn tệp cấu hình

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

Nếu bạn muốn thay đổi cấu hình, bạn nên đặt nó ở đây

Lưu ý: bây giờ chúng ta nên kích hoạt mod_rewrite được nhận xét theo mặc định.

LoadModule Rewrite_module libexec / mod_rewrite.so

Đối với cài đặt Magento, mod_rewrite phải được bật trong tệp cấu hình này.

# 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

Bước 4: Cài đặt PHP

chúng ta có thể nhận được một danh sách đầy đủ các tùy chọn có sẵn để bao gồm bằng cách gõ

$ brew install php71 --with-httpd24

Chúng tôi có thể chọn phiên bản nào chúng tôi sẽ sử dụng.

Để định cấu hình cài đặt cấu hình tinh chỉnh của PHP cho các nhu cầu của chúng tôi, ví dụ: memory_limit, date.timezone, display_errors ... etc / apache2 / 2

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

Bước 5: Thiết lập PHP Apache

Bây giờ chúng tôi đã cài đặt thành công các phiên bản PHP của bạn, nhưng chúng tôi cần nói với Apache để sử dụng chúng. chúng ta cần chỉnh sửa tập tin cấu hình apache

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

bằng cách sửa đổi đường dẫn php.

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

Xử lý các yêu cầu php trong apache bằng cấu hình sau cần được sửa đổi

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

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

Lưu tập tin cấu hình và khởi động lại apache.

$ sudo apachectl -k restart

Bước 6: Xác thực PHP

tạo một tập tin php.php trong thư mục gốc của tài liệu

Nội dung của info.php là

<?php phpinfo(); ?>

Bước 6: Kiểm tra phần mở rộng phụ thuộc của PHP cho Magento trong tệp php.ini.

Các phần mở rộng PHP cần thiết cho 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

Sau đó, bạn có thể tiến hành cài đặt Magento.


5
  1. Cài đặt PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Sau đó, bạn có thể sử dụng Laravel Valet để tự động cài đặt Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Tạo một thư mục dự án nếu bạn chưa có (có thể đặt tên bất cứ thứ gì bạn muốn)

    mkdir ~/projects
  4. Nói với Laravel Valet rằng bạn lưu trữ các dự án của bạn ở đó

    cd ~/projects
    valet park
  5. Tại thời điểm của bài đăng này, phiên bản của Laravel Valet chứa trình điều khiển Magento2 chưa được phát hành (nó đã được hợp nhất , nhưng chưa được phát hành qua thẻ). Để sử dụng nó, bạn có thể:

    • Cài đặt Laravel Valet thông qua nhánh dev-master:

      composer global require laravel/valet:dev-master`
    • hoặc tải xuống trình điều khiển và sử dụng trình điều khiển Valet cục bộ:

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

Bây giờ bạn có thể duyệt để http://[projectname].dev/xem dự án cục bộ của mình (trong đó [tên dự án] tương ứng với một thư mục trong ~ / dự án. Ví dụ:

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

TIẾT LỘ ĐẦY ĐỦ: Tôi là một trong những tác giả của trình điều khiển Magento2 cho Laravel Valet


Có thể tôi khá dày đặc, nhưng các bước này có vẻ chưa hoàn chỉnh (ví dụ: valet linkthiết lập nginx m2 ...). Tôi có lật đổ điều này không?
đánh dấu

Các công viên valet chăm sóc các liên kết. Miễn là bạn "đỗ" trong thư mục dự án của bạn và mỗi dự án là một thư mục con chứa cài đặt M2, không còn gì để làm. Trình điều khiển Magento2 cho người phục vụ sẽ lo tất cả mọi thứ để Valet biết cách phục vụ trang M2 (vì vậy không cần cấu hình nginx bổ sung). Vâng, nó thực sự đơn giản. Valet được xây dựng để loại bỏ nỗi đau khi thiết lập các trang web của Laravel. Họ cũng đã có thể sử dụng nó cho các dự án không phải của Laravel để mọi người đều chiến thắng
Joe Constant

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.