Ước tính nâng cấp Magento là một quá trình thu thập thông tin về các sửa đổi được áp dụng cho cài đặt mà bạn sắp cập nhật, kiểm tra xem các sửa đổi đó có thể gây ra sự cố không và sau đó đánh giá thời gian cần thiết để xử lý chúng.
Tất cả những thay đổi có thể được chia thành nghĩa đen off-core và trong lõi .
Sửa đổi ngoài lõi là những sửa đổi sẽ không được ghi đè bằng nâng cấp. Đó là các tiện ích mở rộng của bên thứ 3 , các tệp cốt lõi được đưa vào phạm vi cục bộ (ứng dụng / mã / cục bộ / Pháp sư) và một chủ đề tùy chỉnh .
Sửa đổi trong lõi được áp dụng trực tiếp trên các tệp lõi Magento (ứng dụng / mã / lõi), tệp bản địa hóa (app / locale / en_US), các mẫu lõi và một số thứ như javascripts , thư viện bên ngoài hiếm khi được tùy chỉnh. .
Sửa đổi ngoài lõi
Gia hạn bên thứ 3
Trong quá trình nâng cấp, tiện ích mở rộng của bên thứ 3 là nguồn chính của vấn đề. Điều đó có nghĩa là nhiều tiện ích mở rộng bạn có nhiều thời gian hơn bạn sẽ cần phân tích chúng.
Điều đầu tiên cần kiểm tra là nếu chức năng được cung cấp bởi tiện ích mở rộng chưa được triển khai trong phiên bản Magento mà bạn đang nâng cấp lên. Ví dụ: một số tiện ích mở rộng như Yoast_CanonicalUrl
, Mxperts_CustomerAddress
hoặc Fontis_Wysiwyg
được sử dụng rộng rãi trong Magento 1.3.xx trở lên nhưng giờ đây là một phần của chức năng Magento cốt lõi và không còn cần thiết nữa.
Sau đó, nên kiểm tra (hỏi khách hàng của bạn) nếu bạn thực sự cần tất cả các tiện ích mở rộng mà bạn có. Có thể có một số tiện ích mở rộng bạn đã cài đặt nhưng chưa bao giờ thực sự được sử dụng. Vì vậy, tại thời điểm này là tốt để thực hiện một loại dọn dẹp.
Sau đó, một điều quan trọng cần kiểm tra là khả năng tương thích của từng tiện ích mở rộng còn lại với phiên bản Magento bạn đang nâng cấp lên. Trong trường hợp một số tiện ích mở rộng không tương thích và không có tiện ích mở rộng tương tự nào, bạn sẽ có một lựa chọn khó khăn là mất một số chức năng hoặc sửa đổi các tiện ích mở rộng hiện có để làm cho chúng tương thích.
Lưu ý: Không sửa đổi trực tiếp tiện ích mở rộng của bên thứ 3 mà tạo một tiện ích mở rộng mới sẽ mở rộng tiện ích mở rộng đã lỗi thời và sau đó đặt phụ thuộc vào XML bootstrap của tiện ích mở rộng mới.
Sau khi tất cả những người thực hiện phân tích thực tế của từng phần mở rộng còn lại có thể được cung cấp. Nó sẽ luôn luôn bắt đầu với việc kiểm tra các etc/config.xml
tập tin. Có 3 điều cần tìm:
- Lớp viết lại không phải là một kỹ thuật sạch, nhưng trong một số trường hợp không có cách nào khác. Vì vậy, nếu lớp viết lại đã được thay đổi trong phiên bản mới của Magento thì đây có thể là một vấn đề tiềm năng.
- Các bản cập nhật bố cục sẽ ít có khả năng gây ra sự cố với bản nâng cấp của bạn, nhưng nếu phần mở rộng đang tham chiếu một khối không được dùng trong phiên bản Magento mới hơn, bạn sẽ phải làm việc này.
- Các bản cập nhật SQL là nguồn gây ra sự đánh giá thấp trong quá trình nâng cấp. Sự cố xảy ra khi tiện ích mở rộng của bên thứ 3 đang tạo khóa ngoại tham chiếu đến một số trường trong bảng Magento mặc định. Kết quả là lĩnh vực này bị khóa từ sửa đổi. Và sau đó nếu tập lệnh cài đặt gốc sẽ cố gắng cập nhật trường này, nó sẽ thất bại trong âm thầm. Sau đó, mỗi tập lệnh cài đặt tiếp theo tham chiếu đến trường này sẽ làm hỏng bản nâng cấp của bạn.
ứng dụng / mã / cục bộ / Pháp sư
Sau khi bạn hoàn thành các tiện ích mở rộng của mình, đã đến lúc xem app/code/local/Mage
thư mục của bạn . Ở đây bạn sẽ tìm thấy các tập tin cốt lõi sửa đổi được chuyển vào một local
phạm vi. Mỗi người trong số họ chắc chắn sẽ trả cho bạn một số tóc bạc bởi vì bạn không bao giờ biết (nếu không phải là bạn đã đặt chúng ở đó) những gì đã được sửa đổi ở đó và vì lý do gì. Vì vậy, bạn phải so sánh từng trong số chúng với một nguồn gốc và di chuyển chức năng được thêm vào tệp tương ứng của phiên bản mới.
Chủ đề tùy chỉnh
Các sửa đổi off-core cuối cùng là chủ đề tùy chỉnh. Điều này có vẻ không phải là một vấn đề lớn nhưng thực tế đây là một khu vực màu xám. Chủ đề cơ sở Magento đang được sửa đổi từ phiên bản này sang phiên bản khác và mỗi chủ đề tùy chỉnh phải bắt chước một số sửa đổi đó. Thật không may, không có viên đạn bạc để xác định những gì cần tìm và những gì phải di chuyển. Vì vậy, chỉ cần chuẩn bị cho một số bất ngờ lớn và nitpicking nhỏ sau khi nâng cấp của bạn.
Sửa đổi trong lõi
Trong thế giới hoàn hảo không có ai. Nhưng khi bạn cài đặt Magento sau khi nó bị lạm dụng bởi các nhà phát triển bên thứ ba, những người đang cung cấp nhiều thứ với giá rẻ, bạn có thể mong đợi bất cứ điều gì. Vì vậy, sửa đổi trong lõi là những sửa đổi sẽ được ghi đè trong quá trình nâng cấp. Trong hầu hết các trường hợp, nó sẽ không tạo ra bất kỳ lỗi nào, nhưng kết quả là bạn sẽ mất chức năng được thêm vào theo cách tàn bạo như vậy.
Cách duy nhất để phát hiện các sửa đổi trong lõi là so sánh tất cả các tệp cài đặt Magento của bạn với các tệp sạch của cùng một phiên bản. Tôi khuyên bạn nên làm điều đó với git. Tại sao? Đơn giản vì nó sẽ xử lý tất cả các dòng mới và khoảng trắng độc đáo.
Ngay cả khi cài đặt Magento của bạn không dưới git, bạn vẫn có thể sao chép các tệp của mình vào một thư mục riêng và sau đó chạy git init. Sau đó thực hiện cam kết ban đầu, sao chép các tập tin Magento trong sạch và chạy git status
. Bạn sẽ nhận được một cái gì đó như thế này:
Bây giờ tùy thuộc vào số lượng tệp sửa đổi, bạn có thể chạy git diff
trên mỗi tệp hoặc trên toàn bộ lô cùng một lúc. Điều này sẽ cung cấp cho bạn một tài liệu tham khảo toàn diện về tất cả các sửa đổi trong lõi được thực hiện. Nếu bạn có bất kỳ trực quan git nào như phpStorm, cuộc sống sẽ dễ dàng hơn nhiều đối với bạn:
Tôi đề nghị làm git diff > changes.txt
như vậy bạn sẽ luôn có một danh sách sửa đổi bằng tay.
Có danh sách các sửa đổi cốt lõi, bạn có thể ước tính những gì phải được chuyển sang phiên bản mới và cần bao nhiêu thời gian để làm điều đó.
Bây giờ tôi muốn đưa ra một số lời khuyên cho việc nâng cấp thực tế. Quá trình này được ghi lại tốt vì vậy tôi sẽ không viết những lệnh nào để chạy và nhấp vào đâu. Tuy nhiên tôi muốn làm điểm nhấn cho một số điều quan trọng:
- Chúng tôi giả định rằng bạn đang nâng cấp trong môi trường phát triển của mình. Chạy nâng cấp tại máy chủ sản xuất của bạn là một vụ tự sát.
- Đừng để họ thay đổi bất cứ điều gì trong sản xuất trong khi bạn đang nâng cấp. Đặt Magento của bạn dưới sự kiểm soát phiên bản hoặc thậm chí các tệp khóa tạm thời khỏi văn bản.
- Vô hiệu hóa tất cả các tiện ích mở rộng của bên thứ 3 nhưng lưu ý những tiện ích mở rộng nào ban đầu bị vô hiệu hóa để bạn không kích hoạt chúng sau đó.
- Kiểm tra xem có tập lệnh dọn dẹp Magento nào đang chạy trên máy chủ không. Nếu không cắt tất cả các bảng bắt đầu với
dataflow_*
, log_*
, report_*
.
- Hoàn nguyên về chủ đề mặc định về thời gian nâng cấp.
Sau khi hoàn thành nâng cấp tập lệnh:
- Tham khảo những
changes.txt
gì bạn đã thực hiện trước khi di chuyển tất cả các sửa đổi trong lõi thực sự đáng di chuyển.
- Di chuyển
app/code/local/Mage
sửa đổi được tìm thấy trước khi nâng cấp.
- Từng người một cho phép mở rộng bên thứ 3.
- Đặt lại chủ đề của bạn và so sánh toàn diện kết quả với máy chủ sản xuất.
- Triển khai để sản xuất một khi bạn hài lòng với kết quả.
Phần kết luận
Tôi biết tất cả điều này nghe có vẻ đáng sợ nhưng nếu bạn nâng cấp thường xuyên, hãy giữ cho lõi của bạn sạch sẽ và chỉ cài đặt các tiện ích mở rộng từ các nhà cung cấp mà bạn thực sự tin tưởng và chỉ khi bạn thực sự cần chúng, bạn sẽ không phải đối mặt với hầu hết những khó khăn được mô tả trong bài viết này. Giữ cho Magento EcoSystem của bạn khỏe mạnh và bạn sẽ được thưởng.
Đoạn tái bút
Trong những trường hợp rất phức tạp, thật hợp lý khi bắt đầu lại với một bản cài đặt Magento mới nhất và di chuyển từng bước chủ đề và chức năng cửa hàng của bạn. Điều này chắc chắn sẽ mất thời gian nhưng cuối cùng bạn sẽ có một hệ thống Magento lành mạnh với nhận thức đầy đủ về những gì đang diễn ra.