Перейти к содержанию

Лидеры

  1. mpn2005

    mpn2005

    Разработчик


    • Баллы

      32

    • Постов

      531


  2. halfhope

    halfhope

    Разработчик


    • Баллы

      23

    • Постов

      46


  3. sitecreator

    sitecreator

    Разработчик


    • Баллы

      6

    • Постов

      160


  4. ncv

    ncv

    Разработчик


    • Баллы

      4

    • Постов

      107


Популярный контент

Показан контент с высокой репутацией за 26.03.2022 в Записи блога

  1. Веб сервер nginx позволяет работать в разных режимах, как с использованием интерпретатора php, так и без. Для работы OpenCart лучше выбирать оптимальный режим работы php-fpm. Многих данный режим пугает тем, что в данном случае файл htaccess напрочь игнорируется и все необходимые настройки нужно вносить в конфиг nginx. Но в этом нет ничего сверх сложного. Конфигурационный файл - это обычный текстовый файл на сервере, который подчиняется определённым правилам. И по данному поводу можно найти много готовых описаний и инструкций. Данная статья не претендует на уникальность, а просто представляет краткую выжимку по настройкам, учитывая особенности работы с движком OpenCart и сборками на его основе. Для удобства будут приводится примеры настройки с использованием панели ISPmanager. Основные настройки будут касаться секции location, и зависимость описания от используемой панели будет минимальной. Для начала переведём nginx в режим работы php-fpm. Для этого в панели сделаем следующие настройки разделе WWW-домены для нужного сайта: 1. Выбираем в списке нужный сайт, если их несколько, и жмём кнопку "Изменить". 2. Находим настройки PHP и настраиваем следующим образом: Обратите внимание, что версия php у вас может отличаться. При необходимости, можно эту версию изменить на нужную, но этот вопрос выходит за рамки данной статьи. После сохранения настроек будет работать почти всё, что и раньше. Если в настройках OpenCart отключены ЧПУ ссылки, то всё будет работать, как и работало до переключения режима работы. Теперь можно приступать к непосредственной настройке самого конфигурационного файла nginx для текущего сайта. Для этого в списке www доменов находим нужный нам и нажимаем справа на иконку с тремя точками. В выпадающем меню выбираем пункт "Конфиг": Вот примерный конфигурационный файл, который будет создан у вас по умолчанию: В конфигурации у вас будет две секции server, если у вас включено защищённое соединение SSL (и оно должно быть обязательно включено). Если у вас включен принудительный редирект с http на https, то можно редактировать только секцию server для https. Определить её легко: в самом начале есть параметр с указанием сертификата ssl_certificate. Также в этой секции указан параметр listen с указанием порта 443: listen 8.8.8.8:443 ssl Но лучше делать настройки сразу в двух секциях server, чтобы не допустить механической ошибки. На данный момент нас интересует вот эта часть конфигурационного файла: location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @php; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { expires 365d; } } Все дальнейшие изменения мы будем вносить внутри этой секции "location /". В первую очередь нам не хватает вот такой директивы: if (!-e $request_filename){ rewrite ^/(.+)$ /index.php?_route_=$1 last; } Данное условие очень простое: если сервер не может найти файл по указанному в запросе пути, то запрос будет переписан на вызов index.php, а в параметр _route_ будет передан запрашиваемый путь. Именно это и позволит корректно отрабатывать всем ЧПУ ссылкам движка. Это правило является аналогом записи в файле htaccess: RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] На этом можно было бы и закончить, но стоит внести ещё некоторые изменения для улучшения безопасности. Рассмотрим более внимательно вот эту секцию: location ~ [^/]\.ph(p\d*|tml)$ { Тут отбираются все все подходящие динамические файлы с типами .php (в том числе с числами в окончании) и .phtml Но у движка OpenCart в штатном режиме есть всего две точки входа для вызова php файлов через web окружение - это index.php и admin/index.php Есть ещё install/index.php, но она используется только при установке движка. Учитывая данные обстоятельства, логично запретить прямое выполнение всех остальных php скриптов через web окружение, кроме указанных администратором. Сделать это можно следующим образом: location ~ ^/(index|admin/index|install/index)\.php { try_files /does_not_exists @php; } В скобках через разделитель "|" указываем все php скрипты, которые можно выполнять. После завершения установки можно будет сократить это список до такого: (index|admin/index) ВНИМАНИЕ!!! Очень важный момент! После того, как убрали вызов интерпретатора php для всех файлов, кроме указанных, при попытке запроса любого другого php файла он будет отдан как обычный текстовый файл. И при запросе https://test.ru/config.php любой желающий сможет получить содержимое вашего конфигурационного файла, где содержится доступ к БД. Поэтому нам обязательно нужно запретить доступ для всех остальных файлов с расширением php. Ну и заодно к другим типам файлов, которые не стоит отдавать по запросу извне. Сделать это можно простым правилом: location ~* \.(php|log|tpl|txt|twig|xml|ini)$ { deny all; } В скобках через разделитель "|" указываем все расширения файлов, которые мы хотим запретить. Но у нас есть несколько важных файлов, которые пока попали под запрет, например: robots.txt и sitemap.xml. Этот вопрос мы решим чуть позже. А сейчас ещё немного запретов. Запретим открывать файлы, которые начинаются с точки, а также все файлы в папке system: location ~ /\. { deny all; } location ~ ^/system/ { deny all; } Этих запретов вполне достаточно, чтобы сделать невозможным выполнение каких-либо несанкционированных скриптов. А также просмотр логов, текстовых и xml файлов. Теперь нам необходимо открыть доступ к файлу robots.txt, для этого нам нужно такое правило: location = /robots.txt { allow all; } Также пропишем разрешение на открытие sitemap.xml и rewrite правило: location = /sitemap.xml { allow all; rewrite ^/(.*)$ /index.php?route=extension/feed/google_sitemap last; } Если вы используете сторонний модуль сайтмапа, то нужно указать соответствующий route для данного модуля. Если у вас несколько файлов sitemap или вы используете фиды для выгрузки данных, то просто пропишите для них права по аналогии. В итоге мы должны получить вот такую секцию location: Этих настроек достаточно для корректной работы движка OpenCart. И при этом данная конфигурация является безопасной с точки зрения выполнения несанкционированных скриптов php через web окружение. После всех настроек обязательно проверьте правильность работы, сделав запросы по указанному чек-листу (test.ru замените на адрес вашего сайта): https://test.ru/config.php https://test.ru/admin/config.php https://test.ru/admin/1.php https://test.ru/admin/1.txt https://test.ru/admin/1.log https://test.ru/admin/1.xml https://test.ru/system/modification.xml Для всех этих ссылок вы должны получить ошибку "403 Forbidden", вне зависимости от того, есть файл по указанному пути на сервере, или нет. Также проверяем белый список: https://test.ru/robots.txt https://test.ru/sitemap.xml Эти файлы не должны вызывать ошибок и вы должны корректно получать их содержимое. Дополнительно стоит проверить все ваши дополнительные сайтмапы или фиды, если вы их добавляли. Ещё раз повторюсь, что данная настройка является базовой, с небольшими правилами для улучшения безопасности. Но даже уже при такой настройке вы в среднем получите выигрыш 100-200ms для параметра TTFB, по сравнению с остальными режимами работы.
    11 баллов
  2. Для различных типов товаров часто возникает необходимость вывести товары в рекомендуемые автоматически, по определённому критерию. Нередко товары группируются по коллекциям, но штатными средствами OpenCart нет возможности их корректно объединить и добавить автоматически друг к другу как рекомендуемые товары. Эта небольшая доработка позволяет без дополнительных модулей реализовать вывод товаров коллекции в рекомендуемые автоматически, и избавляет вас от необходимости добавлять каждый товар друг к другу вручную. Данная доработка не затрагивает шаблоны, поэтому подходит для любой версии движка и сборки. Для примера рассматривается вариант объединения в коллекции по совпадению поля EAN. По принципу - если поле EAN не пустое, то выводим такие товары в рекомендуемые. В файле catalog/controller/product/product.php Находим строку: $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); И заменяем её на это: $results = $this->model_catalog_product->getProductRelatedCollection($product_info); В файле catalog/model/catalog/product.php Перед строкой: public function getProductRelated($product_id) { Добавляем: public function getProductRelatedCollection($product) { // Поле товара, по которому идёт выборка коллекции $collection_field = 'ean'; $product_data = array(); if (!empty($product[$collection_field])) { $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE product_id != '" . (int)$product['product_id'] . "' AND status = '1' AND `" . $this->db->escape($collection_field) . "` LIKE '" . $this->db->escape($product[$collection_field]) . "' ORDER BY sort_order"); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Если нужно выбирать товары только того же производителя, то функция должна выглядеть так: public function getProductRelatedCollection($product) { // Поле товара, по которому идёт выборка коллекции $collection_field = 'ean'; $product_data = array(); if (!empty($product[$collection_field])) { $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE product_id != '" . (int)$product['product_id'] . "' AND status = '1' AND manufacturer_id = '" . (int)$product['manufacturer_id'] . "' AND `" . $this->db->escape($collection_field) . "` LIKE '" . $this->db->escape($product[$collection_field]) . "' ORDER BY sort_order"); foreach ($query->rows as $result) { $product_data[$result['product_id']] = $this->getProduct($result['product_id']); } } return $product_data; } Если у вас много товаров, то стоит зайти в phpMyAdmin и добавить индекс для поля EAN. Это ускорит выборку товаров для коллекции. Добавить индекс можно таким запросом: ALTER TABLE `oc_product` ADD INDEX `ean` (`ean`) Обратите внимание на префикс 'oc_', он у вас может отличаться или отсутствовать.
    10 баллов
  3. Модификатор добавляет поддержку префиксов «catalog» и «product» в ссылках для страниц категорий и товаров. Работает на OpenCart/OcStore 2.x/3.x, поддерживаются SEO_URL/SEO_PRO. SQL запрос для добавления префиксов находится в XML файле. Распространяется as is. product_and_category_prefix_v1.1_oc_v2.x.ocmod.zipproduct_and_category_prefix_v1.1_oc_v3.x.ocmod.zip Изменения в версиях: 1.1 Убрал префикс category для товаров с категориями 1.0 initial
    7 баллов
  4. Всем привет, дорогие друзья. В этой обновляемой статье я буду выкладывать скрипты для ускорения проведения работ с OpenCart. Скрипты предназначены больше для разработчиков, чем для пользователей. В большинство скриптов встроена авторизация, пароль и другие настройки находятся в начале файла. Log Shortener — скрипт для работы с большими логами ошибок формата OpenCart. DomStats — Скрипт для анализа DOM структуры страницы. Показывает структуру в виде дерева. Modification Editor — Редактор модификаций. PHP Bash — доступ к терминалу средствами PHP. Scan — сканирование изменений в файлах. Показывает новые, измененные, удаленные файлы.
    6 баллов
  5. Всем привет, дорогие друзья! Статья предназначена для разработчиков дополнений. Пишу без воды, сухо и по делу. Немного истории, нюансов, список аргументов для обработчиков событий, также приведу пример простой и понятной реализации большого кол-ва событий в ваших дополнениях для OpenCart 2.3, 3.x, 4.x (скачать примеры модулей можно будет в конце статьи). Как все начиналось Для изменения кодовой базы движка нам всегда нужно было либо вмешиваться в код, либо использовать vqmod. Использование vqmod порождало проблемы при работе нескольких модификаторов с одним участком кода, а также другие, касающиеся поддержки дополнений. Использование хуков помогло бы решить часть из них. Вспоминаю первую, известную мне реализацию «Override Engine» (2012 г), а также тему «hook pre render Идея и примерная реализация«. Начиная с версии 2.0 (2014 г) в движке появился первый встроенный механизм событий (хуков), а концепция vqmod была реализована в самом движке и получила название ocmod. С версии 2.2 (2016 г) в событиях изменились пути триггеров, они стали аналогичны роутам. В версии 3.x (2017 г) механизм событий и ocmod обошлись без существенных изменений. А с версии 4.x поддержки ocmod больше не будет. «Embrace, extend and extinguish«. Однако, у нас всегда будет vqmod. Зачем нужны события? События позволяют запускать пользовательские функции до/после вызова какой-либо функции в парадигме MVCL+Config+Library для изменения входных/выходных данных. По задумке мэйнтэйнера движка они должны заменить vqmod/ocmod. P.S. Я уже переписал некоторые старые модули с использованием событий. Например, раньше модуль «Персонализованные шаблоны» с помощью ocmod внедрялся в код основных разделов каталога и подменял их шаблоны, а теперь его брат «Custom templates Pro» подменять любой шаблон в движке. Так что события очень хорошо решают некоторые типы задач. Нюансы при использовании событий События могут быть добавлены только из контроллеров админки. Удобнее всего делать это при установке модуля, в функции install. Пути всех триггеров начинаются с названия нужного раздела, admin, catalog или library. Разделы admin и catalog содержат controller, view, language и config. В путях триггеров можно использовать знак «*», чтобы назначать триггеры по маске. Например, catalog/view/*/template/common/header/after. Для изменения данных в обработчиках событий config и language используйте $this->config->set(), $this->language->set(), соответственно. Данные полученные из обработчиков событий можно сохранять внутри класса и использовать их в других обработчиках, которые запускаются позднее. Для редактирования событий из админки используйте «Event Manager» или adminer ([сtrl+click], для быстрого редактирования записи). Нюансы для разных версий движка Код события для версии 2.3 должен иметь длину не более 32 символов. Для версий 3.x и 4.x не более 64. В версии 2.3 событиями (регистрация, удаление и т.д.) занимается модель extension/event, у 3.x и 4.x setting/event. В версии 2.3 в разделе catalog пути триггеров представлений (view) before/after будут отличаться. Например, catalog/view/common/header/before, catalog/view/default/template/common/header/after. Это связано использованием шаблонов оформления в разделе catalog. С версии 3.x добавлен порядок сортировки событий. С версии 4.x у каждого события должен быть description. Триггеры для библиотек (library) доступны только с версии 4.x. Передаваемые аргументы В обработчики событий аргументы передаются по ссылке. Т.е. можно менять значения аргументов не заботясь о передаче результата куда-либо еще. 2.3 controller model view language config before $route, $data $route, $args $route, $data, $output $route $route after $route, $data, $output $route, $args, $output $route, $data, $output $route, $output $route 3.x controller model view language config before $route, $args $route, $args $route, $data, $code $route, $key $route after $route, $data, $output $route, $args, $output $route, $data, $output $route, $key, $output $route 4.x controller model view language config library before $route, $args $route, $args $route, $data, $code $route, $prefix, $code $route $route, $args after $route, $data, $output $route, $args, $output $route, $data, $output $route, $prefix, $code, $data $route, $data $route, $args Возвращаемые значения Помимо изменения данных через аргументы, обработчики событий также могут возвращать значения, используя return. Например, если обработчик события controller/common/home/before вернет через return сгенерированный html код, то весь вывод контроллера common/header будет заменен им, а сам контроллер common/header не будет выполнен, но запустится событие after. Т.е. можно подменять данные выполнения функций без их выполнения. 2.3 controller model view before mixed mixed string after mixed mixed string 3.x controller model view before mixed mixed string after mixed mixed string 4.x controller model view before mixed after mixed Простая и понятная реализация <?php class ControllerExtensionModuleSample extends Controller { public function install() { $this->checkEvent(); } public function uninstall() { $this->removeEvent(); } public function index() { # code } private $_events = [ [ 'code' => 'sample_394beb748918d3ce260756703', 'trigger' => 'admin/controller/design/layout/before', 'action' => '/eventControllerDesignLayoutBefore' ], [ 'code' => 'sample_7a2b613ccb07a2c0e9c8cb844', 'trigger' => 'admin/view/design/layout_list/after', 'action' => '/eventViewDesignLayoutListAfter' ], [ 'code' => 'sample_968b25d7939ec60e0008d670c', 'trigger' => 'admin/model/design/layout/getLayouts/after', 'action' => '/eventModelDesignLayoutGetLayoutsAfter' ], [ 'code' => 'sample_172e1deab50793d6c4bec3b42', 'trigger' => 'catalog/model/design/layout/getLayoutModules/after', 'action' => '/filter' ] ]; public function eventControllerDesignLayoutBefore(&$route, &$args) { # code } public function eventViewDesignLayoutListAfter(&$route, &$data, &$output) { # code } public function eventModelDesignLayoutgetLayoutsAfter(&$route, &$args, &$output) { # code } private function checkEvent() { $this->load->model('extension/event'); foreach($this->_events as $event) { if(!$result = $this->model_extension_event->getEvent($event['code'], $event['trigger'], 'extension/module/sample' . $event['action'])) { $this->model_extension_event->addEvent($event['code'], $event['trigger'], 'extension/module/sample' . $event['action']); } } } private function removeEvent() { $this->load->model('extension/event'); foreach($this->_events as $event) { $this->model_extension_event->deleteEvent($event['code']); } } } Примеры 2.3 sample_2.3.ocmod.zip 3.x sample_3.x.ocmod.zip 4.x sample.ocmod.zip
    6 баллов
  6. При покупке товаров в интернет-магазинах, большинство клиентов изучают товар более подробно, просматривая характеристики и описание, пролистывая при этом карточку товара. И когда после изучения всех необходимых подробностей клиент готов купить товар, кнопка покупки уже находится далеко за пределами экрана, что заставляет совершать покупателя дополнительные действия по поиску данной кнопки, чтобы иметь возможность добавить товар в корзину. Эту задачу своим клиентам вы можете упростить, сделав на странице товара небольшую прилипающую панель с названием товара, ценой и кнопкой добавления в корзину, которая будет появляться при исчезновении стационарной кнопки покупки за пределами экрана. Данное нововведение вполне может повлиять на конверсию для вашего интернет-магазина на OpenCart, конечно же, в сторону её увеличения. Посмотреть готовый пример такой реализации можно по ссылке. Как только кнопка покупки уходит за верхнюю границу экрана, внизу показывается прилипающая панель с необходимыми данными. В данной статье будут описаны основные шаги по созданию такого функционала своими руками. Ссылку на готовый пример в виде модуля для OpenCart3 вы сможете найти в конце статьи. При желании, адаптировать модификатор для других версий OpenCart не составит особого труда. Приступим к созданию. Для начала в файле шаблона catalog/view/theme/default/template/product/product.twig добавим сразу после строки: {{ header }} HTML блок со всеми необходимыми нам данными: <div class="psp-wrap" id="product-sticky-panel"> <div class="container"> <div class="psp-content"> ... </div> </div> </div> Код сокращён для наглядности. Полный исходный код можно посмотреть по ссылке в конце статьи. Теперь нам нужно добавить необходимые стили. Для начала сделаем нашу панель прилипающей. Для этого будем использовать position: sticky (заодно пропишем нужные правила для позиционирования нашей панели) .psp-wrap { position: sticky; top: 0; left: 0; right: 0; z-index: 999; } С такими стилями наша панель будет отображаться всегда, а при скроле будет прилипать к верху экрана. Такая реализация не совсем подходит для поставленной цели. Поэтому скроем нашу панель по умолчанию: .psp-wrap:not(.active) { display: none; } !ВНИМАНИЕ! В исходном коде модуля-примера все стили помещаются в <head> страницы. Если стили будут переноситься в css файл, то стиль скрытия надо обязательно оставить в секции <head>, иначе наша панель будет видна, пока не подгрузится файл стилей, а это увеличит совокупное смещение макета (CLS), что соответственно снизит оценку PageSpeed. Теперь наша панель скрыта. Дело остаётся за небольшим скриптом, который добавит нужный класс active для нашей панели в от момент, когда кнопка покупки спрячется за верхней границей экрана. Задача довольно простая, поэтому её лучше решить без использования jQuery. Для данной задачи нам также не нужно активное отслеживание событий onscroll, поэтому здесь как нельзя лучше подойдёт Intersection Observer API. Подробный разбор скрипта в этой статье не приводится, т.к. в интернете хватает документации и примеров по использованию данного API. Действия по отслеживанию будут выполняться вот таким скриптом: document.addEventListener('DOMContentLoaded', () => { let target = document.querySelector('#button-cart'); let psp = document.querySelector('#product-sticky-panel'); target && psp && new IntersectionObserver(([e]) => psp.classList.toggle('active', e.boundingClientRect.y < 0), { threshold:1.0 }).observe(target); }); Полный код этой несложной модификации можно скачать вот тут:
    6 баллов
  7. Введение В данной статье содержится пошаговая инструкция для чистой установки OpenCart 3 club edition. Будет использоваться vps/vds хостинг с панелью ISPmanager. Это одна из самых распространённых панелей управления для веб‑серверов. Добавляем новый сайт в панели ISPmanager Заполняем следующие поля: 1) Доменное имя 2) Режим работы PHP и версию PHP (В данном случае сразу выбран предпочтительный режим Nginx + PHP-FPM) 3) Выбираем "Создать новую базу" 4) Указываем имя новой БД и пользователя 5) Генерируем пароль Сразу сохраните себе данные подключения к БД: Имя базы, логин пользователя и пароль. Эти данные нам понадобятся при установке. После этого нажимаем кнопку "Создать". Следующим шагом будет предложено выпустить бесплатный Let’s Encrypt SSL-сертификат. На данном шаге можно ничего не менять и нажать "Выпустить". При необходимости, можно будет изменить SSL-сертификат сайта позже. Теперь ваш сайт уже будет доступен, хоть он ещё и пустой. Копируем дистрибутив OpenCart 3 club edition на сервер Скопировать файлы дистрибутива на сервер можно через любой ftp клиент. Но для этого нужно настроить в панели ftp доступ. Чтобы не усложнять и не увеличивать объём материала, в данной статье мы рассмотрим вариант загрузки файлов на сервер средствами панели ISPmanager. В первую очередь, чтобы избежать частой ошибки с правами доступа к файлам, нам лучше войти под пользователем www-root перед заливкой файлов. Для этого идём в раздел "Пользователи". Выбираем пользователя "www-root" и нажимаем кнопку "Войти под пользователем". В правом верхнем углу мы будем видеть текущего пользователя "www-root". При необходимости, мы можем кликнуть на имени пользователя и выбрать "Вернуться в root". Для заливки дистрибутива OpenCart на сервер нам нужно перейти в раздел "Менеджер файлов". В менеджере файлов переходим в папку "www" двойным кликом мышки по выделенной области. Там мы увидим уже созданную папку с названием домена вашего сайта. В примере это "mysite.ru". Заходим в эту папку и приступаем к заливке дистрибутива OpenCart 3 club edition на сервер. Для этого нажимаем кнопку "Загрузить" Дальше нажимаем "Выберите файл" и указываем путь к архиву дистрибутива. Актуальную версию сборки OpenCart 3 club edition можно скачать [тут]. После выбора пути к архиву нажимаем кнопку "Загрузить". После завершения загрузки получаем следующую картину: Теперь нам необходимо распаковать архив в текущую папку. Для этого выделяем загруженный архив. Далее кликаем на меню "Архив" и нажимаем "Извлечь". На следующем шаге нам ничего не нужно менять. Просто нажимаем кнопку "Распаковать". После распаковки мы получим следующую картину: В данной ситуации есть очень неудобный момент, что все нужные нам файлы дистрибутива лежат в папке upload, а все лежащие в корневой папке файлы нам не нужны. Если вы опытный пользователь ПК, то вы можете перепаковать архив у себя на компьютере и залить на хостинг архив только с содержимым папки upload. Но, для примера, рассмотрим вариант, как решить данный вопрос без перепаковки архива на локальном компьютере. Это также поможет вам немного улучшить навыки работы в панели управления ISPmanager. Для начала нам необходимо удалить всё ненужное в корневой папке, кроме папки upload. Для этого выделяем всё ненужное, потом нажимаем на меню "Редактировать", и "Удалить". Потом подтверждаем удаление во всплывающем диалоге. Дальше заходим в папку upload (два раза кликнув мышкой на названии папки). Выбираем всё содержимое папки и нажимаем кнопку "Копировать". Теперь очень внимательно выполняем последовательность действий: выбрать корневую папку с сайтом (она будет подсвечена) поставить галочку "Перенести файлы" поставить галочку "Перейти в выбранный каталог" нажать кнопку "Копировать" Осталось сделать небольшие шаги, и можно будет приступать непосредственно к установке OpenCart 3 club edition. Нам нужно удалить теперь уже пустой каталог upload. Выделяем его и удаляем способом, описанным выше. Далее нам необходимо переименовать два конфигурационых файла. Меняем название файла "config-dist.php" на "config.php". И повторяем то же самое с файлом "config-dist.php" в папке "admin". Для этого можно при наведении словить иконку карандаша и кликнуть для изменения имени. Можно изменить имя и другим способом, чтобы не ловить небольшую иконку мышкой. Выделяем файл "config-dist.php", кликаем на меню "Редактировать" и выбираем "Атрибуты". В поле "Имя" меняем имя файла на "config.php" и жмём кнопку "Сохранить". В итоге мы получаем такой список файлов: Далее заходим в папку "admin" и повторяем смену названия для файла "config-dist.php" в этой папке. После этого содержимое папки "admin" должно выглядеть так: Финиш Всё. На этом все наши действия в панели управления выполнены. Для начала установки переходим на наш сайт "http://mysite.ru/" и выполняем установку OpenCart 3 club edition. В следующей статье будет рассмотрен процесс непосредственно установки самой CMS. Очень полезная рекомендация: Не оставляйте на ftp ненужные файлы, бекапы, архивы с дистрибутивами и прочее. Держите файлы вашего сайта в чистоте и порядке, чтобы избежать ненужных проблем в будущем.
    5 баллов
  8. В статье представлено описание алгоритма/подхода для очистки от вирусов сайта на OpenCart. Эта статья рекомендована для технически подкованных пользователей, которые хорошо понимают код, а так же способны сами искать и применять широкий ассортимент ПО для решения задач. Если у вас другая CMS/фреймворк, все равно рекомендую ознакомиться, возможно, будет полезно. От автора Если вам нужно очистить сайт от вирусов с гарантией: Краткий алгоритм Делаем бекап сайта; чистим его на локальной машине; меняем все возможные пароли; удаляем файлы и бд с сервера; заливаем обратно очищенные копии файлов и БД; На случай если мы что-то пропустили, то нужно организовать наблюдение: Устанавливаем наблюдение за изменениями в файлах и включаем логи, если они были отключены; если что-то произойдет, то это будет отражено в логах и Вам останется только закрыть пропущенную уязвимость; продолжать наблюдение. Рекомендуемый период наблюдения — 3-4 недели. Подробное описание Подготовка к работе Скачайте файлы сайта и БД на локальный компьютер. Быстрее всего это сделать одним файлом (zip архив). Можно не скачивать папку «image» т.к. она имеет большой размер и там нет исполняемых файлов. Позже это нужно будет проверить (перед загрузкой очищенной копии сайта). Используя OpenServer/WAMP/LAMP или тот же хостинг, создаем новую базу данных и импортируем дамп базы вашего сайта. Разархивируйте файлы в удобную для работы папку. Работа с базой данных Находим таблицу oc_user и удаляем всех пользователей, кроме администратора. Никнейм администратора рекомендую переименовать, это защитит учетку от случайного перебора паролей. Следует изменить пароль администратора. В таблице oc_user, в поле password вставьте md5 хеш пароля, очистите поле salt. На этом все, пароль изменен. Перейдите в таблицу oc_modification, в ней хранятся модификаторы модулей. Проверьте код модификаторов на предмет уязвимостей. С 2020 года некоторые ботнеты используют модификатор заточенный под OpenCart — reverse shell. Работа с файлами В качестве подготовительных работ рекомендую удалить лишний мусор вроде phpinfo, кэш, логи. У OpenCart это так же неиспользуемые темы (кроме default), языки и модифицированные файлы (system/storage/modification). Проверьте файлы на наличие в них вредоносного кода. Для этого можно использовать ai-bolit (revisium), ShellDetector, LMD, антивирусы для ПК и любые другие средства. Ну а вообще для приложений с единой точкой входа, таких как OpenCart, следует искать дополнительные точки входа в приложение (места передачи скрипту инструкций, через $_POST, $_GET, $_COOKIE и т.д.) а так же попытки их обфускации (сокрытия). Если вы просматриваете весь код, то ускорить этот процесс поможет ускорить GIT или Beyond Compare. Они покажут вам новые и измененные файлы, сравнив ваш сайт с оригинальной версией движка. Анализ access логов сервера так же позволит найти инфицированные файлы. Следует искать прямые вызовы файлов. После очистки создайте zip архив с очищенными файлами сайта. Работы на сервере Поставьте заглушку с кодом 503 Service Unvaliable и оставьте доступ только для своего IP адреса, чтобы предотвратить доступ к сайту извне. С такой заглушкой поисковые боты зайдут на сайт позже и вы не потеряете позиции в поисковой выдаче. Смените все возможные пароли — Панель управления, База данных, FTP пользователи, почтовые аккаунты. Удалите старую базу данных и импортируйте очищенную копию. Удалите все файлы сайта с хостинга, кроме папки «image» и заглушки. Из папки image стоит удалить все что не является изображениями, т.е. все исполняемые файлы, их там быть не должно. Загрузите очищенные копии файлов на сервер и обновите пароли в конфиг файлах. Перейдите в раздел администратора магазина и обновите модификаторы. Защитите админку от перебора и излишнего любопытства, добавив дополнительную HTTP авторизацию. Включите логирование запросов, если оно было отключено. Установите наблюдение за изменениями в файлах. Если вы что-то пропустили при очистке, то это будет отражено в логах или в изменениях файлов. По логам можно будет вычислить источник повторного заражения и закрыть уязвимость. Современные ботнеты детектируют удаление своих файлов и перестают «стучаться», чтобы не выдавать расположение всех созданных ими файлов. Они бездействуют несколько дней или недель и стучаться снова. Если какой-то инфицированный код остался, то сайт будет заражен снова. Поэтому период наблюдения стоит увеличить до максимального. Общие рекомендации Не используйте варезные модули; Используйте сложные пароли. Не придумывайте их сами, используйте генераторы; Не используйте имена по-умолчанию, такие, как admin, переименуйте их; Заведите отдельные аккаунты (FTP/админка) для подрядчиков (фрилансеров), по окончании работ отключайте их; Следите за изменениями в файлах; Используйте резервное копирование; Рекомендуемые модули
    4 балла
  9. Года полтора назад озадачился поиском удобной, легкой и бесплатной панели для управлением своего сервера дабы не лазеть лишний раз в консоль плюс клиенты тоже могли бы иметь доступ к базовым настройкам если понадобится. Пересмотрев всякие BrainyCP, aaPanel, VestaCP и тп на мой взгляд они были либо перегруженные, либо их недолюбили и они находятся в непонятном состоянии, что проще вообще без панели работать. Но в один момент нашел панель HestiaCP которая является ответвлением от VestaCP. Демо понравилось, приятный и минималистичный интерфейс, неплохое количество участников на гитхабе и дружелюбный форум. Использую больше года и пока не разочаровался. Из удобств: Доступ по SFTP/FTP, создание мультиаккаунтов 2 Фактораня авторизация Мулти php Годные шаблоны настроек Nginx под разные cms Доступ по SSH Простое развертывание баз данных (PostgreSQL, MySQL 8, MariaDB 10.11) + PhpMyAdmin Резервное копирование как локальное так и удаленное Настройка лимитов для пользователей Выпуск сертификата Let’s Encrypt одной кнопкой или вставкой купленного Работа с DNS записями Возможность организовать полностью свой почтовый сервер Удобный файловый менеджер Из минусов, нет такого количества модулей как в aaPanel или ISPmanager и тот же ioncube придется поставить руками, но и этот процесс упростили за последнее время До начала установки вам понадобиться GIT, тк в моем примере я использую консоль Git BASH, впрочем можно использовать веб версию консоли у хостера. В качестве хостера я выбрал 2 наиболее оптимальных вариантов: Таймвеб если ваш проект в РФ и вам нужны все закрывающие доки и вы не хотите заморачиваться с оплатой зарубежных вариантов, мучиться с почтой. Хецнер если нет проблем с оплатой за пределами РФ и ваш проект ближе по локациям к их серверам. Но у хецнера и других не дорогих зарубежных хостингов будет заблокирован 25/465 порт для отправки почты новорегов, а где-то совсем и вам придется использовать 585 порт через SMTP reley который к счастью поддерживает наша панель. По хецнеру в доке написано, что можно попросить через месяц разблокировать, по факту мне разблокировали месяца через 3-4 (разблокировать раньше не помогали даже скрины с DNS записями о том, что моя почта ходит через SMTP mail.ru) у таймвеба такой проблемы нет, просто пишите в саппорт и вам разблокируют. Регистрируемся на timeweb.cloud (+300 рублей по ссылке), переходим в облачные сервера, выбираем ОС Ubuntu последней версии, максимально близкий ваш регион. Для большинства среднестатистических магазинов подойдет такая конфигурация: Но не меньше, если это только не тестовый сервер. Если будет мало в любой момент можно сделать апскейл на большей тариф, но назад перейти уже так не получиться. Допы на ваше усмотрение, в принципе бэкапы делает панель их можно хранить локально и скачивать периодически или сливать на удаленный FTP Дальше для добавления SSH ключа нужно его сгенерировать, можно добавить и позже, но удобнее сразу: Запускаем Bash и вводим команду: ssh-keygen -t rsa -b 4096 -C "ваша_почта" -f ~/.ssh/имя-проекта_rsa В папке C:\Users\текущий-пользователь\.ssh У вас появится 2 файла имя-проекта_rsa (закрытый ключ) и имя-проекта_rsa.pub (открытый ключ).Открываем последний любым текстовым редактором и копируем содержимое сюда: Все после чего вам приходит уведомление на почту с адресом сервера и стандартным именем суперпользователя для входа в систему под которым будем делать первоначальные настройки: Теперь переходим в настройки и копируем пароль для root: Такой же аналог на Хецнер (+20 евро по ссылки после регистрации): Добавить/удалить ключ можно будет и тут: Получилась такая красота: Тут пароль для root пользователя приходит сразу на почту: Если что, его всегда можно скинуть тут: Погнали настраивать, открываем наш bash: Вводим команду: ssh root@ip-адрес-нашего-сервера и пароль Все мы внутри, видно, что ресурсов задействовано совсем не много Создаем нового пользователя, командой: adduser new_user Добавляем пароль, а остальные данные по желанию Добавляем пользователя в группу администраторов: usermod -aG sudo new_user Запускаем поиск обновлений и одновременную их установку командой: apt update && apt upgrade Ставим sudo который позволит работать с правами администратора: apt install sudo Перезагружаем сервер: shutdown -r now Далее будем заходить только под логином созданного пользователя, те в bash для доступа к серверу нужно будет написать: ssh new_user@ip-адрес-вашего-сервера Ставим утилиту htop командой: sudo apt install htop Теперь запустив команду: sudo htop и можно посмотреть запущенные процессы, занятые ресурсы в удобном виде: Ставим файловый менеджер Midnight Commander: sudo apt install mc Запустим mc и получим удобную визуальную навигацию, чтобы получить доступ к редактированию системных папок и файлов нужно запускать утилиту с правами администратора: sudo mc После запуска переходим в папку /etc/ssh/ ищем файл sshd_config, нажимаем F4 и при первом запуске mc спросит какой редактор выбрать по умолчанию: Выбирайте либо nano (1) либо встроенный mcedit (3), про vim лучше сначала почитать или посмотреть пару видосов) Ищем в файле строчку: PermitRootLogin yes и меняем значение на no: дальше ищем строчку: PasswordAuthentication yes и делаем тоже самое: Жмем F2 для сохранения если использовали mcedit или CTRL+O с перезаписью если вы использовали nano и CTR+X для выхода из редактора Перезагружаем сервис SSH: sudo service ssh restart sudo systemctl restart ssh Для более комфортной работы можно прописать алиасы для SSH ключей и не держать ip адрес сервера в голове, создадим в папке с ssh ключами файл config, откроем его и пропишем: Host nash_sasait (удобное имя) HostName 0.0.0.0 (ip адрес вашего сервера) IdentityFile ~/.ssh/имя-проекта_rsa (имя закрытого SSH ключа) User new_user (имя пользователя) Port 22 теперь открыв bash вам достаточно ввести команду: ssh nash_sasait Таких настроек можно делать сколько угодно Если сервер брали на хецнере, возможно захочется установить другое удобное локальное время, делается командой: sudo dpkg-reconfigure tzdata Для установки приятного глазу имя хоста, а не вот типо этого: воспользуемся командой: sudo hostnamectl set-hostname ваше-красивое-имя Посмотрим статус: sudo hostnamectl status (должно быть видно, что имя изменилось, после перезагрузки увидите изменения и в командной строке) Переходим по ссылке и начинаем ставить панель. В принципе сейчас настройки по умолчанию можно оставлять, заполнив только: почту пароль админа домен (в качестве домена я использую поддомен вида cp.основной домен, но вы можете использовать любой другой технический домен) порт который можете менять можете не менять как по мне кому припрет все равно просканирует и найдет Важно, если вы взяли сервер с 2 гб оперативы и не собираетесь использовать почтовый сервер, вы можете их отключить: clamav (антивирус который будет жрать больше 1,2 гб оперативы) spamassassin (антиспам) dovecot (IMAP и POP3-сервер) exim (почтовый агент) Можно все это отключить и позже) Копируем и поочередно вставляем команды в консоль с правами админа: Если все сделано верно, начнется установка: После установки ваша панель будет доступна по адресу: ip-вашего-сервера:8083 (или тот порт который вы указали при установке): Заходим внутрь панели и переходим на вкладку Web, жмем редактировать домен: Включаем 301 редирект и указываем в качестве адреса ваш ip-адрес-сервера:8083 Теперь не нужно держать в голове ip адрес, достаточно ввести имя поддомена и вы попадете в панель. но для этого еще нужно прописать А/АААA записи для поддомена В настройках вашей панели где находятся домены, впишите в A запись ip адрес v4, а в AAAA ip v6 (для основного домена у вас будут те же адреса, также не забудьте их прописать) Скопировать для таймвеба можно тут: У хецнера тут: Для добавления нового сайта вам необходимо создать нового пользователя, имя которого не должно быть равно имени пользователя сервера созданного ранее после создания можно либо выйти из панели и залогиниться под новым пользователем либо можно перемещаться между логинами тут: что удобно на период настроек Далее добавляем основной домен сайта: И переходим в настройку домена: Включаем поддержку SSL, если будем использовать бесплатный Let's Encrypt, то включаем первый чекбокс, если у нас платный сертификат или заглючил Let's Encrypt и забанил нас на время, то можно вставить другой сертификат в эти поля (как вариант бесплатный временный сертификат можно сгенерировать тут): Выбираем шаблон Nginx - opencart Версию php в зависимости от версии вашего движка, у меня старая поэтому 5.6 Ниже создаем нужное количество FTP аккаунтов, если расположении пути нужно поменять отличное от дефолтного, отжимаем чекбокс выше и выбираем удобное: Все, теперь можно подключиться по FTP и залить файлы движка: Настроим количество резервных копий, для этого перейдем в панель Пакеты под администратором: Индикатор максимальных доступных резервных копий: пакет system установлен для пользователя администратор по умолчанию, удалить и редактировать нельзя. Можно сделать копию и отредактировать ее и выбрать для администратора, но сейчас нам достаточно отредактировать пакет default который включен по умолчанию для всех остальных пользователей: Мне достаточно 2 локальных копий, также можно сделать настройки по умолчанию шаблона Nginx/php/ssh и прочие Доступные резервные копии можно скачать или развернуть перейдя на соответствующую вкладку под нужным пользователем: Важно, архивы по умолчанию будут запакованы методом zstd, для распаковки нужно отдельный плагин для 7zip или такой архиватор скачать, но можно и включить метод сжатия gzip, для настройки нужно перейти в настройки панели под админом: Если вы заметите, что резервные копии перестали создаваться, то скорее всего у вас недостаточно свободного места на диске, тогда либо уменьшите количество резервных копий либо докупить свободное место, либо сливайте на внешней FTP. Например есть такой дешман вариант холодного хранилища от яндекса: Теперь перейдем опять в консоль и установим Ioncube без которого не будут работать платные модули: wget https://raw.githubusercontent.com/jaapmarcus/ioncube-hestia-installer/main/install_ioncube.sh chmod +x install_ioncube.sh ./install_ioncube.sh После посмотрим установленную версию php и загрузку ионкуба командой: php -v Важный момент версия ионкуба должна соответствовать используемой версии php Теперь создадим базу данных из под пользователя: Название базы данных, имя пользователя и пароль не забудьте сохранить, эти данные нужны будут при инсталяции движка. При установки cms из списка доступных приложений панели база данных будет создана автоматически (opencart там доступен только последней версии из официального репозитория, клубной сборки там конечно же не будет) Для запуска phpMyAdmin нужно отредактировать файл: sudo nano /etc/nginx/conf.d/ip-вашего-сервера.conf Заменив: location /phpmyadmin/ { alias /var/www/document_errors/; return 404; } location /phppgadmin/ { alias /var/www/document_errors/; return 404; } На: include /etc/nginx/conf.d/phpmyadmin.inc*; include /etc/nginx/conf.d/phppgadmin.inc*; У себя я просто закомментировал эти строки: Системная версия php должны быть выше версии 7.2.5 иначе получите такую ошибку: Системную версию php можно просмотреть, изменить и включить дополнительные версии в настройках панели тут: Если ниже и вам нужен доступ к базе данных то все манипуляции с базой данных можно сделать через внешнее подключение используя например такую утилиту, но придется еще поднастроить доступы, открываем в панели настройки файрвола: Жмем добавить правило: Добавляем доступ к порту 3306 (порт нашей базы данных), если в адресе оставить все нули, то доступ будет с любого ip адреса, безопаснее сделать доступ только с вашего выделенного ip Далее запускаем Bash и редактируем, файл: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf Ищем строку bind-address и указываем либо: bind-address = 0.0.0.0 для доступа с любого ip либо ваш статический ip адрес После создания базы данных можно открыть HeidiSQL и настроить новое подключение указав имя сервера, имя пользователя базы данных и пароль: Ну вот как бы и все, после того как залили файлы движка можно приступить к установке, также можно выполнить установку cms не только opencart из панели, но там доступна только последняя версия из официального репозитория, которая пока сырая, но тот же wordpress поставить не зазорно из панели, делается это через вкладку приложения в настройках вашего домена: Про дополнительную настройку лимитов php и почты наверное напишу отдельно, также саму панель теперь можно развернуть из маркетплейса таймвеба, но я не пробовал:
    2 балла
  10. очень давно делали этот модуль и не доделали... Все выбранные атрибуты создаются по большой кнопке можно указать вид фильтровки - Слайдер или Чекбокс можно назначить Категории Проверено на сайте с 100к номенклатуры и 500+ Характеристиками https://h5010.h5.ose.su/admin/index.php?route=extension/module/attr_to_filter filter filter на фронте всё стандартно, кроме ползунка цены. Если есть желающие - выдам наработки, тому кто захочет дорабатывать Фильтры.
    2 балла
  11. После перехода некоторых хостеров на Ioncube loader 12 с 10-й или 11-й версии начали появляться чудеса в виде ошибок, которых никогда не было ранее, А именно: PHP Warning: [obfuscated](): Null byte in regex in При том, что код абсолютно валидный. И никаких проблем на 10-й или 11-й версии ioncube loader не возникало на любой версии php от 5.6. до 7.4. Откуда же взялись нулевые байты в regex? Программистам может быть интересно. Исходный код: $pattern_for_tags = ''; echo "\nЭто тоже 000 pattern_for_tags\n"; echo $pattern_for_tags; элементарнейший код. Присвоили переменной пустую строку. И сразу же вывели ее. Ожидали, что будет выведена пустая строка. Т.е. на выходе не будет ничего. а вот, что имеем на выходе с ioncube loader 12-й версии: смотрим в браузере в "исходный код". php + ионкуб превратили пустую строку в последовательность шестнадцатеричных нулей. Чудеса? Нет, это баг. Т.е. ионкуб пихает в строки последовательности нулей. И это даже будет незаметно до поры, до времени. Т.к. браузер даже не чихнет на эти лишние нули, т.к. он их просто не отобразит. И вам будет казаться, что все работает. Но как только вы такую строку захотите использовать как паттерн для регулярного выражения, то php начинает ругаться на нули, т.к. они, действительно, там появились. И впихнул их именно ioncube loader 12-й версии по одному ему ведомой прихоти. И делает он это не закономерно, т.е. в начале кода эта строка будет обработана нормально, например, но в другом месте будут подставлены нули. Т.е. тут как повезет. Проблема к модулю не имеет никакого отношения. Я даже посмотрел исходник на PHP в hex формате. А не затесался ли там нечитаемый символ? Нет. Там четко есть пустая строка - это только кавычки, и больше ничего. Думаю, что в лоб это можно попробовать вылечить используя энкодер 12-й.
    2 балла
  12. Первоисточник статьи: Перенос сайта на другой хостинг: минимум простоя. Как тестировать сайт на новом хостинге, сохраняя доступность сайта в сети со старого? При переносе сайта от одного хостера к другому важно сперва убедиться, что на новом хостинге после копирования данных (файлов, баз данных) сайт работает, точнее, будет работать без проблем. И в случае обнаружения проблем хотелось бы чтобы была возможность их спокойно исправить. Как известно, сайт на новом хостинге будет доступен всем в сети после того как будут изменены соответствующие записи для домена у регистратора доменных имен. Речь идет о записях с типом NS (сервер имен), которые выглядят обычно как ns1.хостер.com и ns2.хостер.com. Итак, на новом хостинге у вашего сайта будет новый IP. Чтобы получить доступ к сайту на новом IP необходимо прописать в файл hosts (Если у вас Windows, то он находится в папке C:\Windows\System32\drivers\etc) следующие строки: XXX.XXX.XXX.XXX ваш_домен.com XXX.XXX.XXX.XXX www.ваш_домен.com Вместо XXX.XXX.XXX.XXX записываете IP вашего домена на новом хостинге. Вместо ваш_домен.com указываете ваш домен. Две строчки указаны потому, что домен один раз указывается без www, а второй - уже с www. Домен прописывается только латиницей, никакая кириллица недопустима даже если у вас кириллический домен. Для кириллических доменов нужно указать соответствующую домену кодированную запись. Учтите, что Windows не даст вам просто так отредактировать файл hosts. Поэтому самое простое - вы копируете файл из папки etc в другое место (например, на рабочий стол), открываете эту копию, редактируете, сохраняете, а далее эту копию помещаете в папку etc с заменой существующего файла. Также смотрите чтобы антивирус не удалил ваши изменения в файле hosts. Для просмотра сайта на новом хостинге рекомендуется браузер FireFox 65-й версии потому, что он позволяет принимать любые самоподписанные сертификаты. А самоподписанный сертификат необходим в случае если мы тестируем сайт на новом хостинге по протоколу https. Современные браузеры не всегда позволят принять любой самоподписанный сертификат, из соображений повышенной безопасности эта возможность может отсутствовать в современных браузерах. Если точнее, то ситуация зависит как от конкретного самоподписанного сертификата, так и от конкретного браузера конкретной версии. Если доступ к сайту осуществляется через https и включен для домена режим форсированного HTTPS (т.е. включена повышенная безопасность), то при использовании самоподписанного сертификата SSL (в целях тестирования и отладки сайта) вы не сможете подключиться к такому сайту в современных браузерах. Поэтому либо не используете в настройках сайта режим форсированного HTTPS (это настраивается в панели управления хостинга/сервера/VDS/VPS), либо если вы его используете, то тогда просматривайте сайт в более старом браузере (например, FireFox 65). Пример отключенного форсированного режима HTTPS для панели управления сервером aaPanel Linux. В современных браузерах вы получите сообщение о невозможности работы с сайтом, у которого сертификат SSL не является достоверным. Почему именно FF65: Необходимо чтобы в этом браузере не был включен режим проксирования или VPN, тначе фокус не сработает и вы будете попадать на сайт, расположенный на старом хостинге. Итак, открываете FireFox 65, открываете в нем новое приватное окно (чтобы избежать влияния кеширования браузера). Вводите в адресной строке адрес вашего сайта с указанием протокола https (если вы работаете с ним). Получаете предупреждение. Нажимаете "Дополнительно". Затем "Добавить исключение". Далее "Подтвердить исключение безопасности". Сайт откроется. В адресной строке замок будет с предупреждающим желтым треугольником с поясняющей надписью (если навести курсор). Может потребоваться перезагрузка страницы через CTRL+F5 чтобы очистить кеш при очередном посещении страниц. Нужно взять за правило, что при тестах нужно периодически перезагружать страницы через CTRL+F5 чтобы не мешал кеш браузера, иначе есть риск получить старую закешированную информацию. Если открыть инструменты браузера (F12 или Ctrl+Shift+I), то можно увидеть, что страница отдана с IP нового хостинга. Для этого в инструментах выбираете вкладку "Сеть", далее справа "HTML", далее кликаете на первой (или любой) строке, в которой есть название вашего домена. Появляется справа блок. Вас интересует вкладка "Заголовки". Там вы видите название вашего домена и IP, с которого загружен документ. Если вы видите новый IP, то вы открыли сайт на новом хостинге. Нужно учитывать, что теперь любой браузер, в котором вы будете открывать ваш сайт, будет отображать его с нового хостинга. Но это при условии, что у вас в браузере не включен VPN или какой-либо режим проксирования (proxy). Как теперь попасть на сайт, расположенный на старом хостинге? Т.е. на тот сайт, который доступен публично всем. Для этого нужно использовать второй браузер с включенным режимом VPN. Самое простое решение - это браузер Opera, он содержит уже встроенный VPN. ВАЖНО IMPORTANT С 17 июня 2021 на территории РФ браузер Opera перестал поддерживать VPN. Как альтернативу можете использовать VPN-плагин для браузера Chrome, их довольно много, например, Browsec. Но также можно поставить Opera определенной сборки, в которой не заблокирован VPN. Итак, вы сможете смотреть и управлять "старым" сайтом через Opera+VPN, а "новым" - через FireFox 65. Ссылки для скачивания FireFox 65 из официальных источников (соответственно версия 32 и 64 бит) : https://download-installer.cdn.mozilla.net/pub/firefox/releases/65.0.2/win32/ru/Firefox Setup 65.0.2.exe https://download-installer.cdn.mozilla.net/pub/firefox/releases/65.0.2/win64/ru/Firefox Setup 65.0.2.exe Можете при желании установить Portable версию. Про самоподписанный SSL сертификат, который необходим для тестов. Если вы пользуетесь панелью управления ISPmanager на новом хостинге, то можете выпустить для домена самоподписанный сертификат средствами панели управления. В других случаях сделайте сертификат самостоятельно. Можете для этого воспользоваться, например, каким-либо онлайн-сервисом выпуска самоподписанных сертификатов. На время переноса не включайте форсированное защищенное соединение, иначе получите сообщение о невозможности посетить сайт. Сайт имеет политику безопасности называемую Форсированное защищённое соединение HTTP (HSTS), что означает, что Firefox может подключиться к нему только через защищённое соединение. Вы не можете добавить исключение, чтобы посетить этот сайт.
    2 балла
  13. Упрощение управления вашим бизнесом с помощью Диспетчера YML/XML для поставщиков промышленного и складского оборудования В мире электронной коммерции ключевым моментом для успеха любого поставщика является эффективное управление информацией о продуктах. Это особенно важно для поставщиков промышленного и складского оборудования, чьи клиенты часто полагаются на точные и подробные данные о продукции перед принятием решения о покупке. В такой ситуации Диспетчер YML/XML становится незаменимым инструментом, который обеспечивает автоматизацию и стандартизацию процесса управления данными о продуктах. Что такое Диспетчер YML/XML? Диспетчер YML/XML - это модуль, разработанный специально для интернет-магазинов на платформах Opencart и ocStore. Он предоставляет возможность импортировать товары в ваш магазин, используя специальные ссылки на файлы в форматах YML/XML, предоставленные поставщиками товаров. Этот модуль обеспечивает удобство и гибкость, позволяя настраивать импорт товаров от разных поставщиков индивидуально под каждого из них. Преимущества Диспетчера YML/XM: Универсальность: Модуль поддерживает работу с различными поставщиками и форматами файлов (YML/XML), что позволяет вам легко интегрировать продукты от неограниченного количества поставщиков в ваш магазин. Гибкость настроек: Диспетчер YML/XML предоставляет возможность индивидуальной настройки импорта для каждого поставщика. Вы можете определять, какие поля данных импортировать, какие игнорировать, устанавливать цены, описания, характеристики товаров и многое другое. Обновление данных в режиме реального времени: Диспетчер YML/XML обеспечивает возможность регулярного обновления данных о товарах от поставщиков в режиме реального времени, что позволяет вашему магазину всегда оставаться актуальным. Пример использования Диспетчера YML/XML в интернет-магазине: Представим фирму "ПромТехно", которая специализируется на поставках промышленного оборудования для складов. Используя Диспетчер YML/XML, "ПромТехно" может легко управлять всем своим каталогом продукции, включая информацию о характеристиках продуктов, ценах, наличии на складе и фотографиях. Посмотреть пример использования Диспетчера YML/XML в деятельности поставщика промышленного и складского оборудования - https://h5012.h5.ose.su/index.php?route=product/category&path=1679 Далее эта информация автоматически обновляется на их сайте, а также на различных маркетплейсах, таких как Яндекс.Маркет, что позволяет им держать свой ассортимент актуальным и доступным для потенциальных клиентов. . Преимущества использования Диспетчера YML/XML для поставщиков промышленного и складского оборудования: Автоматизация процесса обновления информации: Диспетчер YML/XML позволяет поставщикам автоматизировать процесс обновления информации о продуктах на всех онлайн-платформах, что сокращает время, затрачиваемое на ручное обновление и предотвращает ошибки. Стандартизация данных: Благодаря стандартизации данных в форматах YML/XML, поставщики могут обеспечить единообразие информации о своем ассортименте на различных платформах, что упрощает процесс сравнения и выбора продуктов для клиентов. Улучшенная видимость продуктов: Использование Диспетчера YML/XML позволяет продуктам поставщика быть лучше обнаруженными на различных онлайн-платформах благодаря улучшенной оптимизации для поисковых систем и фильтрам. Эффективное управление ценами и наличием: Диспетчер YML/XML обеспечивает возможность быстро реагировать на изменения цен и наличия продукции, что позволяет поставщикам оперативно обновлять информацию на всех платформах и минимизировать риск потери продаж из-за устаревших данных. Для поставщиков промышленного и складского оборудования эффективное управление данными о продуктах является ключевым фактором успеха в онлайн-торговле. Диспетчер YML/XML для Opencart и ocStore представляет собой мощный инструмент, который обеспечивает удобство, гибкость и эффективность в интеграции товаров от разных поставщиков в ваш интернет-магазин.
    1 балл
  14. Оригинал статьи: aaPanel - бесплатная панель управления для VDS / VPS / сервера + Nginx/Apache + php-fpm + Linux Ubuntu 16.04 / 18.04 / 20.04, Debian 9+, Centos 7 / 8 (в оригинале изменения и дополнения информации могут появляться быстрее) aaPanel Описывая возможности панели управления aaPanel буду временами сравнивать ее с другими панелями управления. Не ставлю целью категорически выделить лучшую панель управления и/или операционную систему и/или лучший веб-сервер. Предоставляю самостоятельно делать окончательный выбор. Если я что-то описываю, то это не обязательно означает, что я описываю собственные предпочтения и даю рекомендации использовать вот именно "то, а не это", скорее всего, это будет анализ собственного опыта, в том числе анализ ошибок (ошибочного выбора). Без практического опыта и практического сравнения невозможно заранее точно понять, что же окажется самым удобным и самым быстрым (производительным). Поэтому я выбрал вариант "пощупать" разные панели управления VDS/VPS под разными ОС Linux, и уже потом решил сделать более осознанный окончательный выбор на основе сравнения возможностей, удобства, глючности (точнее - отсутствие оных), требовательности (прожорливости) к ресурсам и т.п. Поэтому даже не вполне удачные конфигурации я также описывал и описываю. Итоги и выводы будут позже. Пока могу сказать, что выбор aaPanel видится более предпочтительным по сравнению с CyberPanel. Полная документация на панель управления: документация aaPanel Панель управления бесплатная. Поддерживает выбор конфигурации веб-сервера и PHP. Возможные варианты веб-сервера и PHP: Nginx + php-fpm Apache + php-fpm OpenLiteSpeed + LSPHP С точки зрения производительности самый интересный вариант - это Nginx + php-fpm. Для каждого сайта возможно использование своей версии php. Операционные системы Linux, которые поддерживает aaPanel: Ubuntu 16.04 / 18.04 / 20.04 Ubuntu 22.04 (пока с некоторыми ограничениями) Debian 9+ Centos 7 / 8 Набор дополнительных возможностей в aaPanel зависит от операционной системы. Самый большой выбор дополнительных функциональных возможностей будет при установленной Linux Centos 7. Это не означает, что Centos 7 чем-то превосходит остальные ОС, просто это особенность данной панели управления. Различные панели управления тяготеют в той или иной степени к тем или иным ОС. Например, в случае панели управления ISPmanager также наблюдалась поддержка в первую очередь Centos 7, т.е. новый функционал появлялся сперва именно для этой Linux, потом - для остальных. В любом случае выбор дистрибутива Linux (FreeBSD или иной вариант UNIX) - это дело вкуса и привычки, и опыта . Но учитывайте, что некоторая (небольшая) часть дополнительных приложений для aaPanel рассчитана только на Centos или Centos / Ubuntu. Основной же функционал одинаково работает на любой из поддерживаемых ОС Linux. При прочих равных имеет смысл всегда смотреть в сторону наиболее свежего дистрибутива (с более свежим ядром соответственно) и одновременно не забывать о долговременной поддержке разработчиком того или иного дистрибутива. По сравнению с панелью управления CyberPanel панель управления aaPanel выглядит более гибкой и удобной. Во-первых, вы можете с aaPanel переключать при желании (ради тестов и т.п.) тип сервера с одного на другой без переустановки сайта. Менеджер файлов в отличие от CyberPanel в aaPanel позволяет работать с любыми папками, а не только с папками сайтов. Можно всегда посмотреть суммарный вес всех файлов папки, что довольно удобно. Например, в той же панели ISPmanager нет кнопки для просмотра размера всех файлов в папке. В aaPanel нет проблем с кириллическими названиями файлов. Отдельным недостатком файлового менеджера aaPanel можно назвать отсутствие для браузера FireFox использовать режим перетаскивания drag & drop, но в Crome это работает. В ISPmanager 5 такой функции нет совсем. По-умолчанию все удаляемые файлы помещаются в корзину. В ISPmanager, к примеру, корзины нет. Такое поведение по-умолчанию может быть неудобно, т.к. может быть съедено бесполезными файлами пространство жесткого диска. Вы можете отключить корзину. Кнопка корзины всегда присутствует в файловом менеджере. Правда если корзину отключить, то удаление файла превращается в "интеллектуальную задачу", т.к. файловый менеджер начинает вам подкидывать арифметические упражнения, правильно решив которые вы можете удалить файл. Где изменить такое поведения я не смог пока найти, т.к. в основных настройках панели управления нет чего-то подобного, переключение настроек на "develop mode" вопрос не решает. В отличие от CyberPanel в aaPanel есть удобный функционал импорта/экспорта данных в базу данных и бекапа (backup) БД. Такой функционал также есть в ISPmanager. Это позволяет не использовать для этого PHPmyAdmin, который делает подобные операции крайне медленно, а из-за лимита времени (на выполнение php) может не завершиться за один проход импорт большого файла SQL.
    1 балл
  15. Деятельность по заполнению интернет-магазина через фиды поставщиков является важной частью процесса автоматизации заполнения каталога товаров в интернет-магазинах. Фиды представляют собой файлы в формате XML или CSV, содержащие информацию о товарах, такую как наименование, описание, изображения, цена, наличие и другие характеристики. Эти файлы создаются поставщиками, которые предоставляют свои товары для продажи в интернет-магазинах. Для заполнения интернет-магазина через фиды поставщиков необходимо выполнить следующие шаги: Получение фида от поставщика. Для этого необходимо связаться с поставщиком и запросить у него фид с информацией о товарах. Обычно фиды поставляются в формате XML или CSV. Анализ фида. Полученный фид необходимо проанализировать, чтобы понять структуру данных и формат файла. Настройка импорта фида. Для импорта фида в интернет-магазин необходимо настроить соответствующий модуль или программное обеспечение. Настройка может включать в себя определение соответствия полей в фиде полям в базе данных интернет-магазина, выбор режима обновления данных и другие параметры. Импорт фида. После настройки импорта фида можно начать процесс импорта данных в интернет-магазин. Это может занять некоторое время в зависимости от объема данных. Проверка и обновление данных. После импорта фида необходимо проверить, что все данные корректно загружены и отображаются в интернет-магазине. Также необходимо обновлять данные из фида с определенной периодичностью, чтобы обеспечить актуальность информации о товарах. В целом, заполнение интернет-магазина через фиды поставщиков позволяет автоматизировать процесс добавления и обновления товаров в каталоге интернет-магазина и повысить эффективность работы. Модуль "Диспетчер YML\XML" 3.2 является инструментом, который помогает автоматически загружать товары от поставщика на ваш сайт. Это очень удобно для тех, кто занимается продажей электроники и других технических товаров, которые могут обновляться с большой частотой. Пример сайта, заполненного с помощью модуля - для Поставщика ОптВидео, выглядит следующим образом: на сайте представлен широкий ассортимент электроники - от смартфонов и планшетов до компьютеров и бытовой техники. Каждый товар на сайте имеет подробное описание, фото и информацию о наличии на складе поставщика. При этом все данные о товарах автоматически обновляются, благодаря регулярной синхронизации с выгрузкой поставщика. Благодаря модулю, управление каталогом товаров становится очень простым и удобным. Вы можете легко настраивать правила импорта, чтобы загружать только нужные категории товаров или товары, соответствующие определенным критериям. Кроме того, модуль для Опт Видео предоставляет возможность автоматического обновления цен и наличия товаров на вашем сайте. Пример: https://optvideo.h5.ose.su/index.php?route=product/category&path=60
    1 балл
  16. Оригинал статьи здесь: CyberPanel - бесплатная панель управления для VDS / VPS / сервера + LiteSpeed + Linux Ubuntu 18.04 / 20.04, Centos 7 / 8 Сайт разработчика панели CyberPanel. Процесс установки CyberPanel кратко описан здесь. Разработчиком CyberPanel заявлена совместимость с операционными системами: Centos 7.x, Centos 8.x, Ubuntu 18.04, Ubuntu 20.04 CyberPanel работает совместно с веб-сервером OpenLiteSpeed (или с его коммерческой версией). OpenLiteSpeed понимает конфигурационные файлы Apache .htaccess, поэтому можно считать, что программное обеспечение, которое рассчитано на работу с Apache, будет также работать и под OpenLiteSpeed. Работа CyberPanel с Apache или Nginx не предусмотрена. Если говорить про быстродействие, то можно утверждать, что OpenLiteSpeed с успехом заменяет связку Nginx + Apache, т.е. по быстродействию он не уступает этой связке или отдельному Nginx, но превосходит по быстродействию Apache (если тот работает один без Nginx). OpenLiteSpeed имеет расширение для Opencart, позволяющее использовать кеширование страниц средствами самого веб-сервера. Выбирайте правильно операционную систему Linux нужной версии. Более старая версия поддерживает более старые версии php, а не только самые свежие. Если использовать Ubuntu 18.04 , то будут доступны php версий: 7.0, 7.1 (с поддержкой mcrypt), 7.2, 7.3, 7.4, 8.0 (без поддержки mcrypt). Если же нужно использовать php 5.6, то тогда стоит установить Linux Centos 7.X, поддержка которой прекратится 01.01.2025. ВАЖНО IMPORTANT Важно понимать, что в случае Ubuntu 20.04 и использовании CyberPanel вам будут доступны для работы с веб-сервером OpenLiteSpeed только версии php (lsphpXX ): 7.2, 7.3, 7.4, 8.0. В этих версиях нет расширения mcrypt, необходимого для определенных версий Opencart, и вы не сможете самостоятельно его установить в отличие от случаев если бы вы использовали веб-сервер Nginx или Apache (но эти веб-серверы CyberPanel не поддерживает). Также вы не сможете установить другие более старые версии lsphpXX, например, lsphp56 или lsphp71. Устанавливайте Ubuntu 18.04 если вам нужны php (lsphpXX ) 7.0, 7.1, в которых есть расширение mcrypt. Версии php 7.2...8.0 в Ubuntu 20.04 не содержат mcrypt. Если нужны все версии PHP (5.3...8.0) с поддержкой mcrypt, то тогда нужно использовать ОС Centos 7. Ubuntu 18.04 + CeberPanel: выбор версий PHP 7.0 ...8.0 Самый большой выбор версий PHP будет если установить Centos 7 + CeberPanel. От php 5.3 до php 8.0, что покрывает практически все потребности, особенно если используется движок Opencart старых версий. Для каждого сайта можно назначить свою версию php. Примечательно, что в случае Centos 7 все версии PHP (LSPHP), включая php 8.0, имеют подключенное расширение mcrypt, чего нельзя сказать о варианте для Ubuntu. CyberPanel установит автоматически сервер MariaDB. Но версия данного сервера будет зависеть от того какую ОС вы установили прежде. Для Centos 7 будет установлена самая свежая версия MariaDB 10.5 (актуальная на июнь 2021). Для Ubuntu 18.04 будет установлена MariaDB 10.1, а на Ubuntu 20.04 - MariaDB 10.3 соответственно, т.е. для Ubuntu устанавливаются те версии, которые доступны из репозиториев Ubuntu. Т.е. Centos 7 получается, что будет самым универсальным решением в плане PHP и будет иметь самый свежий софт по сравнению с Ubuntu, не смотря на то, что Centos 7 выпущена ранее Ubuntu 18.04. На Ubuntu также можно обновить MariaDB до 10.5, но более сложным способом. В случае Centos 7 получается все проще и с более предсказуемым результатом. На данный момент (июнь 2021) актуальная версия Centos 7 - это Centos 7.9 от 12 ноября 2020 с ядром Linux 3.10.0-1160. Поддержка (выпуск обновлений безопасности и стабильности) Centos 7 разработчиком заявлена до конца 2024 года. Centos 8 также поддерживает CyberPanel, но поддержка Centos 8 заявлена лишь до конца 2021. Перед установкой панели управления у вас должна быть установлена Centos 7 или Ubuntu 18.04, или 20.04. Обновление репозиториев Ubuntu: Код: sudo apt update Можем узнать какие пакеты могут быть обновлены: Код: apt list --upgradable Для обновления системы используем: Код: sudo apt upgrade или Код: sudo apt full-upgrade Установите curl: Код: sudo apt install curl Во время установки будет вопрос (выбираем Yes): Проверьте версию установленного curl (для определения успешной установки): Код: curl -V Перезагрузите Ubuntu: Код: reboot Запускаем установку CyberPanel: Код: sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh) В ходе установки будет предлагаться разный выбор опций. Обычно все довольно прозрачно для понимания. На скриншотах ниже показаны большинство выбираемых опций. На запрос установки разных расширений PHP отвечаем "Y". По умолчанию (если при установке не меняли) пароль: 1234567. Разумеется, что его нужно сменить. Задать новый пароль админа панели управления CyberPanel : Код: adminPass newpassword Узнать пароль для пользователя root для MySQL/MariaDB: Код: cat /etc/cyberpanel/mysqlPassword Все пароли для входа в панели управления указаны в отдельных файлах в этой папке /etc/cyberpanel:
    1 балл
×
×
  • Создать...