Обзор развертывания OpenCart на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие параметры системы и сетевые настройки:
-
Операционная система: Debian, Ubuntu, CentOS, Rocky Linux или AlmaLinux.
-
Права доступа: Полный доступ
rootдля выполнения установки. -
Порты:
-
80/tcp— HTTP (используется для проверки сертификатов). -
443/tcp— HTTPS (основной трафик). -
8080— Внутренний порт веб-сервера Apache.
FDQN итоговой панели на домене hostkey.in¶
Для доступа к приложению используется динамический шаблон поддомена:
| Параметр | Значение |
|---|---|
| Префикс | opencart |
| Домен | hostkey.in |
| Полный шаблон | opencart{Server_ID_from_Invapi}.hostkey.in/opencart |
Структура файлов и каталогов¶
Основные пути к файлам и директориям в системе:
-
/var/www/html/opencart— корневая директория приложения OpenCart. -
/root/opencart— временная директория с исходным кодом из репозитория. -
/root/nginx— конфигурационные файлы Docker Compose для Nginx. -
/data/nginx/user_conf.d— пользовательские конфигурации Nginx (включая проксирование). -
/data/nginx/nginx-certbot.env— файл переменных окружения для контейнера Nginx.
Процесс установки приложения¶
Развертывание выполняется путем клонирования репозитория OpenCart (ветка 3.0.x.x) и настройки веб-сервера.
Основные этапы:
-
Установка системных зависимостей (PHP, MySQL, Apache/httpd, Git).
-
Клонирование исходного кода из GitHub в
/root/opencart. -
Копирование файлов приложения в
/var/www/html/opencart. -
Переименование конфигурационных файлов из
config-dist.phpвconfig.php(включая директориюadmin). -
Настройка веб-сервера Apache на работу на внутреннем порту
8080.
Права доступа и безопасность¶
Безопасность обеспечивается следующими механизмами:
-
Брандмауэр: Открыты только необходимые порты
80и443. В системах семейства RedHat используетсяfirewalld. -
Владелец файлов:
-
Для Debian/Ubuntu: пользователь
www-data. -
Для RHEL/CentOS/AlmaLinux: пользователь
apache. -
Права на директории: Установлен режим
0755для каталогов приложения.
Базы данных¶
Для работы OpenCart создается база данных и пользователь с ограниченными правами:
| Параметр | Значение |
|---|---|
| Имя базы данных | opencart |
| Имя пользователя | opencart |
| Права доступа | Все привилегии (ALL) на базу opencart.* |
Контейнеры Docker и их запуск¶
Для управления SSL-сертификатами используется контейнер Nginx с модулем Certbot.
Контейнер: nginx
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Порты: Использует порты хоста (80, 443).
-
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— хранение сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— конфигурации проксирования. -
Переменные окружения:
-
CERTBOT_EMAIL: email для регистрации в Let's Encrypt. -
Политика перезапуска:
unless-stopped.
Инструкция по обновлению приложения¶
Обновление выполняется через обновление конфигурации и перезапуск контейнеров: docker compose pull && docker compose up -d (в директории /root/nginx).
Настройки прав¶
Права на файлы устанавливаются следующим образом:
-
Владельцем каталогов
/var/www/html/opencartи/var/wwwявляется системный пользователь веб-сервера (www-dataилиapache). -
Рекурсивно применяется право собственности для обеспечения доступа веб-сервера к файлам приложения.
Расположение конфигурационных файлов и данных¶
Конфигурация OpenCart включает:
-
Основной файл:
/var/www/html/opencart/config.php. -
Файл администратора:
/var/www/html/opencart/admin/config.php.
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
80 | TCP | HTTP (для проверки сертификатов) |
443 | TCP | HTTPS (основной доступ к сайту) |
8080 | TCP | Внутренний порт Apache (локально) |
Запуск, остановка приложения¶
Управление контейнером Nginx-Certbot:
-
Запуск:
docker compose up -d(из/root/nginx). -
Перезагрузка конфигурации Nginx:
docker compose exec -T nginx nginx -s reload. -
Остановка:
docker compose down.
Прокси серверы¶
В качестве обратного прокси используется контейнер nginx-certbot.
Настройки проксирования:
-
Передается заголовок
Hostдля корректной работы редиректов OpenCart. -
Передается заголовок
X-Forwarded-Protoсо значением$scheme, чтобы PHP понимал, что запрос пришел по HTTPS.