Коротка відповідь
Під магазин, який уже продає, я раджу план Бізнес: 3 ядра CPU, 4 ГБ RAM, 30 ГБ NVMe, 20 баз MySQL, канал 500 Mbit/s, WAF ModSecurity і антивірус, пріоритетна підтримка. Коштує 759 грн/міс помісячно або 350 грн/міс при оплаті за рік (4200 грн).
Старт за 142 грн/міс (при річній оплаті) - нормальний вибір для нового магазину з каталогом до кількох сотень позицій і без реклами. Pro з 4 ядрами і 8 ГБ RAM - коли магазинів кілька або каталог на тисячі товарів з вивантаженнями з 1С чи прайсів.
Незалежно від плану, до сезону перевірте чотири речі: чи кешується все, що можна кешувати, коли був останній бекап і чи ви з нього колись відновлювались, чи доходять листи про замовлення і чи не впирається магазин у ліміт уже зараз, у звичайний день.
1. Чому магазин навантажує сервер інакше, ніж сайт-візитка
Блог чи лендінг після кешування віддається як готовий HTML-файл, і сервер майже не витрачає на нього процесор. У магазину так не вийде: частина сторінок персональна для кожного відвідувача.
- Кошик і оформлення замовлення - кешувати не можна за визначенням, там сесія конкретного покупця.
- Фільтри в категоріях - кожна комбінація «розмір + колір + ціна від-до» є окремим запитом до бази. Варіантів тисячі, кеш їх не покриває.
- Пошук по товарах - запит щоразу новий, і на OpenCart без окремого модуля пошуку це повний перебір таблиці товарів.
Звідси головне правило: у магазину навантаження росте разом із кількістю людей, які одночасно щось шукають і купують, а не разом з кількістю відвідувань головної. Сто людей на головній сервер не помітить, двадцять людей у фільтрах розпродажу - помітить.
2. Скільки ядер потрібно: рахуємо від покупців, а не від товарів
Орієнтовна механіка така: некешована сторінка категорії з фільтром на OpenCart чи WooCommerce займає 0,2-0,5 секунди процесорного часу. Одне ядро, відповідно, обробляє 2-5 таких запитів на секунду. Покупець у активній фазі робить запит раз на кілька секунд.
У перекладі на живі цифри:
- 1 ядро тримає 10-15 одночасних активних покупців. Для магазину без реклами, з кількома десятками замовлень на тиждень, цього досить.
- 3 ядра - 40-60 одночасних покупців. Це рівень магазину з рекламою в Google Shopping чи Instagram і піком у вечірні години.
- 4 ядра і 8 ГБ RAM потрібні там, де крім покупців працюють фонові задачі: імпорт прайсу на кілька тисяч позицій, фід для маркетплейсів, синхронізація з обліковою системою.
Пам'ять, поки магазин один, важлива менше: 2-4 ГБ вистачає PHP і MySQL. Вузьким місцем вона стає при кількох магазинах на акаунті або важкому імпорті.
Якщо ви вже отримували лист про перевищення ліміту в звичайний тиждень, сезон цей тариф не переживе. Як розібратись, що саме закінчилось, - у статті «Перевищено ліміт ресурсів»: що це означає і що робити.
3. Три плани під магазин поруч
Цифри з чинних тарифів хостингу. Перша ціна - при оплаті щомісяця, друга - у перерахунку на місяць при оплаті за рік:
| Параметр | Старт | Бізнес | Pro |
|---|---|---|---|
| Щомісяця | 479 грн | 759 грн | 1119 грн |
| При оплаті за рік | 142 грн/міс | 350 грн/міс | 800 грн/міс |
| CPU | 1 ядро | 3 ядра | 4 ядра |
| RAM | 2 ГБ | 4 ГБ | 8 ГБ |
| NVMe | 10 ГБ | 30 ГБ | 100 ГБ |
| Канал | 100 Mbit/s | 500 Mbit/s | 1 Gbit/s |
| Сайтів | 1 | 5 | 10 |
| Баз MySQL | 5 | 20 | без обмежень |
| Поштових скриньок | 15 | 50 | без обмежень |
| Підтримка | стандартна | пріоритетна | персональний менеджер |
| Під що | новий магазин, сотні товарів | робочий магазин з рекламою | кілька магазинів або тисячі позицій |
Між Стартом і Бізнесом є ще Оптимал (2 ядра, 3 ГБ RAM, 20 ГБ, 229 грн/міс при річній оплаті) - він добре підходить для блогу чи кількох невеликих сайтів, але для магазину в сезон я б не економив на одному ядрі. Усі шість планів з VPS-рівнями видно в порівнянні на головній.
4. Диск: місце з'їдають фото і сміття, а не товари
Сам OpenCart займає близько 50 МБ, база на кілька тисяч товарів - 50-300 МБ. Основну вагу дають зображення. Магазин на 2000 товарів по 4 фото, і до кожного фото движок генерує 4-6 мініатюр різних розмірів, - це 3-6 ГБ тільки на картинки, якщо фото завантажені без стиснення.
Тому 10 ГБ Старту для великого каталогу - впритул, а 30 ГБ Бізнесу вистачає з запасом на тестову копію магазину. Решту місця зазвичай з'їдають кеш мініатюр після зміни шаблону, архіви в корені сайту і логи помилок від збійного модуля.
NVMe тут важливий не через «швидкість на папері». Фільтри і пошук по великому каталогу - це тисячі дрібних читань з диска, і саме на них NVMe дає відчутну різницю з SATA SSD.
5. PHP і версія движка: перевірити до оновлень, а не після
На серверах Apache 2.4, PHP 8.3 з OPcache, версію перемикаєте самі в DirectAdmin. Для магазину це критично, бо модулі оплати й доставки часто відстають від движка:
- OpenCart 4 потребує PHP 8.0 і новіше;
- гілка OpenCart 3 живе на PHP 7.3-8.0, і більшість старих модулів на 8.3 видадуть помилки;
- WooCommerce працює на 8.3, але окремі плагіни доставки варто перевірити на копії.
Моє правило: жодних оновлень движка, модулів і PHP з середини листопада до кінця грудня. Усе, що хочеться оновити, - у жовтні, на тестовій копії магазину, і лише потім на робочому сайті. 20 баз на Бізнесі якраз дозволяють тримати таку копію поруч. Докладніше про вимоги під OpenCart і PrestaShop - на окремій сторінці для магазинів.
6. Бекапи: що буде з замовленнями між копіями
Копії всіх акаунтів робляться двічі на добу, о 00:00 і о 12:00, і зберігаються на окремому сервері. Для магазину з цього випливає неочевидна річ: відкат до останньої копії повертає файли і базу, але стирає замовлення, що прийшли після неї. Якщо модуль зламав магазин о 18:00, відновлення з полуденної копії забере шість годин замовлень.
Тому в сезон:
- перед будь-якою зміною робіть ручну копію бази в DirectAdmin - це хвилина;
- якщо щось зламалось, спершу вивантажте свіжі замовлення (експорт у CSV або хоча б скріншоти списку), а вже потім відновлюйтесь;
- замовлення дублюйте в Telegram або CRM, щоб вони жили не тільки в базі магазину.
Як перевірити, що з копії справді можна піднятися, і скільки це займає, - у статті «Бекапи сайту: як мають працювати і як відновитись за годину».
7. SSL і пошта: дві речі, які тихо вбивають продажі
Без HTTPS не підключаються платіжні системи, а браузер показує попередження саме на сторінці кошика, де покупець вводить телефон. Let's Encrypt входить у всі плани і поновлюється автоматично, але після переїзду чи зміни домену варто відкрити кошик і оформлення в браузері й переконатися, що замок на місці.
Лист «Ваше замовлення прийняте» - друга тиха точка відмови. Листи з домену на хостингу підписуються DKIM, але якщо магазин відправляє пошту через функцію mail() з адресою відправника на @gmail.com, поштові сервіси відправлять її в спам. Налаштуйте відправку через SMTP зі скриньки на своєму домені і перевірте SPF-запис. Якщо листи не доходять і причина не очевидна, напишіть у підтримку в Telegram з номером замовлення і часом: у поштових логах сервера видно, де саме лист зупинився.
8. Репетиція сезону за два тижні до старту
Найкорисніше, що можна зробити в жовтні, - прогнати магазин так, як його прожене грудень:
- Пройдіть покупку від і до з телефону на мобільному інтернеті: пошук, фільтр, кошик, оплата, лист. Засічіть час кожного кроку.
- Перевірте швидкість кошика і фільтрів, а не головної. Якщо сторінка з фільтром думає довше 2 секунд у звичайний день, під навантаженням буде 5-10. Що з цим робити по кроках - у статті «Чому сайт повільний: перевірити за 20 хвилин».
- Увімкніть кешування для каталогу і карток товарів, де движок дозволяє, і вимкніть модулі, якими ніхто не користується.
- Стисніть банери розпродажу у WebP - вони вантажаться на кожній сторінці.
- Перенесіть імпорт прайсу і фіди на нічні години, щоб вони не забирали ядра в піковий вечір.
Якщо після цього магазин однаково впирається в процесор, переходьте на старший план зараз, а не в день розпродажу. Перехід на старший план не вимагає перенесення: файли, база і пошта лишаються де були, ростуть лише ядра, пам'ять і диск.
9. Чого в тарифах немає - чесно
- Запасу під сезонний сплеск на Старті немає. 1 ядро - це 1 ядро, і в пік воно не розтягується. Якщо запускаєте рекламу на розпродаж, Старт - неправильний план.
- Аптайм - 99.9%, а не «завжди онлайн». Це до 43 хвилин недоступності на місяць. Доступність перевіряється кожні 5 хвилин, тож про збій я дізнаюсь раніше за вас, але для магазину в сезон навіть 10 хвилин простою - це кілька втрачених кошиків. Якщо на певну дату у вас запланований великий розпродаж, попередьте підтримку заздалегідь.
- Виділеного IP на шаред-планах немає, він є тільки у VPS Преміум і Максимум. Для більшості магазинів він не потрібен; якщо платіжна система чи 1С вимагає фіксованого IP, спершу спитайте в підтримці.
- Сервери у Франції, не в Україні. Статику покупцям з України роздає Cloudflare з найближчого вузла.
- Оплата хостингу зараз - за реквізитами, з ручною активацією протягом дня. Закладайте це в терміни, якщо переїжджаєте впритул до сезону.
Якщо магазину ще немає і робити його з нуля немає ні часу, ні бюджету, є інший шлях - готовий магазин на OpenCart в оренду, від 288 грн/міс при річній оплаті, де хостинг і SSL уже в ціні.
Чек-лист перед сезоном
- Згадайте, чи приходили у вересні листи про перевищення ліміту або помилки 503: якщо так - міняйте план у жовтні.
- Для магазину з рекламою - щонайменше 3 ядра і 4 ГБ RAM, тобто Бізнес.
- Перевірте вільне місце: має лишатися запас мінімум на одну повну копію магазину.
- Зафіксуйте версію PHP і движка, всі оновлення - до середини листопада, на тестовій копії.
- Один раз відновіть магазин з бекапу на тестовий піддомен, щоб знати, скільки це займає.
- Налаштуйте дублювання замовлень у Telegram або CRM.
- Відправте собі тестове замовлення і перевірте, що лист не в спамі.
- Пройдіть покупку з телефону і засічіть швидкість кошика та фільтрів.
- Якщо переїжджаєте - робіть це до 1 листопада: перенесення безкоштовне, зазвичай 30 хвилин - 2 години, але домену потрібен час, щоб DNS оновився всюди (як переїхати без простою).
Підсумок
Хостинг для інтернет-магазину вибирають за процесором і за тим, як поводяться бекапи й пошта в день, коли щось пішло не так. Гігабайти і «безлімітний трафік» тут другорядні. Робочому магазину з рекламою потрібні 3 ядра - це Бізнес за 350 грн/міс при оплаті за рік, а все інше вирішує підготовка в жовтні.
Порівняти плани з усіма лімітами можна на сторінці тарифів. Якщо не впевнені, чи витягне ваш магазин сезон на поточному тарифі, - напишіть у Telegram адресу сайту і скільки замовлень чекаєте, я подивлюся навантаження і скажу чесно. Готові до сезону - замовити Бізнес.