Установка скрипта на хостинг пошаговая инструкция

Здравствуйте, дорогие читатели блога web-zarabotok.info.

Хотите иметь свою инвестиционную игру? Хотите почувствовать себя в роли администратора проекта? А не знаете, как правильно установить скрипт? Не переживайте… В этой статье я всё подробно об этом расскажу.

Итак, поехали…

Первым делом, хочется сказать, откуда можно скачать такие скрипты. Я, выделил для себя три проекта, которые, на мой взгляд, самые лучшие и без вирусов. Узнать о них вы можете в другой моей статье. Ссылка здесь.

А мы двигаемся дальше…

Как установить скрипт на хостинг?

Мы скачали готовый скрипт, который находится в архиве. Открываем его и копируем все файлы в отдельную папку. Далее, нам нужно купить себе хостинг и домен. Я пользуюсь Hostia. Качественный, надёжный и что главное, очень дешёвый. Одним словом «Рекомендую».

Я не буду на этом останавливаться, потому что не каждый хостинг имеет одинаковую панель управления.

Мой хостинг поддерживает Direct Admin, но знайте, что у вас может быть совсем другая система управления (например: ISPManager, ZPanel, WHM/CPanel).  Если у вас одна с них, то в этом нет ничего страшного. Весь процесс установки скрипта ничем не отличается.

Инструкция установки скрипта (инвестиционной игры, хайпа, букса)

Шаг 1. Заливаем сам скрипт на хостинг

Для этого нам понадобится одна с программ: [urlspan]FileZilla[/urlspan] (рекомендую), [urlspan]Total Commander[/urlspan] или [urlspan]Notepad++[/urlspan]. Скачиваем любую себе на компьютер, запускаем и создаем подключение по FTP. Забыл сказать, что панели управления хостингом также имеют «встроенный» загрузчик файлов. Можете воспользоваться им. Я, выбрал для себя FileZilla. Программа стабильна в работе и полностью бесплатна.

Что касается FTP, то здесь нам понадобятся некие данные, которые без проблем, можно узнать у своего хостера:

  1. Логин.
  2. Пароль.
  3. IP Адрес.

Если будут проблемы с входом в админку, напишите в комментарии. Помогу!

Дальше открываем папку со скриптом и указываем путь для заливки на хостинг: /domains/ваш домен/public_html/скрипт. Например, у меня это выглядит так (использую FileZilla):

Путь-загрузки-скрипта-на-хостинг

Ждём завершение загрузки…

Шаг 2. Создаем базу данных

Переходим в раздел «Базы данных (MySQL)» и нажимаем «Создать новую» или «Создать базу данных». Прописываем имя и пароль. Поля: Имя Базы Данных и Имя Пользователя БД можно заполнить одинаково. Внимание! Логин и пароль запомните или где-нибудь запишите. Они нам понадобятся, когда будем изменять файл config. На примере покажу, как это выглядит в Direct Admin. Смотрите:

Создание-базы-данных-в-директе


Создание-базы-данных-в-директе-2


Создание-базы-данных-в-директе-3

Шаг 3. Импортируем SQL в нашу базу данных

[adsense1] Каждый скрипт имеет файл в формате «SQL». Возможно, могут быть исключения и такового файла попросту нет. Не знаю, у меня такое не встречалось. Но! Если вам так повезло, то просто-напросто пропускайте его (смотрите Шаг 4).

Сейчас нам нужно найти в своем личном кабинете «[urlspan]PhpMyAdmin[/urlspan]». Утилита служит для импорта или редактирования баз СУБД MySQL. Заходим в неё, подключаемся (если нет аккаунта, то обязательно проходим несложную регистрацию).

Заходим, и слева видим список созданных нами баз данных. Выбираем ту, которую создали во втором шагу. А дальше все делаем по скриншотам:

Как-пользваться-phpmyadmin


Как-пользваться-phpmyadmin-2


Как-пользваться-phpmyadmin-3

Шаг 4. Изменяем файл config

В папках скрипта ищем файл с названием config. В хайпах ищите файл в папке «classes». Нашли? Отлично! Открываем его. Видим:

public $HostDB = «localhost»;
public $UserDB = «Имя Пользователя БД»;
public $PassDB = «пароль»;
public $BaseDB = «Имя Базы Данных»;

Заменяем свои данные и сохраняем. Этим самым, мы подключили скрипт к нашей базе данных.

Всё друзья! Я вас поздравляю! Скрипт полностью установлен!

А сейчас небольшое дополнение…

Бесплатные скрипты с интернета зачастую бывают с дырами. Будьте осторожны! Проверяйте файлы на вирусы. Также удалите все дополнительные ссылки в файлах скрипта. Зачастую они выглядят так:

Пираткие-ссылки-в-скриптах

Вот и всё, чем хотел сегодня с вами поделиться. Надеюсь, что статья вам помогла.

Но все же, если у вас не получается установить скрипт, мы можем сделать за вас всю работу. Например, установить скрипт любой сложности, подключить дополнительные платежные системы, сделать скрипт уникальным и т. д.

Большое спасибо, что дочитали статью до конца. Подписывайтесь на обновления. Впереди будет еще очень много разных вкусняшек!

Под кодом страницы обычно подразумевается совокупность элементов на языке разметки HTML, которые служат для ее форматирования и отображения в удобном виде. Чаще всего употребляется вариант названия – HTML-код. Просмотреть код любой веб-страницы можно прямо в браузере.

код для сайта

Для создания страниц необходимо использовать языки веб-программирования. Среди них наиболее широко распространены PHP, Python и Ruby on Rails для Unix-систем, а для Windows характерна разработка динамического контента с использованием средств .NET. Это все касается серверной части, а для программирования на клиентской стороне чаще всего используется JavaScript. Подробнее об этом поговорим в статье ниже.

Где искать код для установки

Установить код в счетчик сайта несложно. Ниже в статье разберем подробно, что и куда внедрять. Сейчас разберемся где искать код для установки метрик.

В Яндекс Метрике. Код находится в настройках: нажмите на кнопку-шестеренку. Выберите вкладку «Счётчик» и перемотайте в конец страницы.

Код яндекс метрики

В Neiros. Счетчик для аналитики Neiros поможет отслеживать статистику вашего сайта. Найти и внедрить код можно 2 способами:

код в Neiros

  1. При создании нового проекта на втором шаге. Вы можете просто скопировать инструкцию в соответствующем разделе и отдать ее разработчику.
  2. Найти код можно в разделе проекты https://neiros.cloud/setting/sites, кликнув на настройки в открывшемся меню.

Для получения достоверных данных, код необходимо устанавливать на каждую страницу.

Куда вставляется код на сайте

Для начала нужно определиться со структурой сайта. Например, нужно подключить javascript, обычно скрипты либо выносят в отдельный файл или размещают в верхней части сайта. За отображение сайта, отвечает несколько файлов. Вот самые популярные в WordPress: index.php; single.php; page.php; header.php; footer.php; sidebar.php; style.css.

файл отвечающие за отображение сайта

Разберем по структуре:

  1. За вывод верхней части отвечает файл header.php (шапка сайта). Начало этого файла имеет следующий вид:
    <!DOCTYPE html>
    <html <?php language_attributes(); ?>>
    <head>
    Сюда вы можете вставить скрипт
    <?php wp_head(); ?>
    </head>

    Между тегами < head > размещают скрипты, которые работают на всех страницах сайта.

    К примеру, для каждой темы содержимое этих тегов может быть разным.

  2. За отображение главной страницы сайта отвечает файл index.php чаще всего с помощью языка php в этом файле объединяется код из других файлов например (header.php, footer.php) тем самым отображаемая страница в браузере собирается из нескольких файлов. Главная страница работает также, как и остальные.
  3. За вывод сайдбара (боковой блок, меню сайта) отвечает файл sidebar.php сюда же Вы можете, к примеру, добавить блок с рекламой услуги или компании.
  4. В случае если вы хотите изменить отражение записей блога используйте файл single.php.
  5. Для изменения страниц сайта используйте следующий файл — page.php.
  6. Подвал сайта — footer.php, в нем также можно размещать скрипты, его часто используется для вставки счетчиков посещаемости. Туда можно добавить и другие элементы.
  7. Если вы хотите видоизменить отображение сайта, то вам понадобиться файл стилей style.css.

Чтобы понять куда вставлять код, можно использовать стандартный инструмент Google Chrome для этого нажмите правой кнопкой мыши на свободную часть страницы (любое место) и выберете вкладку просмотреть код. С его помощью мы сможете определить название блока над, под или в который надо вставить ваш код. Для выделения нужного блока нажмите на выделенную красным кнопку и наведите на нужную область сайта.

Как вставить код с помощью header.php

Сайты с панелью управления WordPress полны ограничений: ни HTML-код вручную не добавить, ни сниппеты JavaScript. Частично обойти ограничения помогают сторонние плагины или расширения, но чаще вебмастерам приходится добавлять код напрямую в файлы, хранящаяся на страницах хостинга. Речь о header.php, взаимодействовать с которым предстоит по следующему алгоритму:

  1. Файл нужно сохранить на жесткий диск ПК (выгрузить с хостинга) и открыть текстовым редактором, вроде Sublime Text.
  2. Вставка кода в header.php
  3. Система сразу отобразит весь код, включая заголовки и служебную информацию (The Head) и содержимое веб-страницы (The Body).
  4. Редактировать доступный код и обращаться к справочникам за дополнительной информацией не придется. Достаточно лишь найти парный тег < link > < /link >, который располагается или в < head > < /head > (в нижней части кода) или в < body > < /body > (в самом низу). Добавленную информацию необходимо сохранить (поможет комбинация клавиш Ctrl + S), а после – уже отредактированный файл – выгрузить обратно на страницы хостинга с заменой. На всякий случай, желательно сохранить резервную копию header.php.

Подключение кода в head

Если вместо стандартной панели администратора сайт состоит из разрозненных HTML-страниц с кодом, действовать придется иначе: вместо разового добавления сниппета JavaScript между парным тегом < link > < /link > в Header.php, предстоит скопировать и вставить код на каждую страницу. Index.html, contact.html, services.html – вне зависимости от типа страницы, раздела или отображаемой информации процедуру предстоит повторять для всех файлов сразу, иначе будет нарушена структура сайта.

Подключение JavaScript в HTML

Есть два основных типа подключение JS в HTML. Рассмотрим каждый подробнее.

Вставка JavaScript непосредственно в HTML-файл

Первый способ добавить JavaScript в HTML – прямой. Вы можете сделать это путем использования тэгов < script > < /script >, которые должны обрамлять весь код JS, который вы пишете. JS код может быть вставлен:

Секции body и head

  • между тэгами < head >
  • между тегами < body >

В зависимости от того, где вы добавляете код JavaScript в вашем файле HTML, его загрузка будет отличаться. Рекомендуемой практикой является добавление его в разделе < head >, так он будет оставаться отдельно от самого кода файла HTML. Но размещение его в < body > может улучшить скорость загрузки, так как актуальный контент сайта или блога будет загружен быстрее и только потом будет разобран код JavaScript.

Любые скрипты вставляются в HTML с помощью тега < script >. Между открывающим и закрывающим тегом вставляем или сам код скрипта, или ссылку на внешний файл.

Вставка из отдельного файла

Загрузка из внешнего файла всегда лучше, если наша программа JavaScript нужна нескольким веб-страницам. Для подключения внешнего файла опять используем открывающий и закрывающий теги < script >…< /script >, но между ними указываем не код программы, а путь к файлу с расширением .js, где записан этот код программы.

Вставка js из отдельного файла

Некоторые преимущества подключения JS кода из внешнего файла:

  • Когда код HTML и JavaScript отделены, сохраняется принцип структурного разделения, и это делает отдельные блоки более удобными для повторного использования и более рациональным.
  • Читаемость кода и его редактирование становится проще и удобнее.
  • Такой код проще поддерживать.
  • Кэширование файлов JavaScript повышает общую производительность путем снижения времени загрузки страницы.

В нашем примере программу alert(«Привет, Neiros») мы сохраняем в отдельный файл neiros.js, а относительный или абсолютный путь к нему прописываем между тегами.

<script>...</script> с атрибутом src="".
<script src="/js/neiros.js"></script>

или

<script src="https://neiros.ru/js/neiros.js"></script>

Как вставить JS и HTML в PHP-код

При разработке собственного модуля веб-мастер использует дополнительные скрипты и верстку (CSS, HTML). Каждый элемент и html-код подключается отдельно, в тело страницы или любой выбранный файл. Но есть особая категория дополнений, которые требуется вставить непосредственно в файл PHP. Для начала уточним, что PHP включает в себя короткий echo-тег

Рассмотрим для примера два варианта, как правильно внедрять html-код, JavaScript или CSS в код PHP:

  1. Тег echo. Работая со страницей, которая написана на PHP, веб-мастер оперирует тегом echo (который нужен, чтобы выводить сообщение на экран). Используя данный тег, выводим и один из упомянутых ранее кодов ( html-код, JavaScript или CSS). Учтите при применении внешних кавычек вида » «, внутренние кавычки, обрамляющие элементы, должны выглядеть, как ‘ ‘, или в обратном порядке, в противном случае возникает ошибка.
  2. Тег echo с применением дополнительного html-кода. Это более распространенный и популярный вариант. В подобную конструкцию можно вставить html-код, JavaScript или CSS. Кавычкам уже не придается ключевого значения, они могут быть любыми. При желании возможно внедрять переменные вывода.

Пример:

HTML-код можно перемешивать с командами PHP:

<h1><?php echo 'Заголовок' ?></h1>

Также HTML код можно подставить в PHP-шную строку:

<?php echo 'Слон<br>Наполеон'; ?>

Результат в браузере:

Слон

Наполеон

Мы можем как угодно совмещать PHP код и HTML теги:

<div><?php echo 'Строка1' ?></div>
<span><?php echo '<strong>Строка2</strong>' ?></span>

Если немного расширить программный текст и добавить функцию подключения php страниц include(), то можно сформировать несколько HTML страниц, тем самым получив простейший сайт или полезный блог. При этом вам не придется вносить изменения на каждую страницу и во все статьи, например, данные для шапки сайта. Достаточно будет внести изменения в файл header.php.Ниже постараемся ответить на все вопросы.

Подключение к сайту PHP-скриптов

Подключение PHP-скриптов осуществляется всего тремя способами:

  1. Вставка кода в саму страницу сайта (обратите внимание, что если вы имеете страницу с расширением *.html – вам необходимо сменить расширение на *.php).
  2. С помощью файла (в таком случае подключение можно осуществлять и на странице с *.html расширением). Но для работы этого способа в файл .htaccess, который находится в корне вашего сайта, в самый верх, необходимо добавить эти строки:

    RemoveHandler .html .htm
    AddType application/x-httpd-php .php .htm .html .phtml

    Если такого файла нет на хостинге — создайте его через любой текстовый редактор.

  3. С помощью JS-скрипта. В этом случае вы также можете получить результат выполненного PHP-скрипта на сервере. Реализация будет следующая:
<div class="result"></div>
<script>
$(document).ready(function() {
$(".result").load("/main.php");
});
</script>

Где « .result » – это класс, куда будут загружаться данные, а « /main.php », соответственно, адрес до PHP-скрипта.

Если вы грузите данные с другого сервера, то поддержка PHP на вашем сервере не обязательна. Не забывайте подключить к вашему сайту библиотеку jQuery.

Здесь правила абсолютно те же: полный адрес к файлу, если он находится на внешнем сервере, относительный – если на вашем.

Если вы хотите подключить PHP-скрипт к вашему сайту, то на сервере должна быть поддержка PHP. О том, есть ли у вас такая возможность – узнайте у своего хостинг-провайдера.

Чтобы использовать самописные php скрипты для обработки тех или иных событий в moguta.cms, можно создать php файл в папке mg-pages. Поместите в папку mg-pages скрипт myscript.php, после этого он будет доступен при обращении к сайту http://site.ru/myscript как будто он находится в корне сайта.

Вставка кода на различные платформы

Если ваш сайт работает на CMS-системе, то код счётчика нужно вставить в файл, отвечающий за генерацию заголовка (header) всех страниц сайта.

WordPress

Сайт на базе WordPress и сайт WordPress.com – две разные вещи. Первый управляется с помощью CMS, установленной на собственном сервере. Это значит, что вы заплатили за доменное имя (myname.com) и за хостинг. Сайт WordPress.com бесплатный. Вы можете зарегистрировать на нем сайт без оплаты хостинга. При этом URL сайта будет: myname.wordpress.com.

Управляя сайтом на WordPress.com, вы ограничены в выборе кодов и фрагментов JavaScript, которые можете установить. Причина в протоколе безопасности – разработчики не позволяют пользователям вставлять коды на платформу.

В WordPress вставить html-код на страницу можно вручную или добавить готовый плагин. Примеры плагинов для Вордпресс:

  1. LuckyWP Scripts Control;
  2. Tracking Code Manager;
  3. Head Footer and Post Injections;
  4. SyntaxHighlighter Evolved;
  5. Code Prettify;
  6. Wp-Syntex.

Плагины WordPress

Множество плагинов по факту добавляются с помощью настроек панели управления. Некоторые помещают в шапке, то есть размещая html-код внутри контейнера < head >…< /head >, другие нужно вставить в так называемый подвал, область контента, перед тегом < /body > (или закрывающим). Имейте в виду, что вставить html-код возможно и перед < body > (закрывающим тегом), иные ситуации требуют именно такого шага. Для внедрения произвольного кода HTML на боковую панель или размещении текста на главной странице никаких посторонних инструментов, типа плагинов, не понадобится. Добавление происходит при переходе в меню «Внешний вид» на вкладку «Настройка» (как вариант – на вкладку «Виджеты»). Определяем область, куда вставить html-код на сайт, при нажатии кнопки «Добавить виджет» в открывающемся списке находим нужный код html. Остается лишь вставить код и сохранить изменения.

Вставить html-код в страницу можно через панель управления — находим нужную статью и открываем ее. Затем переходим в режим редактирования и просто помещаем html-код в нужный сектор.

Bitrix

Установка на сайт Bitrix кода осуществляется так – открывается общий шаблон и вставляется нужный html-код. Действия пользователя – административная панель разворачивается на странице, открывается вкладка «Шаблон сайта», переход в раздел «В панели управления», где нажимаем на опцию «Редактировать шаблон».

Редактировать шаблон битрикс

Далее необходимо вставить html-код счетчика можно непосредственно в редакторе. Одно из важных условий – ко всем страницам применяется одинаковый шаблон.

Joomla

Есть 3 варианта:

  1. При помощи плагина. Применим для внедрения нужного кода плагин, работающий непосредственно с сайтами на движке Joomla, – Sourcerer, с его помощью можно добавить любой распространенный код, будь то html-код или css, php, javascript. Последовательность действий: В административном разделе находим «Расширения» → «Менеджер расширений» → «Загрузить файл пакета» → «Выберите файл». В сохраненных файлах находим архив с программой и открываем его. Загружаем и устанавливаем плагин.
  2. С помощью модуля. В разделе «Расширения админки» воспользуемся «Менеджером модулей». С помощью соответствующей кнопки создаем новый модуль. Из предложенных опций на вкладке «Выбор типа модуля» находим HTML-код и кликаем на ссылку. Заполняем окно «Заголовок», прописываем открывающий и закрывающий теги {source} и {/source}, вставьте html-код между тегами. Далее в стандартных полях модуля указываем свои настройки: показ заголовка/или нет, выбираем местоположение модуля и завершаем работу нажатием кнопок «Опубликовано» и «Сохранить».
  3. Вставить код в статью в редакторе Joomla. Порядок работы идентичен вставке кода в модуле. Установив приложение Sourcerer, прописываем теги {source}{/source} в редакторе материалов и помещаем между ними нужный код.

Код для Joomla

Modx

Есть 2 основных способа: установка кода через Чанк и установка кода в шаблон.

Инструкция, чтобы избежать ошибки при вставке кода в шаблон:

  1. Авторизация в административной части вашего сайта. Сделать это вы можете при помощи кнопки “Авторизация” — или же обратившись в адресной строке по адресу www.***адрес вашего сайта***/manager
  2. После ввода своего логина и пароля вы получите доступ к административной панели вашего сайта. В правом меню нужно выбрать пункт «Элементы», выбрать подпункт «Шаблоны» — и кликнуть на активный шаблон вашего сайта.
  3. Откроется окно управления шаблоном вашего сайта. Необходимо найти поле «Код шаблона (html)». Именно сюда вам нужно вставить ваш код: в самом конце кода шаблона вы увидите строчку “”. Именно перед ней стоит вставить код.
  4. Установка кода практически завершена. Единственное, что вам осталось сделать — нажать кнопку “сохранить” в административном меню сайта.

Обновите главную страницу вашего сайта — его название появится в Личном кабинете на странице Мои сайты.

Код для modx

Инструкция для установки кода через чанк. Чанк в MODx — это небольшой кусок HTML-кода или другой информации, который можно многократно использовать в шаблоне, другом чанке или сниппете. Чанки в админке MODX расположены на левой панели во вкладке «Элементы». Добавление кода может быть напрямую через чанк, что включает в себя все сквозные элементы верстки, обычно это хедер и футер.

Opencart

Чтобы внедрить сторонний виджет на сайт, нужно зайти в модуль, далее переключаетесь в режим «Исходный код» и вставляете нужный код, как и в других сайтах. Вставляем скопированный код в header.tpl или в footer.tpl файл. Найти эти файлы можно тут catalogviewthemedefault(ваша тема)templatecommonfooter.tpl. По завершению выходите из режима «Исходный код», сохраняете.

Код для Opencart

Wix

Программа Wix предлагает решение в виде Wix App Market. Там можно найти разнообразные виджеты для маркетинга, социальных медиа и аналитики данных. Для добавления на сайт постороннего кода или скрипта плагина требуется приложение HTML. Внешний код или его компоненты обозначаются как iframe. Краткая инструкция, как в Wix вставить html-код:

В левой части редактора нажимаем кнопку «Добавить» → «Еще» → Перетаскиваем приложение «HTML-код» на страницу или кликаем на него → «Вставить код» → Добавляем нужный код HTTPS → Завершаем работу кнопкой «Применить».

Некоторые моменты Wix:

  • Встраиваемый код должен быть с расширением HTTPS (HTTP не отображается).
  • Код html определяется парными тегами, например открывающим

    и закрывающим

    .

  • В коде прописаны базовые элементы страницы, для некоторых функций пишутся коды отдельно. Если что-то не отображается — нужно добавить в код.
  • Перед встраиванием кода убедитесь в его обновлении и совместимости с HTML5.
  • Викс оборудован защитой от встраивания на чужие платформы, поэтому может не отобразиться в редакторе или на вашем ресурсе после публикации ссылки или вставки кода в HTML-приложении.

Tilda

Используйте блок T123 «HTML-код». Через него добавляется абсолютно любой код, включая теги script и style.

HTML код можно добавлять на страницу (внутрь тега < body >), либо в head сайта или страницы.

Чтобы добавить блок на страницу, откройте Библиотеку блоков → Другое и добавьте блок T123.В режиме редактирования (и предпросмотра) код выводится просто текстом. Чтобы код заработал, страницу нужно опубликовать.

В блоке поддерживается HTML, JavaScript (нужно использовать тэг < script >) и CSS (нужно использовать тег < style >). Чтобы добавить код в head на все страницы, нужно зайти: «Настройки сайта» → «Еще» → «HTML-код для вставки внутрь head». Чтобы добавить код в Head на отдельной странице, нужно зайти: «Настройки страницы» → «Дополнительно» → «HTML-код для вставки внутрь head».

Код в Tilda

VK

Видеть результаты форматирования может только владелец аккаунта и применять только тот инструментарий, который имеется в настройках онлайн-сервиса.

Как изменить: Для начала открываете страницу, куда собираетесь вставить код, и активируете опцию просмотра ее кода комбинацией Ctrl + U. Заходим в контекстное меню, выбираем опцию Edit with Notepad ++ и приступаем к редактированию. Сохранить созданный файл на компьютер можно, применив комбинацию клавиш Ctrl + S или «Сохранить на компьютер». Новая веб-страница будет загружена на жесткий диск, включая все составляющие ее элементы – картинки, скрипты и прочее.

Shopify

В панели управления найдите раздел с интернет-магазинами Online Store и выберите темы Themes. Чтобы получить доступ к нужной вкладке, кликните по «Actions» и выберите «Edit HTML/CSS» (нам потребуются фрагменты). Клик по опции откроет диалоговое окно с возможностью добавить новый фрагмент, после назовите сниппет и нажмите на кнопку Create snippet. Введите код для сниппета в зону для «tracking snippet.liquid» и кликните «сохранить».

Установка кода на самописный сайт

Самописный сайт создан с нуля, для управления контентом не использует CMS. Поставить на него код будет чуть сложнее, чем на WordPress и другие CMS или конструкторы, потому что придется вспомнить про FTP.

FTP – File Transfer Protocol. В переводе – протокол передачи данных. Его используют для передачи файлов с компьютера на открытый сервер хостинга. Можно скачать бесплатный FTP-клиент FileZilla. FTP-менеджеры типа FileZilla позволяют перетаскивать файлы и картинки с сайта на сервер. С помощью программы вы можете добавлять файлы на сервер или скачивать их, заменять старые файлы на новые, удалять ненужные данные, менять названия доков.

FileZilla

В протоколе передачи данных нет ничего сложного, для большинства людей самая сложная часть – просто связаться с сервером. Если у вас возникли любые проблемы с сервером, свяжитесь с хостингом. Это может занять час, зато по истечении 60 минут вы будете знать всё, что нужно.

После того, как вы зашли на FTP-сервер, обязательно сделайте резервную копию сайта. Если совершите ошибку, важные файлы никуда не денутся. Сделать резервную копию можно с помощью простого перетаскивания всех файлов с сервера на компьютер.

Резервная копия позволяет подстраховаться — не забудьте сохранить все файлы в отдельной папке на компьютере до внесения изменений.

Обычно программный интерфейс FTP-менеджера состоит из двух колонок. Например, в левой колонке файлы, которые хранятся на компьютере. В правой – файлы с сервера. Чтобы поменять или добавить файлы, просто перетаскивайте их из одной колонки в другую.

Часто задаваемые вопросы

HTML импорт позволяет помещать HTML страницы, а также CSS и JavaScript файлы, внутрь других HTML страниц. HTML импорт, это простая для понимания вещь, способ вставки на страницу других HTML страниц.

Интересно то, что HTML это самые простые файлы, но иногда с ними труднее всего работать. Даже PHP файлы имеют возможность включения, почему же HTML этого не может? Благодаря веб-компонентам, можно включать одни HTML документы в другие. Также, при помощи этого же тега, есть возможность подключать CSS и JavaScript.

Загрузка скриптов влияет на самую главную метрику производительности: время до появления интерактивности (Time to Interactive). Например, изображения на странице и дизайн практически не влияют на эту метрику, потому что они не блокируют загрузку элементов интерфейса. Скрипты становятся главной причиной подтормаживаний сайта. Пользователю приходится несколько секунд ждать загрузки страницы, а потом она некоторое время не реагирует на ввод с тачскрина, движения мышью или нажатия с клавиатуры. Сами же скрипты выполняются в основном потоке, то есть находятся на критическом пути рендеринга. Поэтому ни в коем случае нельзя безгранично раздувать количество скриптов на странице. Если пользователь с настольного компьютера или ноутбука еще кое-как загрузит страницу, то пользователь на смартфоне может ее не дождаться. Через десять секунд ожидания он просто закроет страницу.

Вставить html-код в письмо «Яндекс» или «Майл.ру» можно, создав шаблон письма. Ширина не должна превышать 640 пикселей чтобы письмо выглядело хорошо на любом мониторе. Проверяем, как отреагирует на встраиваемый шаблон выбранный почтовый сервис.

В первую очередь тестируем почтовые клиенты, которыми чаще всего пользуемся сами:

  • Mail.ru;
  • Yandex;
  • Mozilla Thunderbird;
  • The Bat;
  • Gmail;
  • Microsoft Outlook.

Считается, что корректно вставить html-код позволяют лишь два клиента – Microsoft Outlook и Mozilla Thunderbird. Но так как большинство пользователей привыкли пользоваться только «Яндексом» или «Мэйл.ру», то пробуем на них:

  1. Производим установку и настройку Mozilla Thunderbird на учетную запись пользователя. В настройках в обязательном порядке отмечаем, что для передачи данных будет использоваться IMAP – протокол для входящей корреспонденции и SMTP – протокол для исходящей. Подобная операция откроет возможность скачивания почты в Mozilla Thunderbird так, чтобы серверы Yandex ее не удаляли и автоматически обновляли все письма с Mozilla Thunderbird.
  2. Помещаем html-код в письмо и в виде шаблона сохраняем его в Thunderbird. Через несколько минут фиксируем необходимую папку «template» в программе Yandex и находим там сверстанное письмо с html-кодами. Можно доработать созданный шаблон и сохранить в желаемом виде уже Yandex-почте.

Создавая новое письмо, воспользуемся своей заготовкой, для чего нужно нажать на зеленую ссылку «Шаблон» и подгрузить нужный шаблон. На «Яндекс Почте» для хранения шаблонов есть специальная папка в разделе «Черновики».

Часто случается, что пользователь загружает изображения со сторонних сайтов и у принимающей стороны картинки не отображаются. Самый эффективный вариант – сделать перекодировку картинки в код base64 – это и надежней, и занимает меньше времени.

Заключение

Бывают ситуации, когда необходимо проанализировать содержимое веб-страницы: посмотреть description, узнать размер какого-то элемента или просто выяснить, какой используется шрифт. С помощью опции «Просмотреть код» можно узнать не только это, но и многое другое – практически всю подноготную сайта. Если вы решите проанализировать сайты конкурентов, немного разбираясь в коде, вы сможете оценить не только визуальную и контентную стороны страниц. У вас получится определить, с помощью каких ключевых слов продвигается сайт, на какой CMS работает и немного больше понять стратегию продвижения конкурентов. В статье мы разобрали сервисы, задачи разработчиков при создании страниц, основы кода и примеры.

Олег Вершинин

Специалист по продукту

Все статьи автора

Нашли ошибку в тексте? Выделите нужный фрагмент и нажмите
ctrl
+
enter

В данной статье показан процесс загрузки и запуска скриптов ботов на бесплатный хостинг.

С инструкцией подвязки скриптов ботов можно ознакомиться по ссылкам:
Для страничных ботов studio-petukh.ru/article?id=50
Для ботов на сообществах studio-petukh.ru/article?id=26

Переходим к установке скрипта на хостинг. Им может быть как платный или бесплатный хостинг, линуксовый или виндовый VPS/VDS, домашний ПК и т.д.

В данной статье пример установки будет показан на беслатном хостинге https://www.pythonanywhere.com/. Данный хостинг идеально подойдет для начального уровня. Из его минусов можно назвать необходимость раз в 2-3 дня перезапускать скрипты.

Итак: перейдя по ссылке сперва нужно будет создать учетную запись. Нажимаем в правом верхнем углу на «Log in» (Рисунок 1). Затем жмём на «Sign up here!» (Рисунок 2). Затем жмём на «Create a Beginner account» (Рисунок 3) и проходим регистрацию.

Рисунок 1

Рисунок 2

Рисунок 3

После создания учётной записи переходим во вкладку «Consoles» и выбираем Bash консоль (Рисунок 4).

Рисунок 4

В Bash консоли необходимо установить необходимые библиотеки для работы скрипта бота. В базовых скриптах требуется только установка библиотеки vk_api. Вбиваем в консоли команду pip3.9 install —user vk_api (Рисунок 5), жмём Enter и ждём установки библиотеки. Если необходимы ещё бибиотеки, то вместо vk_api указываем название необходимой библиотеки.

Рисунок 5

После установки всех необходимых библиотек закрываем данную консоль, нажав на крестик в списке запущенных консолей и переходим к соседнему каталогу «Files».

В каталоге «Files» загружаем нужный скрипт с ботом нажав на кнопку «Upload a file». После загрузки файла со скриптом в списке файлов нажимаем на него. Откроется редактирование файла, если ранее не указали в скрипте id и токен от страницы, то делаем это сейчас. После того как скрипт будет готов к запуску, нажимаем на кнопку «Run» (Рисунок 6) и ждем запуска скрипта в консоли. Если вместо консоли появится сообщение о лимите одновременно запущенных консолей, то во вкладке «Consoles» закрываем ранее запущенные консоли и повторяем действие.

Рисунок 6

После всех верно-проделанных действий наслаждаемся работой собственного бота.

  • Использование готовых скриптов
  • Написание простейшего CGI-скрипта
  • Просмотр установленных модулей PERL
  • Установка дополнительных модулей PERL
  • Возможные ошибки

1. Использование готовых скриптов

Если у вас уже есть написанные CGI-скрипты, то прежде чем скопировать их на сервер, вы должны сделать следующие действия:

  • Убедиться, что в скриптах указан правильный путь к интерпретатору:

Perl: /usr/bin/perl
Python: /usr/local/bin/python

  • Если вашему скрипту требуется доступ к базе данных MySQL, то необходимо указать параметры доступа (см. статью Подключение к серверу MySQL)
  • В разделе Управление веб-сервером панели управления хостингом включить модуль CGI.

Теперь вы можете скопировать свои скрипты на сервер.
Загружать файлы необходимо в каталог ваш_домен/cgi. Файлы из данного каталога будут доступны по адресу http://ваш_домен/cgi-bin/имя_файла. Для того чтобы CGI-скрипты запускались из корневого каталога сайта ваш_домен/docs, необходимо создать в нем файл .htaccess со следующим содержимым:

AddHandler cgi-script .cgi .pl .py
Options +ExecCGI

На скрипты необходимо установить права доступа 755 или -rwxr-xr-x.
Права доступа можно изменить с помощью файлового менеджера панели управления.


2. Написание простейшего CGI-скрипта

Рассмотрим написание простого CGI скрипта на Perl.
Если вы работаете под управлением ОС «Windows», то для работы с кодом скриптов вам необходимо использовать специализированный текстовый редактор, например, Notepad++. Стандартную для Windows программу «Блокнот» лучше не использовать. Для демонстрации работы CGI скрипта необходимо создать два файла. Первый файл представляет собой html-документ с формой ввода текста:

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
              <html>
              <head>
               <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
               <title> Пример работы с Perl</title>
              </head>
              <body>
                <form method='post' action='/cgi-bin/hello.pl'>
                  Введите ваше имя:<input type='text' name='name'>
                  <input type='submit'>
                </form>
              </body>
              </html>

Второй файл является CGI-скриптом

#!/usr/bin/perl
use CGI;
print "Content-type: text/htmlnn";
$my_cgi = new CGI;
$your_name = $my_cgi->param('name');
print "Hello $your_name!!!";

Первый файл вы можете разместить в каталоге ваш_домен/docs. Второй файл вы должны разместить в директории ваш_домен/cgi. Обязательно проверьте права на ваш CGI-скрипт. Они должны быть установлены в значение -rwxr-xr-x или 755.


3. Просмотр установленных модулей PERL

Для проверки установленных PERL-модулей необходимо последовательно выполнить следующие действия:

  • Подключитесь к хостингу по SSH и выполните команду:

vim modules.pl

Таким образом будет создан файл modules.pl

  • Теперь необходимо его отредактировать, для этого нажмем Insert, напишем следующее:

#!/usr/bin/perl -w

                use ExtUtils::Installed;

                $installed = ExtUtils::Installed->new();
                foreach $module ($installed->modules()){
                   printf "Module: %sttVersion: %sn", $module, $installed->version($module);
                }

Для выхода из редактора с сохранением только что набранного текста, нажимаем Esc и затем :wq

  • Можем посмотреть установленные модули:

perl ./modules.pl


4. Установка дополнительных модулей PERL

Вы можете установить на хостинг дополнительные модули PERL из исходных кодов. Прежде чем приступать к установке, подключите последнюю версию PHP в разделе Управление веб-сервером Управление модулем PHP панели управления хостингом, при этом будет подключен обновленный набор программного обеспечения, который может включать в себя нужный вам модуль Perl.
Перед установкой требуется задать переменные окружения, чтобы установленные модули были доступны интерпретатору.

  • Для этого подключитесь к хостингу по SSH и создайте в домашнем каталоге файл .bashrc с помощью команды:

cat >> ~/.bashrc << "EOF"
PERL5LIB=$HOME/PERL/lib:$HOME/PERL/lib/perl5
export PERL5LIB

MANPATH=$HOME/PERL/share/man
export MANPATH
EOF

  • Чтобы изменения вступили в силу, выполните команду:

source ~/.bashrc

Для того чтобы установить выбранный модуль для PERL, необходимо выполнить следующую последовательность команд:

  • на странице http://search.cpan.org/ найдите нужный модуль, например, Net::SMPP и скопируйте ссылку для загрузки архива с исходными кодами модуля,
  • подключитесь к хостингу по SSH и перейдите в каталог для временных файлов

cd ~/tmp

  • загрузите архив на хостинг по найденной ссылке с помощью wget

wget http://search.cpan.org/CPAN/authors/id/S/SA/SAMPO/Net-SMPP-1.12.tar.gz

  • распакуйте архив и перейдите в каталог с исходными кодами модуля

tar -xf Net-SMPP-1.12.tar.gz
cd Net-SMPP-1.12

Установку необходимо выполнять в отдельный каталог, например, /home/login/PERL, где login — идентификатор услуги хостинга, указав переменную INSTALL_BASE.

  • Для установки модуля с помощью файла Makefile.PL используйте команды:

perl Makefile.PL INSTALL_BASE=$HOME/PERL
make
make install

  • Для установки модуля с помощью файла Build.PL используйте команды:

perl Build.PL
./Build --install_base $HOME/PERL
./Build install --install_base $HOME/PERL

Для использования установленных модулей в perl-скрипте нужно их подключить, добавив следующие строки в файл скрипта:

use lib "/home/login/PERL/lib";
use lib "/home/login/PERL/lib/perl5";
use Net::SMPP;

Для того чтобы веб-сервер Apache мог работать с дополнительными модулями, необходимо в панели управления хостингом включить модуль env_module и добавить следующие строки в файл .htaccess в корневом каталоге сайта или в каталоге с CGI-скриптами:

SetEnv PERL5LIB /home/login/PERL/lib:/home/login/PERL/lib/perl5

где login — идентификатор услуги хостинга.


5. Возможные ошибки

Ошибка 403

Если при обращении к скрипту вы видите сообщение об ошибке 403, это значит, что на скрипт установлены некорректные права доступа. На CGI-скрипты необходимо установить атрибут исполнения (права доступа 755 или -rwxr-xr-x). Атрибуты можно изменить с помощью файлового менеджера панели управления.

Ошибка 500

Если во время запуска своего скрипта вы видите сообщение о 500-ой ошибке, это значит, что в скрипте есть ошибка из-за которой транслятор Perl’а не может успешно завершить свою работу. Ошибка может быть как синтаксическая (например, вы забыли где-то закрыть кавычку или фигурную скобку), так и логическая, например, в результате каких-либо ваших действий происходит деление на ноль. Для того, чтобы понять причину ошибки, вам необходимо посмотреть лог-файлы веб-сервера, которые хранятся в каталоге /var/log/.

Как подключить скрипт на сторонний сайт

Время на прочтение
12 мин

Количество просмотров 21K

Привет, Хабр! Это первый пост в нашем блоге. Многие знают нас как чат для сайта, именно с него мы начинали, а сейчас занимаем лидирующие позиции в сфере бизнес-мессенджеров. Мы постепенно эволюционировали в комплексное бизнес-решение, которое предоставляет множество возможностей для клиентов: callback, общение с клиентами через мессенджеры, соцсети, мобильные приложения, виртуальная АТС, CRM-функции и многое другое.

За несколько лет мы успешно решили множество технических проблем, накопили много интересного, а местами и уникального опыта, конечно же, писали свои костыли и велосипеды. Этим постом мы начинаем серию статей, в которых будем делиться своим опытом разработки, выстраивания процессов в полностью удаленной команде, расскажем про нашу архитектуру, технические решения, которые позволяют нам эффективно обслуживать сотни тысяч клиентов по всему миру.

image

Jivosite сегодня это:

  • 250К клиентов по всему миру;
  • 150М показов виджета в сутки;
  • 3.5М сообщений в сутки;
  • 10М чатов в месяц;
  • 1М одновременных коннектов;
  • 250+ серверов в production.

Поскольку большинство знают нас как чат для сайта, пожалуй, с него и начнем. В этой статье мы на примере нашего многолетнего опыта работы чата расскажем, как лучше подключать свой код на сторонний сайт и на что следует обратить внимание. Эта статья будет полезна тем, кто планирует или уже разрабатывает подключаемый сервис, и просто всем, кому интересна эта тема.

Входная точка

Театр начинается с вешалки, а подключаемый сервис с кода-вставки. Он является входной точкой для любого сервиса или модуля на сайт. Как правило, его можно найти в инструкции установки, после чего необходимо добавить его в HTML-код сайта, а дальше происходит «магия», которая определенным образом загружает и инициализирует скрипт.

<script src="https://site.com/file.js"></script>

Казалось бы, что может быть проще подключения скрипта на сайт? По стандарту, необходимо просто добавить тег script в HTML-код страницы. Но на самом деле это важный этап, скрывающий много подводных камней. Например, идентификация пользователя, реализация резервного канала загрузки скрипта, настройка внешнего вида или логики, скорость загрузки страницы и так далее. Но давайте обо всем по порядку.

Идентификация

Просто так подключать скрипт мало кому интересно, наверняка скрипт выполняет какую-либо логику, а эта логика привязана к пользователю. Например, ID счетчика, APP_ID от соцсети, в нашем случае это ID созданного канала связи. То есть скрипт должен идентифицировать пользователя в запросах на сервер. Для идентификации клиента через код-вставки есть три варианта реализации.

Вариант #1

<script async src="https://site.com/file.js?id=123"></script>

Передавать ID прямо в ссылке на файл и на стороне сервера каким-либо способом прокидывать его в скрипт. В этом случае серверу на лету придется прописывать ID в файл или формировать JS-строку c ID, которая будет загружать file.js. Эта логика похожа на реализацию JSONP-запросов.


Долгое время мы работали по такому принципу, но минусы этого подхода в том, что добавляется «холостая» нагрузка на сервер и необходимость реализации серверного кэширования.

Вариант #2


<script src="https://site.com/file.js" [async]></script>
<script type=”text/javascript”>
	window.serviceNameId = “123”;
	//или
	ServiceNameModule.init({id: “123”});
</script>

Атрибут async — говорит браузеру о том, что не нужно дожидаться загрузки скрипта для построения DOM, скрипт надо выполнить сразу после загрузки. Это уменьшает время загрузки страницы, но есть и обратная сторона медали: скрипт может выполняться до того, как DOM будет готов к работе.

Одна из самых популярных реализаций, так делают в том числе и крупные сервисы, отличается только синтаксис, но суть у всех одна.


У такого подхода есть два основных минуса, первый — усложняется код-вставки, а второй — очень важен порядок выполнения данного кода, в противном случае ничего работать не будет. К тому же необходимо делать выбор между скоростью (async) и стабильностью (без async), большинство выбирают 2-й вариант.

Вариант #3

<script async src="https://site.com/file.js?id=123"></script>

Аналогично первому варианту передавать ID в ссылке на файл, но извлекать его в браузере, а не на сервере. Это не так просто, как кажется, но возможно. В API браузера есть свойство document.currentScript, оно возвращает ссылку на скрипт, который загружен и в данный момент выполняется в браузере. Зная это, можно вычислить ID, для этого надо получить свойство document.currentScript.src и регуляркой вытащить из него ID.


Есть одно но: document.currentScript поддерживается не всеми браузерами. Для браузеров, не поддерживающих это свойство, мы придумали интересный хак. В коде file.js можно выбросить специальное «фейковое» исключение, обернутое в try/catch, после чего в стеке ошибки будет URL скрипта, в котором произошла ошибка. URL будет содержать ID, который мы получаем той же регуляркой.

Вот такая магия получается, но это работает. Нет заморочек с порядком выполнения, код-вставки выглядит просто и нет оверхеда на сервере. Последние два года мы используем именно такой подход, хотя сам код-вставки у нас отличается, но принцип тот же.

Настройки

В большинстве случаев у подключаемых скриптов есть какие-либо настройки, отвечающие за внешний вид или логику работы. Эти настройки необходимо «прокидывать» в подключаемый скрипт, для этого существуют два принципиально разных подхода.

Подход #1

<script async src="https://site.com/file.js"></script>
<script type=”text/javascript”>
	window.serviceName = {color: “red”, title: “Заголовок”, ...};
	//или
	ServiceNameModule.init({color: “red”, title: “Заголовок”, ...});
</script>

К этому подходу также относится передача настроек в GET параметрах url скрипта, аналогично варианту #1 из раздела «Идентификация». Подход заключается в том, что если клиент хочет поменять настройки, то ему необходимо отредактировать код-вставки и обновить его на сайте.


Это хорошо тем, что все настройки хранятся на клиенте и их не надо хранить на сервере, разрабатывать и обслуживать всю связанную с этим бизнес-логику. Главным минусом такого подхода является неудобство для клиента, ему приходится все делать вручную, а если настроек много, то код-вставки превращается в сложно поддерживаемую простыню, в которой легко допустить ошибку. А чтобы обновления вступили в силу, надо обновлять сайт, это лишние телодвижения разработчиков и админов.

Подход #2

<script async src="https://site.com/file.js?id=123"></script>

Второй подход заключается в том, что в случае необходимости изменения настроек клиенту не надо модифицировать код-вставки, все настройки хранятся на сервере. Для того чтобы поменять настройки, надо зайти в графическую панель, изменить нужные параметры и нажать кнопку «Сохранить». После этого настройки автоматически применятся для его сайта!


Не надо разбираться в коде и делать ради этого деплой, этим может заниматься человек, далекий от JavaScript, например менеджер. Конечно для пользователей такой вариант гораздо удобнее и проще, поэтому именно его мы используем. Но за удобство надо платить, такой подход требует разработки и поддержки логики на сервере и подразумевает дополнительную нагрузку на него. В следующих статьях мы обязательно расскажем, как мы ежедневно обрабатываем 150М таких запросов.

Обратная совместимость

Очень важно максимально быстро прийти к зрелой версии кода-вставки. Потому что обновлять уже установленные коды-вставки будет крайне сложно. Пример из нашей практики: в первых версиях мы использовали числовые ID, но по соображениям безопасности заменили их на число-буквенные. Оказалось, что очень сложно добиться изменения уже установленного кода-вставки. Многие даже не знают, что такое HTML и как устроены сайты. Например, сайт делали фрилансеры, студия или сайт создавался через CMS/конструктор и т. д. В большинстве случаев наши клиенты работают только с панелью настроек виджета. С тех времен у нас до сих пор в nginx работает мапа реврайта старых ID на новые, в которой около 40К записей.


....
/script/widget/config/15**90 /script/widget/config/bqZB**rjW5;
/script/widget/config/15**94 /script/widget/config/qtfx**xnTi;
/script/widget/config/15**95 /script/widget/config/fqmpa**4YX;
/script/widget/config/15**97 /script/widget/config/Vr21g**nuT;
/script/widget/config/15**98 /script/widget/config/8NXL5**F8E;
/script/widget/config/15**00 /script/widget/config/Th2HN**6RJ;
....

Из-за этой особенности мы вынуждены сохранять обратную совместимость кода-вставки при всех рефакторингах, которых на нашей памяти было около 5.

Изоляция кода

Так как скрипт подключается на сторонний сайт, на котором уже есть JavaScript и CSS код сайта и других сервисов, первостепенной целью является не навредить сайту, чтобы наш код не изменил логику, а тем более не сломал ее. Это может быть JavaScript-ошибка, которая останавливает поток выполнения, или стили, которые переопределяют стили сайта. Но и код сайта может саффектить подключаемый скрипт, например используется библиотека которая модифицирует браузерное API, после чего код перестает работать или работает не так, как мы ожидаем.

<script type="text/javascript">
   // код mootools.js
   var JSON = new Hash({
       encode: function () {},
       decode: function () {}
       // ...
   });
   // код подключаемого скрипта
   JSON.parse(json); // Uncaught TypeError: JSON.parse is not a function
</script>

<style type="text/css">
   // код библиотеки или разработчика сайта
   body * {
       padding: 20px;
   }
   form input {
       display: block;
       border: 2px solid red;
   }
</style>

Есть разные варианты изоляции кода. Например можно использовать префиксы в JS переменных, замыкания, чтобы не засорять глобальный контекст, использовать что-то наподобие БЭМ для стилей. Но самый простой способ — это выполнения кода в iframe, он решает большинство проблем изоляции, но накладывает определенные ограничения. Мы используем гибридный вариант, про изоляцию кода расскажем подробнее в следующих статьях.

Блокировка загрузки сайта

Событие onload — наступает после того, как веб-страница полностью загружена, включая изображения, стили и внешние скрипты. Важная особенность в том, что на большинстве сайтов JS-логика, сторонние скрипты и реклама начинают работать по наступлению этого события. Очень важным пунктом для всех подключаемых скриптов является не допустить негативного влияния на это событие.

Это происходит в тех случаях, когда сервер, с которого грузится скрипт, отвечает долго или вовсе не отвечает: тогда событие onload откладывается и дальнейшая загрузка страницы по сути блокируется. В случае, когда сервер недоступен, событие onload наступит только по истечении таймаута запроса, который больше 60 с. Таким образом, проблемы на сервере отдачи скрипта по сути «ломают» сайты, что является недопустимым.

Личный опыт
В прошлом я работал в компании, у которой был сайт с одновременным онлайном 100К, онлайн-знакомства. В те времена были попопулярны кнопки «Поделится в соцсетях». Чтобы они появились на сайте, надо было подключить скрипт (sdk) от нужных соцсетей. В один прекрасный день к нам прибежали коллеги и сказали, что наш сайт не работает! Мы посмотрели в мониторинги, в которых все было нормально, и сначала не поняли, в чем проблема. Когда начали разбираться глубже, поняли, что cdn-сервера Twitter прилегли, и их SDK не мог загрузиться, это блокировало нам загрузку сайта на ~1.5 минуты. То есть после открытия сайта загружался небольшой HTML(остальное SPA) и только через 1.5 минуты все прогружалось, срабатывал тот самый таймаут запроса. Нам пришлось экстренно организовывать хотфикс и убирать их скрипт с сайта. После повтора этой ситуации мы решили убрать блок «Поделиться» совсем.

В первых версиях кода-вставки у нас не было это учтено, и в случае технических проблем на нашей стороне мы, мягко говоря, доставляли неудобства нашим клиентам, но со временем мы это исправили.

Решение

<script type='text/javascript'>
   (function(){
       var initCode = function () {
         // insert script tag
       };
       document.readyState === 'complete' ?
           initCode() :
           w.addEventListener('load', initCode, false);
   })();
</script>

Решение простое, надо подписаться на событие полной загрузки сайта и только потом загружать скрипт, для этого надо использовать код-вставки, а не тег script.

Google Pagespeed


Результаты анализа мобильной версии habr.com

Большинство уделяют внимание скорости загрузки сайта, по многим исследованиям это напрямую влияет на прибыль, к тому же поисковые алгоритмы при ранжирование стали учитывать время загрузки страницы. В связи с этим владельцы сайтов часто используют подобные инструменты для оценки производительности сайта. Поэтому очень важно оптимально подключать код на сайт, так он напрямую влияет на его время загрузки.

Это означает, что надо использовать современные техники оптимизации загрузки страниц. Например использовать Gzip, кешировать статические файлы и запросы, использовать асинхронную загрузки скриптов, сжатие статики современными алгоритмами такими как WebP/Brotli/etc и использовать другие оптимизации. Мы регулярно проводим аудит и реагируем на предупреждения и рекомендации, чтобы соответствовать современным требованиям.

CDN

В первых версиях мы загружали статику с серверов приложения. Но у такого подхода есть минусы: дорогой трафик, удаленность от посетителей сайтов и излишняя нагрузка на канал серверов. Можно легко забить канал серверов приложения при хабр-эффекте сайтов, так как трафик статики очень «тяжелый».

С целью экономии бюджета, стабильности и уменьшения сетевой задержки оптимально загружать статику со специально предназначенных для этого серверов. Можно использовать готовые CDN-провайдеры, но на больших масштабах это недешево и приходится ограничиваться возможностями, которое предоставляет тот или иной провайдер.

Мы реализовали это просто, заказали недорогие сервера в России, Европе и Америке с безлимитным трафиком и широким каналом. Это дешево, не накладывает на нас никаких ограничений, мы можем настроить все под себя, а отказоустойчивость обеспечивается за счет механизма, работающего в браузере. В данный момент с наших CDN-серверов загружается 1ТБ статики ежедневно.

Отказоустойчивость

К сожалению, мир не идеален, случаются пожары, аплинки падают, ДЦ целиком уходят под воду, РКН блочит подсети, а люди совершают ошибки. Тем не менее, необходимо уметь обрабатывать такие ситуации и продолжать работать.

Мониторинг
Сначала надо понять, что что-то пошло не так. Можно, конечно, подождать, пока пользователи придут и пожалуются, но лучше настроить мониторинг и алерты, а после релизов, проверять все ли в порядке. Мы мониторим много различных параметров, как серверных, так и клиентских, и если что-то пошло не так, мы сразу это видим. Например, уменьшилось количество загрузок виджета или аномальный всплеск трафика на CDN-серверах.


Суммарное кол-во загрузок виджета по каждой версии

Сбор ошибок
JavaScript очень специфичный язык, и допустить в нем ошибку несложно. К тому же зоопарк браузеров в современном вебе очень большой; то, что работает в последнем Chrome, не факт, что будет работать в Safari или Firefox. Поэтому очень важно настроить сбор ошибок из браузера и вовремя реагировать на всплески. Если ваш код работает в iframe, то сделать это можно отслеживая глобальный обработчик window.onerror и в случае ошибки отправлять данные на сервер. Если код работает вне iframe, то реализовать сбор ошибок очень сложно.


Суммарное кол-ва ошибок со всех сайтов и браузеров


Информация по конкретной ошибке

CDN Failover
Выше я уже писал, что все имеет свойство падать, поэтому важно обрабатывать эти ситуации и лучше — автоматически. Мы прошли несколько этапов фаллбека CDN-серверов, начинали с ручного, а в итоге нашли способ делать это автоматически и оптимально для браузера.

В ручном режиме это работало просто: админам приходило СМС о том что CDN прилег, они совершали определенные манипуляции, после чего виджет начинал загружаться с серверов приложения. Это могло занять от 5 минут до 2 часов времени.

Для реализации автоматического фаллбека необходимо как-то детектить, что загрузка скрипта началась, но сделать это не так просто, как кажется. Браузер не дает возможности отслеживать промежуточные состояния загрузки тега script, как например событие onprogress в XMLHttpRequest, а сообщает только событие по окончанию загрузки и выполнения скрипта. Также нельзя за приемлемое время узнать, что сервер в данный момент недоступен, единственное событие onerror срабатывает по истечении таймаута запроса, больше 1 минуты. За минуту посетитель может уже покинуть страницу, а скрипт так и не загрузится.

Мы пробовали разные варианты, простые и сложные, но в итоге пришли к решению с ping-запросом CDN-сервера. Работает это так: мы сначала пингуем CDN-сервер, если ответил, то тогда мы загружаем виджет с него. Чтобы реализовать эту схему оптимально для браузера и наших серверов, мы используем легкий HEAD-запрос (без тела), а при последующих загрузках мы его не делаем, пока не обновится версия виджета, т. к. виджет уже в кеше браузера.


Таким образом мы получили очень быстрый и автоматически детект доступности сервера статики и в случае падения практически без задержек переходим на резервный сервер.

Loader

Чтобы загрузить свой скрипт на сторонний сайт, надо учесть множество моментов, но реализовать эту логику в коде-вставки сложно, так как он просто превратится в «мясо». Но делать это все равно надо, для этого мы создали небольшой модуль, который управляет всей этой логикой «под капотом» и загружает основной код виджета. Он загружается в первую очередь и реализует CDN Failover, кеширование, обратную совместимость со старыми кодами-вставки, А/Б тестирование, постепенную выкладку новой версии виджета и множество других функций.


Таким образом поэтапно мы пришли к схеме, которая покрывает основные кейсы загрузки и инициализации виджета. Она доказала свою эффективность за годы использования на большом количестве различных сайтов. При этом код-вставки остается простым и универсальным, так как в нем нет никакой логики и мы в любой момент можем ее поменять, при этом не заставляя пользователей менять код-вставки.

Сторонние сервисы

Ну и напоследок стоит упомянуть про сторонние сервисы, которые подключаются на сайт или каким-либо образом взаимодействуют с сайтами: поисковые боты, аналитика, различные парсеры и так далее. Эти сервисы оставляют отпечаток на работе, про это тоже не стоить забывать. Расскажу несколько случаев из нашей практики.

GoogleBot
В нашем приложении оператора есть функция «Посетители», в которой можно посмотреть посетителей, в данный момент просматривающих сайт, и различную информацию по ним: время на сайте, страницу, число просмотренных страниц и так далее. В определенный момент клиенты начали жаловаться, что у них «висят» посетители с других сайтов, то есть на сайте по продаже айфонов, клиент, у которого якобы открыта страница «Купить крем для лица». Когда начали разбираться, выяснили, что это GoogleBot, который при переходе от сайта к сайту кешировал LocalStorage первого и впоследствии передавал неправильные данные на сервер.

Решение простое, на сервере начали игнорировать данные от GoogleBot.

Яндекс.Метрика
В метрике есть замечательная функция — вебвизор, которая позволяет посмотреть, что видел и делал пользователь, в виде скринкаста. Для этого метрика записывает все действия пользователя, а после специальный бот метрики ходит по сайтам, совершает те же действия и записывает это. Проблема была в том, что для эмуляции мобильного браузера пользователя, по нашим данным, включался Firefox в режиме мобильной эмуляции, но при этом userAgent у бота был десктопный.

Это приводило к тому, что при просмотре мобильных пользовательских сессий в вебвизоре на записи открывалась десктопная версия виджета, хотя на самом деле у пользователей открывалась мобильная. Наши клиенты думали, что так и есть, и заваливали нас жалобами. В итоге нам пришлось детектить, что виджет загружен в вебвизоре, понимать, что в нем открыта мобильная версия, и в этом случае подсовывать туда мобильный виджет.

Примеров намного больше, но, думаю, этого будет достаточно для понимания сути.

Заключение

Надо очень внимательно относиться к коду, который вы отдаете клиентам для вставки на сайт. Мы кратко рассказали, с какими проблемами мы столкнулись и как их решали. В следующих статьях мы более подробно расскажем про некоторые упомянутые темы и другие участки нашей системы, например, как мы используем NodeJS в качестве бэкенда, как держим нагрузку всех 270К сайтов за счет продуманного кеширования и не боимся хабра-эффекта подключенных к нам сайтов, как работаем в полностью распределенной команде и многое другое.

Спасибо за внимание, будем рады ответить на ваши вопросы и комментарии!

Понравилась статья? Поделить с друзьями:
  • Kloremin инструкция по применению на русском языке
  • Инструкция по применению пакетов для стерилизации стерит
  • Pro best defense инструкция на русском
  • Нейромультивит сироп для детей инструкция по применению
  • Руководство по истории кпсс