Magento2 - triển khai địa phương / dàn dựng / sản xuất & gitignore


11

Đây có thể là một loại thảo luận nhiều hơn một câu hỏi.

Tôi muốn biết chính sách triển khai nào bạn tuân theo với Magento2 & local > staging > môi trường sản xuất

Sau một số lần thử, chúng tôi đã quyết định cách tiếp cận tốt nhất (hoặc ít nhất, vững chắc nhất) sẽ là tệp gitignore này bao gồm thư mục nhà cung cấp trong git.

.DS_Store
/.buildpath
/.cache
/.metadata
/.project
/.settings
atlassian*
/nbproject
/sitemap
/sitemap.xml
/.idea
/.gitattributes
/app/config_sandbox
/app/etc/config.php
/app/etc/env.php
/app/code/Magento/TestModule*
/lib/internal/flex/uploader/.actionScriptProperties
/lib/internal/flex/uploader/.flexProperties
/lib/internal/flex/uploader/.project
/lib/internal/flex/uploader/.settings
/lib/internal/flex/varien/.actionScriptProperties
/lib/internal/flex/varien/.flexLibProperties
/lib/internal/flex/varien/.project
/lib/internal/flex/varien/.settings
/node_modules
/.grunt
/pestle.phar
/pub/media/*.*
!/pub/media/.htaccess
/pub/media/catalog/*
!/pub/media/catalog/.htaccess
/pub/media/customer/*
!/pub/media/customer/.htaccess
/pub/media/downloadable/*
!/pub/media/downloadable/.htaccess
/pub/media/import/*
!/pub/media/import/.htaccess
/pub/media/theme/*
/pub/media/theme_customization/*
!/pub/media/theme_customization/.htaccess
/pub/media/wysiwyg/*
!/pub/media/wysiwyg/.htaccess
/pub/media/tmp/*
!/pub/media/tmp/.htaccess
/pub/media/captcha/*
/pub/static/***
!/pub/static/.htaccess

/var/*
!/var/.htaccess

.unison*
/sync.sh

Vì vậy, chúng tôi chỉ chạy trình soạn thảo trong môi trường cục bộ: Vì mọi phần mở rộng mới hoặc nâng cấp phần mềm đều được kiểm tra tại địa phương, sau đó được xác thực và cam kết. Có lẽ chúng tôi cũng bao gồm tệp app / etc / config.php trong git nhưng tệp đó được ghi lại khi chạy setup:upgrade, phải không?

Bao gồm nhà cung cấp có nghĩa là kích thước kho lưu trữ sẽ lớn hơn (có thể) được đề xuất nhưng theo cách này khi triển khai mã, chúng tôi chỉ chạy chuỗi:

bin/magento setup:upgrade
bin/magento setup:di:compile (optional)
bin/magento setup:static-content:deploy

Thông tin liên quan: http://www.damianculotta.com.ar/magento/gitignore-y-la-estrargetia-de-depacts-en-magento2

Xem lý do tại sao chúng tôi chọn lệnh biên dịch làm Magento 2 tùy chọn - setup: di: compile ?

CẬP NHẬT

Sự thật là chúng tôi đang gặp một số vấn đề khi triển khai thay đổi mã trong các dự án Magento 2 đã xuất bản của chúng tôi

Các thay đổi hoạt động ở chế độ cục bộ & dàn dựng (được kiểm tra ở cả hai chế độ: nhà phát triển & sản xuất ... mặc dù chúng tôi định cấu hình khái niệm môi trường đó ở chế độ nhà phát triển), nhưng một số trong số chúng không hoạt động trong môi trường sản xuất (trong chế độ sản xuất), v.v ... Vì vậy, tôi không chắc chắn chúng ta đang theo chiến lược đúng đắn. Tôi muốn xem chuỗi lệnh được chiếm dụng là gì và mức độ liên quan của thứ tự trong các lệnh đó

Trên thực tế, mỗi ngày tôi ít tin vào tiện ích của chế độ sản xuất Magento 2, trừ khi bạn sẽ không thay đổi bất cứ điều gì trong dự án. Bạn có thể thay đổi suy nghĩ của tôi?


Tôi đi theo cùng một lộ trình: mọi thứ trong repo git của tôi. Máy sản xuất không có nhà soạn nhạc nên không có cách nào khác cho tôi. Tôi có thể hỏi làm thế nào bạn đối phó với kho .git trong thư mục nhà cung cấp? Khi tôi cam kết với repo của mình, những thứ đó được coi là mô đun con và do đó không kết thúc bên trong repo của tôi.
omsta

Câu trả lời:


18

Trên thực tế, mỗi ngày tôi ít tin vào tiện ích của chế độ sản xuất Magento 2, trừ khi bạn sẽ không thay đổi bất cứ điều gì trong dự án. Bạn có thể thay đổi suy nghĩ của tôi?

Tôi không chắc liệu tôi có hiểu đúng về bạn hay không, nhưng đó chính xác là chế độ sản xuất dành cho: hệ thống sản xuất nơi bạn không thay đổi bất cứ điều gì (mã khôn ngoan). Cho đến khi triển khai tiếp theo, đó là.

Tôi thấy việc triển khai dựa trên Git mà bạn đang sử dụng ít phù hợp với Magento 2 hơn so với Magento 1, vì tất cả các quá trình tiền xử lý. Việc xây dựng và triển khai phức tạp hơn và IMHO không có cách nào xung quanh quy trình xây dựng tự động

Những gì tôi muốn giới thiệu:

  • Có các triển khai lặp lại , tức là bạn nên chắc chắn rằng cùng mộtchính xác kết thúc trong quá trình sản xuất, bao gồm các tệp được tạo .
  • Để đạt được điều đó, hãy tách riêng bản dựng khỏi triển khai và thực hiện các bước sau trong quy trình xây dựng:

    • composer install(thêm vendorvào kho lưu trữ thay vào đó là có thể, nhưng nếu bạn đã làm điều đó chỉ để tránh chạy trình soạn thảo trên máy chủ trong khi triển khai, thay vào đó hãy thực hiện trong bước xây dựng và chỉ giữ lại composer.locktrong repo)
    • Tạo mã (YMMV):

      bin/magento setup:di:compile
      bin/magento setup:static-content:deploy
    • tạo một kho lưu trữ (các build vật ) từ thư mục Magento đầy đủ, trừ mediavar, nhưng bao gồm vendor, pub, var/generatedvar/di. Bắt đầu với , var/generatedvar/diđược chuyển đến generated/codegenerated/metadata , điều này giúp dễ dàng tách chúng ra khỏi phần còn lại varnên được bỏ qua để triển khai.

  • Trong quá trình triển khai, sao chép tạo phẩm xây dựng vào máy chủ đích, giải nén nó vào một thư mục mới và:

    • liên kết các thư mục liên tục vào nó ( media,var/session , var/log, ...)
    • cho phép chế độ bảo trì
    • chuyển đổi tài liệu gốc (thường là docroot là một liên kết tượng trưng cho bản phát hành cuối cùng, thay đổi nó thành bản phát hành mới)
    • xóa bộ nhớ cache
    • chạy setup:upgrade
    • tắt chế độ bảo trì
  • Quá trình triển khai này có thể được thực hiện dễ dàng với Deployer , giống như Capistrano nhưng trong PHP. Có thể tìm thấy giải pháp triển khai đầy đủ cho Magento 2 dựa trên nhà triển khai tại đây: https://github.com/mwr/magedeploy2 (cảm ơn netz98!) Và đây là một giải pháp khác mà chúng tôi sử dụng: https://github.com/staempfli / magento2-triển khai-công cụ

  • Giữ app/etc/config.phptrong kho lưu trữ là tốt để theo dõi các mô-đun được kích hoạt và vô hiệu hóa.

Đây không phải là hướng dẫn từng bước nhưng nó sẽ cung cấp cho bạn một cái nhìn tổng quan về một sự thay thế mạnh mẽ hơn cho quy trình hiện tại của bạn. Hãy xem các công cụ được liên kết để xem một giải pháp đầy đủ có thể trông như thế nào.


Cảm ơn Fabian rất nhiều ... Tôi đã tìm kiếm thứ gì đó như thế này, vì chúng tôi đã sử dụng Capistrano trong Magento 1 và tôi hy vọng sẽ tìm thấy một công cụ tương tự cho Magento 2 ... Tôi sẽ thử trong tuần và cung cấp cho bạn thêm thông tin phản hồi
Raul Sanchez

@ fabian-schmengler giải thích khá nhiều những gì chúng ta làm. Chúng tôi tạo ra mọi thứ trong môi trường dàn dựng và chúng tôi kiểm tra nó ở chế độ sản xuất, sau đó chúng tôi chuyển mã được tạo từ môi trường dàn sang môi trường sản xuất để đảm bảo rằng mã kết thúc trong môi trường sản xuất giống hệt như chúng tôi có trong dàn.
diazwatson

Cảm ơn đã giải thích. Sẽ rất tuyệt nếu có nội dung của tệp gitignore trong câu trả lời của bạn.
Mehdi

@Mehdi các .gitignoretập tin không liên quan đến vấn đề thực tế. Bạn chỉ có thể sử dụng một mặc định.
Fabian Schmengler

4

Theo suy nghĩ của tôi, hãy chờ Magento 2.2 hoặc thử thực hiện một cách tiếp cận tương tự.

Magento 2.2 giới thiệu triển khai đường ống bằng cách tách máy chủ xây dựng với máy chủ sản xuất.

Đây là tài liệu chính thức: http://devdocs.magento.com/guides/v2.2/config-guide/deployment/pipeline/

Hơn nữa, hiện tại tôi đang sử dụng Ansible để quản lý để triển khai tự động với các mẫu cấu hình và thiết lập nhiều môi trường.

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.