Установка и настройка CMS OpenCart
Установка OpenCart — это не просто распаковка архива. Правильно настроенный сервер, корректная конфигурация PHP и базы данных, настройка прав файловой системы и первичная конфигурация самой CMS — совокупность решений, которые определяют стабильность и производительность магазина на годы вперёд.
Требования к серверу
OpenCart 4.x требует:
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| PHP | 8.0 | 8.2+ |
| MySQL | 5.7 | 8.0 |
| MariaDB | — | 10.6+ |
| Веб-сервер | Apache / nginx | nginx |
| Расширения PHP | curl, zip, zlib, gd, mysqli, mbstring | + opcache, redis |
| Память PHP | 128 MB | 256 MB+ |
Проверка расширений:
php -m | grep -E 'curl|zip|gd|mysqli|mbstring|redis|opcache'
Конфигурация PHP
Файл php.ini или директива в nginx.conf:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 10000
date.timezone = Europe/Minsk
; Обязательно для производительности
opcache.enable = 1
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.revalidate_freq = 60
max_input_vars = 10000 — важно для работы с большими формами в OpenCart (настройка опций товара может передавать много полей).
Конфигурация nginx
server {
listen 443 ssl http2;
server_name myshop.by www.myshop.by;
root /var/www/myshop/public_html;
index index.php;
# SSL (Let's Encrypt или коммерческий сертификат)
ssl_certificate /etc/letsencrypt/live/myshop.by/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myshop.by/privkey.pem;
# SEO URL
location / {
try_files $uri $uri/ @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
# Запрет доступа к служебным файлам
location ~ ^/(system|admin/config\.php|config\.php) {
deny all;
}
# PHP обработка
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
}
# Кеширование статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
# Редирект HTTP → HTTPS
server {
listen 80;
server_name myshop.by www.myshop.by;
return 301 https://myshop.by$request_uri;
}
Установка OpenCart
Шаг 1: Загрузка и распаковка
cd /var/www/myshop
wget https://github.com/opencart/opencart/releases/download/4.0.2.3/opencart-4.0.2.3.zip
unzip opencart-4.0.2.3.zip
cp -r upload/* public_html/
cd public_html
Шаг 2: Копирование конфигурационных шаблонов
cp config-dist.php config.php
cp admin/config-dist.php admin/config.php
Шаг 3: Права доступа
# Директории для записи
chmod 775 system/storage/cache/
chmod 775 system/storage/logs/
chmod 775 system/storage/download/
chmod 775 system/storage/upload/
chmod 775 image/
chmod 775 image/cache/
chmod 664 config.php admin/config.php
chown -R www-data:www-data /var/www/myshop/public_html/
Шаг 4: Создание базы данных
CREATE DATABASE opencart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'opencart_user'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON opencart.* TO 'opencart_user'@'localhost';
FLUSH PRIVILEGES;
Шаг 5: Установка через веб-мастер
Открыть https://myshop.by/install/ и пройти 4 шага:
- Лицензионное соглашение
- Проверка требований (все пункты должны быть зелёными)
- Настройки БД и администратора
- Завершение
После завершения — удалить папку /install/:
rm -rf public_html/install/
Перенос storage за веб-рут
По умолчанию system/storage/ находится внутри веб-рута — это небезопасно (прямой доступ к логам и кешу). Переносим:
mv public_html/system/storage/ /var/www/myshop/storage/
В config.php:
define('DIR_STORAGE', '/var/www/myshop/storage/');
В admin/config.php — аналогично. Перезапустить PHP-FPM.
Первичная настройка через админку
System → Settings → General:
- Store Name, Address, Email, Phone
- Meta Title (название для главной страницы)
System → Settings → Server:
- Use SEO URL's: Yes (обязательно)
- Output Compression Level: 5 (gzip)
- Error Display: No (на production)
- Error Log: Yes
System → Settings → Image:
- Image Width/Height для разных контекстов:
- Category image: 300×300
- Product image (каталог): 400×400
- Product image (карточка): 800×800
- Cart image: 100×100
Неправильные размеры изображений — частая причина медленной загрузки: OpenCart создаёт thumbnails при первом обращении, большие размеры = долгая генерация.
Настройка локали
System → Localization → Languages → Русский
→ Status: Enabled
→ Sort Order: 1
System → Localization → Currencies → Российский рубль
→ Code: RUB
→ Symbol Left: (пусто)
→ Symbol Right: ₽
→ Decimal Places: 2
→ Status: Enabled
→ Default: Yes
System → Localization → Currencies → Белорусский рубль
→ Code: BYN
→ Symbol Right: Br
Обновление курсов валют (автоматически от ECB/Yahoo Finance или вручную):
System → Localization → Currencies → Update Currency Rates
Подключение SSL/HTTPS
После установки SSL-сертификата:
System → Settings → Server
→ Use SSL: Yes
→ HTTPS server: https://myshop.by/
Если сайт за Cloudflare или proxy — дополнительно в index.php в начале файла:
// Если proxy передаёт HTTPS
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Безопасность после установки
- Переименовать
/admin/в непредсказуемое имя (например/store-control-9x7k/) - Настроить HTTP Basic Auth на папку администратора как второй фактор
- Обновить
admin/config.phpс новым путём - Добавить
location /store-control-9x7k { auth_basic ...; }в nginx - Установить расширение для двухфакторной аутентификации в админку
Сроки
- Базовая установка на подготовленный сервер: 2–4 часа
- Настройка nginx + PHP + SSL с нуля: 4–8 часов
- Первичная конфигурация магазина (локаль, настройки, безопасность): 2–3 часа
- Итого: 1 рабочий день.







