Hootan Alghaspour
Hootan Alghaspour
خواندن ۴ دقیقه·۳ سال پیش

اعمال update و upgrade و patch روی Magento2

در اینجا به اینکه چرا مجنتو قوی ترین open-source e-commerce platform است و چرا مجموعه های حرفه ای برای ساخت فروشگاه آنلاین بجای امثال WooCommerce و virtuemart دردسری مثل Magento را تقبل می کنند کار ندارم. بصورت خلاصه شما اگر بخواهید فروشگاه آنلاینی مثلاً تقریباً در حد دیجی کالا راه اندازی کنید از ابعاد مختلف از جمله توانایی پاسخ دادن به هزاران محصول و هزاران درخواست همزمان باید از مجنتو استفاده کنید.

دو آسیب پذیری خطرناک روی مجنتو منتشر شده که بهانه ای شدند برای اینکه روش اعمال پچ را بصورت ساده اینجا ثبت کنم.

قبل از هر چیز بهتر است ابزار Quality Patches Tool را نصب کنید. در پوشه public_html مجنتو از دستور ذیل استفاده بفرمایید.

$composer require magento/quality-patches

برای آپدیتش هم composer update magento/quality-patches

همچنین در حقیقت روی default mode هم می توان اینکارها را انجام داد اما بهتر است قبل از این قبیل امور مجنتو را روی maintenance mode قرار دهید.

راهنمای modeها را اینجا و راهنمای Set the operation mode را اینجا ببینید.


نصب patch های مجنتو :

یکسری پچ های عمومی و متداول و کاربردی و دوره ای است که به اینصورت باید اعمال بفرمایید :

دستور ذیل را در فولدر روت مجنتو بزنید :

$./vendor/bin/magento-patches status

لیست پچ های موجود روی نسخه شما و وضعیت آنها نمایش داده می شود.

برای اعمال باید از دستور ذیل استفاده بفرمایید و لیست کد patchهایی که می خواهید اعمال شوند را بزنید. متاسفانه من در خود دستور پیدا نکردم چطور میشه همه را یکجا all کرد و باید دونه دونه کد پچ ها را بزنید. کار که می کنم اینه که خروجی دستور را میفرستم روی یک فایل و با cut و sed لیست کدپچ ها را استخراج می کنم.

$./vendor/bin/magento-patches apply MAGE-XXXX MAGE-YYYY

و در نهایت bin/magento cache:clean/. کنید. revert هم داره ، راهنمای کاملتر را اینجا ببینید.


یکسری هم ممکنه پچ های فوری و امنیتی و موردی باشند مثل این مورد اخیر، باید دستی و موردی اعمال شوند، بهتر است پچ های عمومی را قبل از اینها نصب کرده باشید :

برای اینکار از git یا patch استفاده می کنیم. من از patch استفاده می کنم.ابتدا با yum install ابزارهای فوق را اگر نصب ندارید نصب کنید.

سپس بسته به اینکه از composer برای نصب استفاده کرده اید یا از روی github و سورس نصب نموده اید (آدرس فایل ها فرق می کند) پچ مربوطه (مثلاً فایل MDVA-43443_EE_2.4.2-p2_COMPOSER_v1.patch) را دانلود و extract و روی public_html سایت مجنتو خود بارگزاری بنمایید.

به ترتیب نصب پچ ها و راهنمای Adobe Security Bulletin توجه بفرمایید.

مثلاً در مورد اخیر :

در نهایت با دستور patch در فولدر روت مجنتو (home/account/public_html/) و دادن فایل پچ به آن :

$patch -p1 < patch_name.composer.patch

آن را اعمال کنید. اگر p1 کار نکرد جای آن از p2 استفاده کنید. برای گرفتن backup از فایل هم سوییچ b- را استفاده کنید که البته بصورت پیش فرض در نسخه نصب شده روی centos8 من فعال بود. راهنمای patch را اینجا ببینید.

برای اعمال با دستور git باید از روش ذیل استفاده بفرمایید. من با patch راحت ترم و از git استفاده نمی کنم.

$git apply patch_name.composer.patch

پس از اعمال patch باید php bin/magento setup:upgrade را استفاده کنید.

من معمولاً پس از اینجور کارها کل فرآیند ذیل را انجام می دهم :

$rm -rf var/di var/generation/* var/cache/* var/page_cache/* $php bin/magento cache:clean $php bin/magento cache:flush $php bin/magento setup:upgrade $php bin/magento setup:di:compile $php bin/magento setup:static-content:deploy -f $php bin/magento indexer:reindex


آپدیت و آپگرید مجنتو به نسخه جدیدتر

برای اعمال آپدیت و آپگرید مجنتو هم از دستورات ذیل استفاده بفرمایید، دقت کنید قضیه بروزرسانی نسخه با نصب وصله و patch متفاوت است، همچنین من برای مجنتو از composer برای نصب و بروزرسانی استفاده می کنم و سورس را از روی گیت هاب بیلد نمی کنم.

اگر بعدش خطایی داد احتمالاً مشکل ownership و permission است. (قبلش یک بک آپ بگیرید و بهتر است روی maintenance mode باشید!)

$composer require magento/product-community-edition [latest version] --no-update $composer update $rm -rf var/di var/generation/* var/cache/* var/page_cache/* $php bin/magento cache:clean $php bin/magento cache:flush $php bin/magento setup:upgrade $php bin/magento setup:di:compile $php bin/magento setup:static-content:deploy -f $php bin/magento indexer:reindex


روند استاندارد ارتقا نسخه ۲.۴.۴ به ۲.۴.۵ بصورت زیر است که در آن قرار دادن روی maintenance و بک آپ گرفتن از composer.json هم منظور شده است و در پایان هم vendor را کلاً پاک می کند و مجدداً نصب می کند.

  1. php bin/magento maintenance:enable
  2. cp composer.json composer.json.bak
  3. composer -v
  4. composer require-commerce magento/product-community-edition 2.4.5 --no-update
  5. composer update
  6. php bin/magento setup:upgrade
  7. php bin/magento setup:di:compile
  8. php bin/magento setup:static-content:deploy -f
  9. php bin/magento cache:clean
  10. php bin/magento maintenance:disable
  11. rm -rf vendor
  12. Composer install
مجنتوmagentob2bD2Cb2c
هوتن القاس پور
شاید از این پست‌ها خوشتان بیاید