Menjalankan Magento 2 melalui FastCGI (bukan mod_php) pada OS X melalui Paket buatan

23

Berdasarkan berbagai posting di forum dan percakapan di komunitas, sepertinya beberapa orang menjalankan instance pengembangan Magento 2 pada OS X melalui lingkungan PHP yang tidak menggunakan combo built-in Apache / PHP dan alih-alih menggunakan paket dari brewuntuk mendapatkan Lingkungan PHP FastCGI aktif dan berjalan dengan nginxdan / atau apache.

Apakah ada yang punya daftar perintah dan instruksi konfigurasi untuk mengaktifkan Magento 2 dan berjalan di OS X menggunakan paket buatan ATAU beberapa cara lain untuk menjalankan PHP di lingkungan FastCGI di OS X? Saya tidak mencari Docker atau Vagrant - Saya ingin menjalankan PHP secara native di OS X dan tidak ingin menggunakan mod_php.

Alan Storm
sumber
Tidak yakin apakah ini membantu, tapi saya tidak pernah menjadi Penggemar minuman jadi saya selalu menginstal PHP untuk menggunakan aslinya dari php-osx.liip.ch
Marcel Hauri
@mhauri Jika Anda memiliki instruksi untuk mendapatkan php-fpm dari paket liip yang menjalankan jawaban lengkap akan sangat bagus.
Alan Storm

Jawaban:

12

Apache + PHP-FPM dengan Homebrew

Langkah 0: Sebelum kita mulai

brew update
brew tap homebrew/services

Langkah 1: Apache

1.- Mari pastikan untuk menghentikan layanan apache bawaan

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

2.- Instal apache2.4

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

Langkah ini akan memakan waktu cukup lama karena harus mengkompilasi Apache.

3.- Pastikan sudah diinstal dengan benar, Anda akan melihat pesan yang mirip dengan:

Untuk memiliki launchd mulai homebrew / apache / httpd24 sekarang dan restart saat startup: sudo brew services memulai homebrew / apache / httpd24

Mari kita jalankan perintah:

sudo brew services start homebrew/apache/httpd24

Verifikasi semuanya berjalan dengan memuat, http: // localhost dan setelah itu kita akan melihat It Works! pesan Berhasil

Langkah 2: PHP-FPM

1.- Mari kita lanjutkan dengan menginstal PHP

brew install -v homebrew/php/php70

2.- Mulai PHP-FPM, keindahan tentang homebrew / php adalah menginstal PHP dan FPM, jadi kita hanya perlu menjalankan yang berikut:

brew services start homebrew/php/php70

Untuk sekarang mari kita gunakan konfigurasi default, jika kita perlu mengubahnya konfigurasi terletak di /usr/local/etc/php/7.0/

Langkah 3: Konfigurasi

1.- Buka konfigurasi Apache:

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

2.- Batalkan komentar pada baris berikut:

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

3.- Atur konfigurasi proxy untuk PHP-FPM:

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

Biasanya saya akan mengatur ini per vhost untuk mengarahkannya ke direktori yang benar

4.- Terakhir mari kita buat halaman phpinfo () di dalam / usr / local / var / www / htdocs / dan mengkonfirmasi semuanya berfungsi dengan memuat halaman pengujian: Kami punya php

Ada beberapa tweak dan belokan, tetapi ini akan membuat Anda bangun dan berjalan langsung di OSX.

Untuk langkah-langkah konfigurasi yang lebih rinci kami menggunakan memeriksa konfigurasi (vhost, php pools, dll) pada kotak gelandangan ini:

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

Allan MacGregor
sumber
Saya harus a brew install homebrew/apache/httpd24 --with-privileged-portsbukannya brew install httpd24 --with-privileged-ports. Apakah itu cocok dengan pengalaman dunia nyata Anda?
Alan Storm
@AlanStorm Saya mengikuti prosedur yang sama tetapi beberapa bagaimana .htaccess membuat masalah saat memuat indeks.php Magento. Itu tidak membiarkan halaman terbuka namun jika saya menghapus .htaccess dari folder root kemudian atleast Magento terbuka yang lagi-lagi terdistorsi karena alasan. Bisakah Anda membimbing saya dalam hal ini?
Rizwan Dhuka
10
  1. Ikuti salah satu dari banyak tutorial pengaturan Mac + Nginx + PHP-FPM + Mysql seperti ini (pastikan untuk menggunakan brew services):
  2. brew install php70-intl php70-mcrypt
  3. Di /usr/local/etc/nginx/nginx.confdalam, httptentukan hulu baru

    upcgi_backend hulu {
      server 127.0.0.1:9070;
    }
    

    9000adalah port default, tetapi saya akan merekomendasikan untuk menambahkan nomor versi PHP sebagai dua digit terakhir, untuk dapat menggunakan beberapa versi PHP pada saat yang sama yaitu untuk M1. Anda dapat memodifikasi port FPM dalam file /usr/local/etc/php/7.0/php-fpm.d/www.conf- listen = 127.0.0.1:9070dan kemudian restart PHP menggunakan brew services restart php70.

  4. Salin nginx.conf.samplerepositori formulir M2 dan simpan sebagai /usr/local/etc/nginx/magento2.conf. Konfigurasi ini akan digunakan yang fastcgi_backendditentukan pada langkah sebelumnya.

  5. Siapkan vhosts dan domain
    server {
      dengarkan 80;
      server_name magento2.dev;
      set $ MAGE_ROOT / path / ke / m2 / project;
      setel pengembang $ MAGE_MODE;
      termasuk /usr/local/etc/nginx/magento2.conf;
    }
    
  6. Mulai ulang Nginx
igloczek
sumber
inti pertama meminta Anda untuk mengetuk homebrew / dupes, yang didepresiasi dan akan (jika saya ingat) tidak lagi memberi Anda formula yang Anda butuhkan. Peringatan: homebrew / dupes sudah tidak digunakan lagi. Ketuk ini sekarang kosong karena semua rumusnya dimigrasikan
Alan Storm
Sepertinya dupessekarang menjadi bagian dari inti, jadi Anda bisa mengabaikannya dan bertahan brew tap homebrew/phpsaja.
igloczek
Terima kasih. Inilah yang saya butuhkan. Mengikuti pengaturan Magento tetapi untuk Ubuntu dan jalur 'listen = /run/php-fpm/php-fpm.sock' menyebabkan saya sangat banyak masalah. Yang saya butuhkan adalah tidak menambahkan itu hanya untuk digunakan: mendengarkan = 127.0.0.1:9000 dan mengubahnya untuk mendengarkan = 127.0.0.1:9071 jika saya ingin menggunakan versi multi PHP. Menghabiskan usia mencari solusi.
iva
10

Langkah 1: Hentikan layanan apache yang ada dan instal Apache melalui 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

Langkah ini memakan waktu cukup lama karena membangun Apache dari sumber. Setelah selesai Anda akan melihat pesan seperti:

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

Langkah 2: Ini penting karena Anda akan memerlukan jalur itu di langkah berikutnya.

$ 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

Sekarang kita telah menginstal Apache Homebrew, dan mengkonfigurasinya untuk memulai otomatis dengan akun istimewa.

Server dapat dihubungi http: // localhost

Langkah 3: Konfigurasi Apache

Path file konfigurasi

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

jika Anda ingin mengubah konfigurasi, Anda harus membuatnya di sini

Catatan: kita sekarang harus mengaktifkan mod_rewrite yang dikomentari secara default.

LoadModule rewrite_module libexec / mod_rewrite.so

Untuk instalasi Magento, mod_rewrite harus diaktifkan pada file konfigurasi ini.

# 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

Langkah 4: Instalasi PHP

kita bisa mendapatkan daftar lengkap opsi yang tersedia untuk dimasukkan dengan mengetik

$ brew install php71 --with-httpd24

Kita dapat memilih versi mana yang akan kita gunakan.

Untuk mengkonfigurasi pengaturan konfigurasi tweak PHP untuk kebutuhan kita misalnya, memory_limit, date.timezone, display_errors ... etc / apache2 / 2

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

Langkah 5: Pengaturan Apache PHP

Sekarang kami telah berhasil menginstal versi PHP Anda, tetapi kami harus memberi tahu Apache untuk menggunakannya. kita perlu mengedit file konfigurasi apache

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

dengan memodifikasi jalur php.

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

Menangani permintaan php di apache dengan konfigurasi berikut perlu diubah

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

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

Simpan file konfigurasi dan mulai ulang apache.

$ sudo apachectl -k restart

Langkah 6: Memvalidasi PHP

buat file php info.php di direktori root dokumen

Konten info.php adalah

<?php phpinfo(); ?>

Langkah 6: Periksa ekstensi dependensi PHP untuk Magento di file php.ini.

Ekstensi PHP yang diperlukan untuk 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

Kemudian Anda dapat melanjutkan dengan instalasi Magento.

Suresh S
sumber
5
  1. Instal PHP 7:

    brew install php70-intl php70-mcrypt php70-xdebug
  2. Anda kemudian dapat menggunakan Laravel Valet untuk mengotomatiskan pemasangan Nginx + PHP-FPM: https://laravel.com/docs/5.4/valet

    composer global require laravel/valet
    valet install
  3. Buat direktori proyek jika Anda belum memilikinya (dapat dinamai apa pun yang Anda inginkan)

    mkdir ~/projects
  4. Beri tahu Laravel Valet bahwa Anda menyimpan proyek Anda di sana

    cd ~/projects
    valet park
  5. Pada saat posting ini, versi Laravel Valet yang berisi driver Magento2 belum dirilis (telah digabung , tetapi belum dirilis melalui tag). Untuk menggunakannya Anda dapat:

    • Instal Laravel Valet melalui cabang dev-master:

      composer global require laravel/valet:dev-master`
    • atau unduh driver dan gunakan sebagai driver Valet lokal:

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

Anda sekarang dapat menjelajah untuk http://[projectname].dev/melihat proyek lokal Anda (di mana [nama proyek] berhubungan dengan direktori di ~ / proyek. Mis .:

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

PENGUNGKAPAN LENGKAP: Saya adalah salah satu penulis driver Magento2 untuk Laravel Valet

Joe Constant
sumber
Mungkin saja saya cukup padat, tetapi langkah-langkah ini tampaknya tidak lengkap (mis. valet linkIng, setup nginx m2 ...). Apakah saya terlalu memikirkan ini?
patok
Taman valet menangani penghubung. Selama Anda "memarkir" di direktori proyek Anda dan setiap proyek adalah sub direktori yang berisi instalasi M2, tidak ada lagi yang bisa dilakukan. Driver Magento2 untuk valet menangani semuanya sehingga Valet tahu cara server situs M2 (jadi tidak perlu konfigurasi nginx tambahan). Ya, sesederhana itu. Valet dibangun untuk menghilangkan rasa sakit mengatur situs Laravel. Mereka memungkinkan untuk menggunakannya untuk proyek-proyek non-Laravel juga sehingga semua orang menang
Joe Constant