Встановлення: додаткові примітки

Ця сторінка доповнює основну інструкцію Встановлення технічними деталями, які знадобляться на нестандартних серверах або під час ручного налаштування. Якщо ви встановлюєте магазин на звичайний хостинг і інсталятор не показує жодних попереджень, ці кроки можна пропустити.

Права на файли й теки (Linux/Unix)#

Вебсервер має право читати всі файли магазину, а записувати — у такі файли й теки:

chmod 0755 system/storage/cache/
chmod 0755 system/storage/download/
chmod 0755 system/storage/logs/
chmod 0755 system/storage/modification/
chmod 0755 system/storage/session/
chmod 0755 system/storage/upload/
chmod 0755 system/storage/vendor/
chmod 0755 image/
chmod 0755 image/cache/
chmod 0755 image/catalog/
chmod 0644 config.php
chmod 0644 admin/config.php

Ці права підходять, якщо PHP працює від імені власника файлів (типово для хостингу з PHP-FPM або suPHP). Якщо інсталятор усе одно повідомляє, що тека недоступна для запису, з'ясуйте в хостинг-провайдера, від якого користувача працює PHP. Права 0777 використовуйте лише як тимчасовий крайній захід і після встановлення поверніть безпечніші значення.

Порада

Файли config.php та admin/config.php мають бути доступні для запису під час встановлення (інсталятор записує в них параметри підключення) і під час оновлення. Після цього права на запис для них можна зняти (chmod 0444).

Встановлення на Windows#

  1. Завантажте вміст теки upload/ у теку сайту на сервері, наприклад C:\inetpub\wwwroot\store\.
  2. Перейменуйте config-dist.php на config.php і admin/config-dist.php на admin/config.php.
  3. Переконайтеся, що обліковий запис, від якого працює вебсервер (для IIS — зазвичай IIS_IUSRS), має права на читання й запис для config.php, admin/config.php, тек image/ і system/storage/.
  4. Відкрийте адресу магазину в браузері й пройдіть кроки інсталятора.
  5. Після успішного встановлення видаліть теку install/.

Локальне встановлення#

Для розробки й тестування ocStore можна встановити на власний комп'ютер за допомогою готових збірок «вебсервер + PHP + MySQL», наприклад:

Виберіть у збірці PHP 8.1 або 8.2 (бібліотеки з комплекту ocStore 3.0.4.1 вимагають PHP 8.1+), розпакуйте вміст upload/ у теку сайту (наприклад, htdocs/ocstore/) і відкрийте http://localhost/ocstore/.

База даних#

  • Створіть для магазину окремого користувача бази даних з правами лише на базу магазину.
  • Не використовуйте обліковий запис root (або іншого адміністратора сервера баз даних) для підключення магазину.

Файл php.ini#

У корені архіву ocStore є файл php.ini з рекомендованими значеннями (session.auto_start = Off, default_charset = UTF-8, upload_max_filesize, memory_limit тощо). Чи врахує його сервер, залежить від хостингу:

  • на частині хостингів (PHP як CGI/FastCGI) параметри з php.ini у теці сайту застосовуються автоматично;
  • на хостингах з PHP-FPM власні параметри зазвичай задаються у файлі .user.ini — перейменуйте php.ini на .user.ini або перенесіть потрібні рядки;
  • у багатьох панелях (cPanel, Plesk, CloudPanel тощо) параметри PHP змінюються в налаштуваннях сайту в самій панелі.

Перевірити, які значення реально діють, можна в хостинг-панелі або за допомогою тимчасового файлу з викликом phpinfo() у корені сайту. Після перевірки обов'язково видаліть цей файл.

Nginx#

Файл .htaccess використовує лише Apache (і сумісні з ним LiteSpeed/OpenLiteSpeed). На Nginx правила потрібно додати в конфігурацію сайту (блок server). Нижче наведено мінімальний приклад, що відтворює основні правила з .htaccess.txt ocStore 3.0.4.1:

# Заборонити доступ до службових файлів
location ~* \.(twig|tpl|ini|log)$ {
    deny all;
}

location ^~ /system/storage/ {
    deny all;
}

# Карта сайту
rewrite ^/sitemap.xml$ /index.php?route=extension/feed/google_sitemap last;

# SEO URL
location / {
    try_files $uri $uri/ @opencart;
}

location @opencart {
    rewrite ^/(.+?)/?$ /index.php?_route_=$1 last;
}
Увага

Регулярний вираз ^/(.+?)/?$ відкидає кінцеву косу риску з адреси. Якщо передавати її в _route_, модуль SeoPro не розпізнає адресу, і сторінки з кінцевою / відкриватимуть головну.

Рядки з передачею запиту на PHP (location ~ \.php$ { … fastcgi_pass … }) залежать від вашого сервера й тут не наводяться. Після змін перевірте конфігурацію (nginx -t) і перезавантажте Nginx. Як увімкнути SEO URL в адмінці — див. SEO URL.

Підготовка до запуску#

Перш ніж відкривати магазин для покупців:

  1. Вимкніть виведення помилок на екран. У ocStore 3.0.4.1 у файлі system/config/default.php за замовчуванням уже встановлено $_['error_display'] = false;. Якщо ви вмикали його на час налагодження, поверніть false: повідомлення PHP на сторінках розкривають шляхи до файлів і заважають роботі AJAX-запитів. Помилки при цьому й надалі записуватимуться в журнал (Система → Обслуговування → Журнал помилок).
  2. Перенесіть теку storage за межі кореня сайту. Разом із нею переїде й тека vendor/ з бібліотеками Composer — вони не повинні бути доступні з браузера.
  3. Видаліть теку install/.
  4. Перевірте, що SEO URL працюють, а адреса https://ваш-магазин/system/storage/ недоступна.