Вибір сервера для WooCommerce
Офіційна документація WooCommerce вимагає PHP 8.3 або новіший, MySQL 8.0 чи MariaDB 10.6 або новіший, HTTPS і ліміт пам’яті WordPress не менше 256 МБ. Цифри для RAM сервера вона не називає. Для невеликого магазину розумно починати з 2-4 ГБ RAM (орієнтир, що залежить від магазину). Зі зростанням товарів і замовлень зростає й навантаження на базу даних та процесор.
Магазин не поводиться як блог. Сторінки кошика й оформлення замовлення різні для кожного відвідувача, тож їх не можна кешувати, а замовлення цілий день записуються в базу даних. Тому за того самого трафіку магазину часто потрібно більше ресурсів, ніж блогу.
Офіційні вимоги
Документ «Вимоги WooCommerce до сервера» (офіційна рекомендація) називає:
- PHP 8.3 або новіший.
- MySQL 8.0 або новіший чи MariaDB 10.6 або новіший.
- Підтримку HTTPS.
- Ліміт пам’яті WordPress від 256 МБ.
- Apache або Nginx як вебсервер.
- Підтримку багатобайтових рядків (mbstring), якщо ваш магазин не англійською. Документ вважає це вимогою, що залежить від магазину, і турецький магазин належить до цієї групи.
Ліміт 256 МБ — це стеля для одного запиту PHP, а не RAM сервера. За потреби додайте цей рядок у wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
Старіші версії, як-от PHP 7.4, згадано в документі лише як запасний варіант для застарілих систем, і їх не рекомендують.
Чим магазин відрізняється від блогу
- Сторінки, які не можна кешувати. Посібник WooCommerce із кешування радить виводити з кешу сторінки кошика, оформлення замовлення та акаунта, бо вони показують дані саме цього відвідувача. Деякі cookie, наприклад cookie кошика, теж слід виключити. Переконайтеся, що ваш плагін кешування це робить.
- Навантаження на запис. Створення замовлень, оновлення залишків і збереження сесій постійно пишуть у базу даних. Блог пише рідко, а магазин пише цілий день.
- Фонові завдання. WooCommerce виконує відкладену роботу (листи, вебхуки, платежі за підписками) через вбудовану чергу завдань Action Scheduler. Чергу запускає WP-Cron, тож у магазині з малим трафіком завдання можуть виконуватися із запізненням. Якщо налаштувати на сервері завдання cron, що запускає WP-Cron за розкладом (разом із параметром
DISABLE_WP_CRON), ця залежність зникає. Чергу можна побачити в розділі WooCommerce > Status > Scheduled Actions.
Дані замовлень і HPOS
High-Performance Order Storage (HPOS) зберігає замовлення в спеціальних таблицях, створених саме для цього, а не в загальних таблицях записів WordPress. У нових встановленнях він типовий починаючи з WooCommerce 8.2. Старіші магазини самі не переходять. Його вмикають у розділі WooCommerce > Settings > Advanced > Features, а режим сумісності підтримує синхронність двох структур. Для сервера суть така: структуру оптимізовано під замовлення, але базі даних усе одно потрібні пам’ять і диск.
Початковий розмір
Ці значення — орієнтири, що залежать від магазину. Вони не є твердою обіцянкою.
| Магазин | Початкова RAM | vCore |
|---|---|---|
| Новий магазин: мало товарів, мало замовлень | 2-4 ГБ | 1-2 |
| Магазин, що зростає: тисячі товарів, регулярні кампанії | 4-8 ГБ | 2-4 |
| Завантажений магазин: часті кампанії, багато плагінів та інтеграцій | від 8 ГБ | від 4 |
Кількість плагінів, розміри зображень і раптове навантаження під час кампанії важать не менше, ніж кількість товарів. Кеш об’єктів (наприклад, Redis) знижує навантаження на базу даних, але потребує пам’яті. Починайте з малого, а потім зростайте, перевіряючи вивід free -h і top у години пік.
Поширені причини, чому магазин гальмує
- Великі нестиснені зображення товарів.
- Невикористовувані плагіни й зайві скрипти, що виконуються на кожній сторінці.
- Немає кешу об’єктів, тому той самий запит до бази даних виконується знову і знову.
- Стара версія PHP, яку більше не підтримують.
Виправлення цього часто має йти раніше за збільшення сервера. Там, де збільшення не допомагає, проблема зазвичай у конфігурації.
Резервні копії: щоденної може бути недостатньо
У Seturack сервер копіюється щоночі, а останні 7 днів зберігаються. У магазині замовлення надходять цілий день, тож самого цього може не вистачити. Якщо ви відновлюєте дані, замовлення, оформлені після останньої копії, буде втрачено. Робіть дамп бази даних частіше й копіюйте його кудись інде:
mysqldump --single-transaction -u USER -p DATABASE | gzip > orders-$(date +%F-%H%M).sql.gz
У запланованому завданні не вказуйте пароль у командному рядку. Використовуйте файл ~/.my.cnf з правами 600. На готовому сервері WooCommerce застосунок працює в Docker, тож команди бази даних виконуйте зсередини контейнера. База даних там — MariaDB. У контейнері може не бути mysqldump, тому використовуйте mariadb-dump. Зображення товарів лежать у папці wp-content/uploads, тож копіюйте й її.
Що підготувати, окрім розміру
- HTTPS. Для WooCommerce він обов’язковий. Готовий сервер WooCommerce відкривається через HTTPS на адресі, утвореній з вашого IP через sslip.io. Щоб підключити власний домен, див. цю статтю.
- Електронна пошта. Установіть плагін SMTP, щоб листи про замовлення надсилалися. Під час встановлення надсилання пошти не налаштовується.
- Оновлення. Після встановлення оновлення WordPress, WooCommerce і ваших плагінів — на вашому боці. Перед великим оновленням зробіть знімок у панелі. Знімок не замінює резервну копію, він лише дає змогу повернутися до моменту до оновлення.
Сервер із попередньо встановленим WooCommerce готовий приблизно за 3,5-4 хвилини, а в міру зростання магазину його можна збільшити з панелі. Загляньте на сторінку сервера WooCommerce.
Коментарі0
Коментарів поки немає
Поділіться своєю думкою першим.
Будь ласка, увійдіть або зареєструйтеся, щоб залишити коментар.