Saat ini kami berkomitmen composer.lock
untuk repositori dan kemudian berjalan composer install --no-dev
di server produksi. Saya tidak berpikir ini adalah cara terbaik untuk melakukannya karena butuh beberapa menit bagi komposer untuk menghasilkan semua file dan itu berisiko.
Saya bertanya-tanya apakah lebih baik komit ke repo semua file yang diperlukan untuk berjalan dalam mode produksi.
Bagaimana orang lain mengelola proses penyebaran dengan Magento 2?
magento2
composer
deployment
Claudiu Creanga
sumber
sumber
composer install
produksi? letscodejavascript.com/v3/blog/2014/03/the_npm_debaclecomposer install
. Sudahkah Anda melihat git hook untuk mengotomatisasi proses?Jawaban:
Setuju 100% dengan claudiu-creanga untuk tidak melakukan vendor dan juga menghindari pemasangan komposer yang sedang berjalan dalam produksi.
Cara kami menangani ini adalah memiliki folder langsung dan folder kandidat rilis. Di folder kandidat rilis kita menjalankan perintah git pull dan menginstal komposer --no-dev. Proses kami dapat diringkas seperti ini:
Dalam folder kandidat rilis:
Sinkronkan file ke folder situs langsung
Saya telah menulis artikel blog yang lebih panjang memberikan perintah dan alasan yang sebenarnya di balik ini: https://www.c3media.co.uk/blog/c3-news/deploying-magento-2-production-environment/
PEMBARUAN: Kami sekarang menyalin basis data langsung ke basis data pementasan dan menggunakan ini untuk menjalankan skrip pengaturan, menyebarkan file-file statis dan mengkompilasi DI semua offline. Ini kemudian dapat digunakan untuk hidup termasuk file pub / statis dan var. Kami masih menghapus situs tersebut sebentar jika skrip pengaturan sedang dijalankan, tetapi jika tidak, situs tersebut akan ditinggalkan. Lebih detail di https://www.c3media.co.uk/blog/c3-news/magento-2-deployment-without-downtime/
UPDATE: Saya telah berubah pikiran tentang melakukan folder vendor - dengan melakukan folder Anda mendapatkan kemampuan untuk melacak sejarah bagaimana file-file ini berubah, lihat apakah Anda secara tidak sengaja mengubah apa pun, dan yang paling penting Anda menghindari keharusan menjalankan komposer pada waktu penempatan. Yang terakhir ini sangat penting sekarang karena kita mengandalkan pemasok eksternal dari repositori. Bagaimana jika salah satunya tidak tersedia? Tiba-tiba Anda tidak dapat menggunakan. Kelemahannya adalah repositori yang lebih besar, risiko melakukan peretasan inti, dan para pengembang seperti saya :)
sumber
Sejauh ini kami juga mengkomit folder vendor, yang tentu saja menambahkan banyak file ke repo Anda. (Pastikan untuk menghapus folder .git dalam file komposer vendor, karena jika tidak, konten folder tidak akan dikomitmenkan - firegento misalnya). Tapi symlinking folder vendor tidak berfungsi, mengedit path di file vendor_path.php juga tidak berfungsi dan kami belum punya waktu untuk mencari solusi yang lebih baik sejauh ini.
Kami tidak memiliki server build dan kami tidak menjalankan komposer di server, kami menjalankan dan menguji semua pembaruan secara lokal dan mengkomitnya. Ini pada gilirannya memicu skrip penerapan kami.
Skrip penerapan kami menggantikan file env.php, melakukan beberapa hal khusus dan kemudian juga memicu
setup:upgrade
dansetup:static-content:deploy
sebelum beralih tautan langsung ke folder baru.Satu-satunya folder yang kami symlink adalah pub / media.
sumber
Akhirnya kami memilih keluar untuk layanan seperti
deploybot
( http://deploybot.com/ ). Anda dapat menggunakancapistrano
yang gratis. Deploybot membuat wadah buruh pelabuhan saat pemasangan komposer berjalan dan jika perintah berhasil maka ia menyebarkan kode, jika tidak maka tidak akan menyebarkan apa pun sehingga lingkungan produksi Anda akan aman.Saya menganggap ini pendekatan terbaik karena:
1) memiliki folder vendor di git repo Anda tidak direkomendasikan oleh komposer karena alasan yang baik:
Info lebih lanjut: https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md
2) Berjalan
composer install in production
tanpa jaring pengaman berisiko , paket bisa turun (lihat npm), Anda bisa mengalami masalah memori atau kesalahan apa pun yang terjadi saat komposer membuat file dan Anda harus berurusan dengan lingkungan produksi yang rusak.sumber
Saya juga melihat ke dalam ini, pendekatan yang saya ambil sejauh ini adalah:
Bootstrap server:
composer --create-project ... --no-dev
ke dalamsrc
folder (meskipun saya masih melihat banyak dev dev datang melalui)Yang akan memberi saya stok, menjalankan toko dari direktori src saya (tetapi webroot saya tidak menunjuk ke sana)
Maka proses penerapan saya:
Hal ini memungkinkan saya untuk mempertahankan kode inti Magento terpisah dari saya sendiri, menggunakan komposer untuk tetap memperbarui .. dan saya tidak perlu mengirimkan 39.102 !!! file dengan setiap penyebaran, atau jalankan perintah komposer pada waktu penyebaran ..
... Tertarik untuk mendengar pendekatan lain atau untuk praktik terbaik tentang ini, dan id juga senang mengetahui file apa yang sebenarnya diperlukan untuk produksi dan yang dev .. sehingga saya dapat menjaga webroot saya tetap bersih.
Setelah saya selesai, saya akan memiliki buku pedoman yang memungkinkan dan beberapa perintah Fabric untuk mengatur konfigurasi dan penyebaran, yang saya senang untuk berbagi.
Semoga itu bisa membantu
sumber