Подробная инструкция по установке SSL-сертификата Let’s Encrypt на сервер с CMS Bitrix и Nginx. Хабр битрикс
собеседники на все случаи / Блог компании 1С-Битрикс / Хабр
В последнее время чат-боты обрели нешуточную популярность, превратившись из развлечения для гиков в едва ли не must have-фичу во всевозможных мессенджерах, соцсетях и на сайтах. Причём во многих случаях чат-боты используются не для развлечения праздной публики, а для решения совершенно серьёзных бизнес-задач. Просто делают они это более дружелюбно и доверительно, в совершенно естественной для человека форме диалога. Даже больше: в форме индивидуальной переписки. А что сегодня может быть естественнее, в эпоху интернета, мессенджеров и смартфона в каждом кармане? Поэтому мы тоже задумались о том, чтобы оснастить наш облачный сервис «Битрикс24» для организации работы компаний таким полезным и востребованным инструментом. И чуть больше месяца назад выпустили свою собственную платформу для создания чат-ботов. Чат-бот — это приложение, способное поддержать письменный диалог с пользователем, выбирающее ответы из базы данных и реагирующее на некий набор команд. Сегодня на рынке в основном представлены чат-боты из сегмента «клиент-клиент». То есть это инструменты общения (и развлечения) между обычными пользователями. А платформ, адаптированных для решения бизнес-задач, куда меньше.
Какие же задачи могут решать чат-боты в бизнес-сегменте?
- Выполнение рутинных операций. Всегда есть какие-то достаточно простые и однообразные задачи, на которые не хочется тратить время сотрудников, но которые вполне по силам чат-ботам. При этом чат-боту не нужно будет заставлять себя поработать, уговаривать взяться за скучное дело: он выполнит всё быстро и безошибочно. Конечно, насколько ему позволят его алгоритмы.
- Поиск и агрегация данных. Чат-ботов можно использовать и для сбора материалов для последующей аналитики. Естественно, это делается через общение с людьми. Также чат-боты могут выступать и своеобразным каналом распространения информации внутри компании или в рамках сервиса, сообщая всем участникам новости и предоставляя справочную информацию.
- Первая линия работы с клиентами, помощники, консультанты. Чат-боты помогают удерживать посетителя, развлекая его или предлагая первичную информацию, пока не освободится и не подключится к беседе человек-консультант. Также чат-бот полезен для контактов с посетителями в нерабочее время. Он помогает создавать приятное впечатление о компании, прося контактные данные, чтобы можно было связаться с клиентом в рабочее время. Чат-боты могут отвечать на типовые вопросы, помогать ориентироваться на сайте или в приложении, подсказывая, где можно найти те или иные инструменты, проводя своеобразную «экскурсию» по продукту.
Электронные помощники в соответствии с запросами способны предлагать посетителям те или иные товары, избавляя от хождения по каталогу. Это также хороший инструмент для провоцирования спонтанных покупок.
- Just for Fun. Наконец, никто не отменяет и развлекательную функцию, всегда должно быть место для улыбки.
Наша бот-платформа
Наш чат-бот Марта, использующий технологии машинного обучения компании «Наносемантика», встроен в сервис «Битрикс24» по умолчанию. Также в рамках «Битрикс24» работают еще два чат-бота: Giphy, который находит анимированные gif-изображения по запросу пользователя сервиса, и «Реквизиты контрагента» — чат-бот, позволяющий находить реквизиты любой компании из списка ФНС России.Чат-бот Марта
Марта — это собеседник. Она наш виртуальный помощник, разработана совместно с компанией «Наносемантика». Марта умеет поддержать разговор на общие темы. Она может помочь сориентироваться в функционале «Битрикс24», подскажет, где искать ответы на конкретные вопросы, порекомендует полезные ссылки. Также Марта умеет напоминать о встречах и выполнять некоторые задачи.
Чат-бот Giphy
Giphy (Гифи) — развлекательный бот. Он по запросу пользователя находит и присылает анимационные гифки на заданные темы.
Чат-бот РЕКВИЗИТЫ КОНТРАГЕНТА
«Реквизиты контрагента» — классический бизнес-бот, интегрированный с базой-данных ФНС России (Федеральной налоговой службы). Он умеет искать компании из списка ФНС по ИНН, ОГРН, названию компании или имени руководителя.
Боты от партнеров для «Битрикс24»
В магазине готовых приложений для «Битрикс24» есть еще полезные боты – один из них – «Переводчик», реализованный PWEB, умеет переводить тексты с одного языка на другой и поддерживает 63 языка. Другой – OCR Bot от «First open systems» — умеет распознавать сканы любых документов и сохранять их в текстовом формате RTF.Возможности бот-платформы
В своей бот-платформе мы реализовали все ключевые моменты, которые сегодня стали стандартом для чат-ботов.В частности:
- В групповом чате бот реагирует только на те сообщения, которые были отправлены лично ему (для этого нужного бота стоит упомянуть, например, «@Марта, расскажи о CRM»).
- Бот поддерживает обработку слэш-команд: введите символ / и выпадет список понимаемых ботом команд. Также в сообщениях бота можно выводить активные ссылки.
- Бот также работает в режиме тет-а-тет.
Команды могут быть глобальными (доступны в любом чате), локальными (доступны только при общении с определенным ботом) и скрытыми (доступны только при обращении через активные ссылки или клавиатуры).
- Платформа поддерживает использование put-команд, когда пользователю не нужно целиком набирать длинное сообщение, а достаточно лишь дополнить его. Например, вам нужна статистика за такое-то число. Чтобы не вводить «дай статистику» и какую-то команду, можно сделать отдельную кнопку, при нажатии которой у вас автоматически набирается нужная фраза, в которую достаточно вписать требуемую дату.
- Можно управлять ботом не только словами и командами, но с помощью кнопок, которые могут отображаться в сообщении от бота. Многим пользователям куда привычнее и удобнее нажимать кнопки. Они могут быть разного размера, цвета, располагаться рядами. Можно реализовать мини-страницы с кнопками. Сами кнопки могут быть ссылками, либо могут выполнять какие-то запрограммированные команды, например, отображать реквизиты компании.
А вот пример нестандартного сценария использования кнопок:
- Платформа поддерживает конструктор сообщений, позволяющий из блоков собирать красивые и функциональные «богатые сообщения». На сегодня доступны следующие блоки:
- Блок пользователя
- Блок ссылки
- Блок текста
- Блок разделитель
- Блок для построения строк и колонок
- Блок изображений
- Блок с файлами
- Пуш-уведомления. Одним из преимуществ чат-ботов является их удобство для получения информации сотрудниками компании. Заходить в браузер на смартфоне не слишком удобно, гораздо быстрее и проще запросить какие-то данные у чат-бота. А когда он их соберёт, то сразу об этом сообщит.
- Пользователь пишет сообщение в чате
- На сервер приложения отправляется POST-запрос
- Приложение его обрабатывает
- Отправляет обратно на Битрикс24 по REST API какую-то команду
Боты в Битрикс24 умеют не только реагировать на действия пользователя, но проявлять активность, инициируя сессию. Например, пользователь пообщался с ботом и забыл про него, а тот через некоторое время может о себе напомнить.
Что нужно для разработки своего бота?
Мы старались сделать бот-платформу максимально простой, чтобы обеспечить максимально низкий порог входа для создания собственных ботов. Мы считаем, что выполнили поставленную задачу, потому что 17 марта был опубликован первый черновик документации для внешних разработчиков, а 18 марта в магазине приложений для Битрикс24 был уже выложен первый партнёрский бот.Самый простой способ написания бота на нашей платформе: скачать демо-бота (бот-эхотест, который просто повторяет всё, что вы ему пишете) и модифицировать его под ваши нужды. Этот бот уже обладает полным набором возможностей, это не урезанная версия. Достаточно установить его на свой хостинг, изменить логику и опубликовать в каталоге приложений. Бот предоставляется в виде РНР-файла, но с помощью нашего API вы можете написать своего бота на любом другом языке.
Если же вам нужна гораздо более широкая или специфическая функциональность чат-бота, то вы можете воспользоваться SDK, разработанным нашим партнером. Он отлично функционирует и подходит для решения ваших задач:
- Свободная библиотека, MIT License.
- Поддерживает большую часть Rest API.
- Полностью поддерживает Chat API.
- Полностью поддерживает Bot API.
- Данный SDK активно используют более 200 партнеров.
- Среди компаний, работающих в «Битрикс24», которые установили приложения, более чем в 30% случаев есть хотя бы одно приложение, использующее SDK.
Документация по платформе
В данный момент мы составляем финальную версию документации, но уже есть доступен черновик и несколько статей о том, как с этим работать. Черновик доступен (и постоянно обновляется) на нашем сайте для разработчиков. Финальная документация планируется к публикации в течение ближайших недель.Общая документация.Возможности форматирования.«Богатые» сообщения. «Набираемые клавиатуры».Текстовые команды.Скачать демо-бота (Мы разместили тестового бота на БитБакет, вы сможете ознакомиться с ним по данной ссылке).
habr.com
Как соответствовать ФЗ-152 «О персональных данных» c «Битрикс24» и «1С-Битрикс»
С 1 июля 2017 года будет сильно ужесточена административная ответственность за нарушения при работе с персональными данными физических лиц. Это касается и владельцев сайтов, которые собирают такую информацию о посетителях. Как быть тем пользователям Битрикс24, кто собирал персональные данные автоматизированно, с помощью CRM-форм или Открытых линий? Мы решили помочь своим клиентам соблюсти закон и избежать штрафов. Автоматизируем и это!В CRM-формах
Что нужно сделать:- Заполнить реквизиты своей компании в настройках CRM. Также это можно будет сделать при настройке согласия в CRM-форме.
- Указать e-mail, на который клиенты смогут отправлять запросы на удаление персональной информации. Согласно закону, на такие запросы необходимо отреагировать. Сейчас указан только пример e-mail адреса, можно оставить его или сменить в настройках формы.
- Проверить в настройках активных форм, что согласие подключено и корректно отображается для клиента.
- Два варианта подтверждения:
- под формой стоит галочка — соответствует согласию «Нажимая кнопку «Отправить», я даю свое согласие...»
- под формой нет галочки — ее нужно будет поставить перед отправкой заполненной формы.
- В настройках формы по умолчанию есть галочка на согласие передачи персональных данных третьим лицам. Там можно указать эти лица (например, ООО «Почта России» или курьерская служба) — их тоже включат в текст согласия.
- Можно выбрать или добавить собственные варианты использования и сроков хранения персональных данных.
- В текст согласия также включается указанный e-mail для удаления данных. Если на портале меньше 20 пользователей, то автоматически будет проставлен e-mail администратора портала.
В Открытых линиях
Сначала в настройках открытой линии нужно включить отправку предупреждения о сборе персональных данных.Когда начнётся разговор с клиентом, появится сразу два сообщения, предупреждающих о необходимости согласия на обработку персональных данных.
Если человек продолжит писать в открытую линию, то это будет считаться согласием. А если промолчит или прямо ответит, что не согласен, то его данные нужно удалить.
habr.com
React в браузерах и на мобильных платформах / Блог компании 1С-Битрикс / Хабр
Этот пост написан по материалам выступления Григория Петрова из компании VoxImplant на партнёрской конференции «1С-Битрикс».
Вообще говоря, наша компания Voximplant занимается созданием решений для облачной голосовой телефонии. Но на страницах этого поста я хотел бы поговорить не об этом, а о некоторых перспективных технологиях. Так получилось, что уже больше 15 лет я делаю софт, как самостоятельно, так и в роли руководителя команд разработчиков и консультанта.
За последние несколько лет индустрия создания программного обеспечения развивается просто безумными темпами. И особенно хорошо это видно на примере близких нам веб-технологий, к которым относятся все продукты «1С-Битрикс». И одним из направлений развития является перенос на мобильные платформы, с внедрением адаптивной вёрстки и многого другого хорошего и интересного. Технологии сменяют друг друга примерно раз в три месяца. Здесь же я расскажу об использовании технологии React, которая сейчас представлена в двух ипостасях: React.js и React Native.
История возникновения
Победное шествие React началось в 2013 году, когда у Facebook была большая проблема, связанная с отображением количества новых сообщений в чате. Долгие годы оно отображалось неправильно, и инженеры Facebook никак не могли победить чатик. Он показывал, что новые сообщения есть, хотя на самом деле их не было, и наоборот. И всех это очень печалило. В конце концов, в 2013 году инженеры Facebook собрались, сказали много всего хорошего и придумали технологию, которая должна была решить все их проблемы раз и навсегда. Забегая немножко вперед, чатик они починить не смогли, но получилось забавно.Итак, в Facebook создали React.js — технологию, которая была призвана решить проблему с чатом. Сделать это предполагалось с помощью трёх волшебных фич:
- Во-первых, изменение интерфейса без перерисовки. Как вы знаете, интерфейс у Facebook довольно развесистый. Там много всяких фидов и окошек, чат может появляться в трёх разных местах. В админской панели много разнообразных разделов. И всё это скролится, появляется и исчезает, выскакивают нотификации и лайки.
Но у браузеров есть одна маленькая проблема. Они были разработаны много-много лет назад, чтобы отображать простенькую страничку: текст, заголовок, выделенный текст. Как и HTML, браузеры совершенно не были предназначены для отображения сложных интерфейсов наподобие Facebook. Например, если пользователь что-то набирает в чате, переключается на новостную ленту, а потом обратно на чат, то пропадут фокус и текущая позиция набора.
React позволяет перерисовывать интерфейс маленькими кусочками, не трогая те части HTML-страницы, для которых это критично. Поэтому чат в современном Facebook может обновляться отдельно, как и новостная лента, не мешающая спокойно продолжать набирать своё сообщение.
- Во-вторых, у инженеров Facebook была такая мечта. Точнее, эту мечту разделяют все разработчики за последние лет 30: сделать так, чтобы можно было один раз запрограммировать кнопку для чата, а потом использовать её везде, во всех своих программах. Поэтому авторы React сказали: «Ок. Мы делаем React таким образом, что вы один раз дизайните окно чата, а затем вставляете его везде, где хотите. И у вас всё будет работать». Не работает, конечно, но попытка очень и очень хорошая.
- Наконец, последнее, что сделали инженеры Facebook — это контроль состояний. Когда вы делаете огромную, сложную систему уровня «Битрикс24», то у вас миллион каких-то кнопочек, рычажков, pop-up’ов, окошек. Всё это прыгает, скролится, работает. Поэтому элементы программы могут иметь очень много состояний: чат поскролен туда, чат поскролен сюда, есть сообщения или их нет, залогинен пользователь или не залогинен. Чем больше система, тем больше этих состояний, тем больше возникает неожиданных комбинаций. И в результате программа может вести себя довольно странно. Например, как чат Facebook. В React используется функциональная парадигма: он позволяет делать маленькие компоненты, даём на вход некое состояние, на основании которого они и работают.
Зато программистам больше всего пришлось по вкусу то, что интерфейс собирается из небольших компонентов. До React веб-программирование представляло собой «варку лапши», когда разрабатывают сложную систему из огромного HTML и вдвое более крупного CSS, приправленную горами JavaScript.
А при внедрении React вся эта монструозность неожиданно разваливается на десятки и сотни маленьких кусочков. При этом каждый из них получается простым и понятным, что многократно облегчает процесс изменения интерфейса и вылавливания багов.
Это свойство обеспечило взрывной успех React.js. Сейчас в интернете тысячи статей, посвящённых использованию этого инструмента. React.js сегодня в большой моде, на него переходят крупные компании, потому что он позволяет программистам избавиться от огромной боли «лапши» в своём коде.
React Native
Всё это время Facebook сидел в засаде. И через два года после выпуска своей разработки они заявили: «Знаете, нам так понравился React.js, что теперь мы будем делать на нём также и мобильные приложения». И выкатили React.js для iPhone, а ещё через полгода — для Android.Это было неожиданно. Как можно технологию для создания веб-интерфейса, да ещё на JavaScript, использовать на мобильных платформах? Facebook подошёл к этому с выдумкой, использовав наработки проекта Appcelerator Titanium. Он создавался несколько лет назад, но не обрёл большой популярности. Зато все сразу стали пользоваться React Native.
Что такое React Native? Когда мы делаем веб-сайт с пользовательским интерфейсом, то всё достаточно просто. У нас есть HTML, DIV, INPUT, BUTTON. Есть дизайнер, который их раскрашивает во всякие забавные цвета, и мы всем этим пользуемся.
Но при создании приложения для мобильных платформ у нас есть отдельно Android и iOS, в которых куча своего пользовательского интерфейса. Кнопки, input’ы и drawer на Android работают не совсем так, как на iPhone. Поэтому, когда вы создаёте мобильное приложение, то можете пойти другим путём: внедрить в приложение кусочек браузера и рисовать привычный HTML.
Так делает, например, популярный PhoneGap. Преимущество этого подхода в том, что приложение выглядит совершенно одинаково на всех устройствах. Недостаток: оно выглядит одинаково уродливо. Потому что пользователи Android и iOS привыкли к характерному виду элементов интерфейса, к их красивой анимации кнопочки. И когда они видят вашу веб-страничку, запакованную в виде приложения, то немного удивляются.
Есть и третий путь: можно для каждой платформы делать свой собственный интерфейс, используя «родные», нативные элементы. Так делалось ещё в Appcelerator Titanium за много лет до появления React Native. Собственно, слово Native в названии как бы подразумевает, что мобильное приложение, использующее React, будет использовать кнопочки, текстовые поля, input’ы и все остальные элементы, характерные для данной операционной системы.
Преимущества React
Работает всё это очень просто. Универсальное приложение, которое должно работать как веб-страничка на Android и iPhone, состоит из JavaScript-кода. Он отвечает за бизнес-логику: что должно делать приложение, когда пользователь нажал кнопку «Купить», как отображать элементы приложения, и т.д. Этот код одинаков для всех платформ. А код, отвечающий за пользовательский интерфейс, — то, что делает React, — разный для каждой из платформ.React позволяет делать приложение на JavaScript, внутри которого создаются виджеты в синтаксисе XML. Выглядит это примерно вот так.
Общий код на JS | Общий код на JS | Общий код на JS |
<HоrizontalLayout><ProgressBar/></HоrizontalLayout> | <TаbBarIOS><TabBarIOS.Item/></TаbBarIOS> | <DrаwerLayoutAndroid><ProgressBarAndroid/></DrаwerLayoutAndroid> |
В этом и преимущество, и недостаток React. Если в вашем приложении много бизнес-логики, то основная масса кода будет совершенно одинаковой для всех трёх платформ — веба, Android и iOS. Если же приложение представляет собой пользовательский интерфейс к базе данных, то и код по большей части будет отличаться.
Многие компании, пытаясь «продать» средство кроссплатформенной разработки, обычно рассказывают истории из серии «Посмотрите, как замечательно! Мы сделали текст “Hello, world!”, поле ввода, кнопочку, и оно совершенно одинаково выглядит под двадцатью платформами, и всё работает».
Но на практике мало кому нужно делать столь примитивные программы. Обычно приложения создаются для того, чтобы зарабатывать деньги и решать бизнес-задачи, так что они получаются гораздо сложнее. Иногда очень-очень сложнее. Поэтому уместно будет спросить: «Ребята, ок. А если мы попытаемся сделать приложение, где будет 50 кнопок, сотни input’ов и два десятка окошек, как это себя поведёт?».
В отличие от остальных кроссплатформенных решений, React поведёт себя хорошо. Во-первых, доступно очень большое количество компонентов для веба. Если вы используете React.js для создания приложения и хотите, чтобы оно отображалось как веб-страничка, то можете использовать готовые наборы блоков. Например, сейчас очень популярен Google Material Design. Вы просто берёте горизонтальный и вертикальный layout’ы, кнопки, поля ввода, и всё это выглядит так же красиво, как Bootstrap, но при этом не надо ничего верстать. Словно собираете кирпичики Lego.
Огромное количество компаний и энтузиастов постоянно создают новые библиотеки и пользовательские интерфейсы для React Native. Например, у Facebook на GitHub есть небольшой набор для создания приложений, которые должны работать на Android и iOS. В поисковиках вы сразу найдёте карты, биллинг, базы данных, сетки, огромное количество портированных компонентов. Правда, часть из них не работает, но это open source, очень перспективные технологии.
И наконец, многие компании делают универсальные решения, которые вы можете использовать с React как в вебе, так и на мобильных платформах. Например, если вы пользуетесь телефонией Voximplant, то можете применять наш SDK как в веб-приложениях, так и в мобильных. Скажем, реализуете приложение на React для веба, Android и iOS, при этом наш SDK также позволяет звонить или принимать звонки на этих платформах. Таким образом, ваши веб-разработчики пишут один и тот же код, а получается три разных решения.
Недостатки
Конечно, не всё так радужно. Помимо множества достоинств, у React.js и React Native есть и немного недостатков.Самый большой из них — если вы хотите использовать React на мобильной платформе, то у вас будут нативные виджеты. Это сильно ускоряет разработку, интерфейс выглядит привычно, но вашим программистам придётся это учить. То есть взять толстый талмуд по разработке приложения под Android и посмотреть, какие элементы пользовательского интерфейса там есть, как они взаимосвязаны друг с другом, как этим всем пользоваться и правильно собирать. И когда те же разработчики попробуют сделать приложение для iOS, то придется взять ещё больший талмуд от Apple и проштудировать, чтобы результат выглядел как нормальное приложение. Это, безусловно, занимает время.
Ещё один недостаток заключается в том, что при использовании React для веба он вам не даёт вообще ничего. Вот DIV’ы, верстайте сами. Для мобильных платформ из коробки доступно порядка трёх десятков виджетов, хотя у каждой из них намного больше элементов пользовательского интерфейса, под сотню. И если вы хотите использовать что-то помимо маленького стандартного набора, то придётся либо идти на GitHub и набираться идей, либо писать самостоятельно на низкоуровневом языке вроде Java или Objective-C.
Третий недостаток связан с молодостью проекта React Native. Это пока очень сырая технология, которую пока не успели довести до ума, в отличие от React.js. Конечно, проект развивается, Facebook постоянно что-то чинит, иногда что-то ломает. И если вы хотите использовать эту технологию, то будьте готовы к тому, что у ваших разработчиков иногда что-то не будет получаться, и чтобы это починить, они будут много времени проводить на Stackoverflow.
React и Angular
В интернете много статей, в которых сравнивают эти две технологии. Angular — это большой полноценный framework, заточенный для создания веб-сайтов. Сейчас делают попытки перенести Angular на мобильные платформы, как и React Native, но это пока эксперименты.Если ваш бизнес заключается в конвейерном создании не очень сложных веб-сайтов, то Angular подойдёт идеально. Его главное преимущество в том, что он всё умеет делать из коробки. При этом шаг влево-шаг вправо рассматривается как попытка взлететь. Едва вы пытаетесь сделать что-то, что не очень хорошо укладывается в рельсы Angular, то будете тратить в пять раз больше времени.
React в этом плане очень простой. Он позволяет быстро собирать пользовательский интерфейс, а всё остальное — работа самой программы, обращения к базе данных и так далее — это вне поля зрения React, придётся решать самостоятельно. Так что этот инструмент хорош для проектов с длительным сроком жизни, которые непонятно куда приведут через полтора года. Используйте React для создания пользовательского интерфейса, он упростит работу и даст возможность сделать как веб-, так и мобильные версии.
Выводы
React.js и React Native — это очень хорошие технологии, если вы хотите быстро сделать прототип. Быстро — это несколько дней. Если повезёт, и разработчик уже научился пользоваться стеком — несколько часов. Если же вы хотите делать что-то серьёзное на заказ или для продажи, на чём хотите зарабатывать деньги, то придётся поработать, потому что технологии ещё немного сыроваты. Ими надо научиться пользоваться и иногда чинить всплывающие косяки.habr.com
Технологии кластеризации — повышаем надежность и производительность веб-проекта
Добрый день, коллеги!Сегодня хочу рассказать о технологиях кластеризации, которые появились в 10-й версии платформы 1С-Битрикс. Также разберем, какие важные задачи они позволят решить Вам, как руководителю веб-проекта и как эффективно использовать данные технологии, если Вы — разработчик. В конце статьи рассмотрим конкретные архитектуры работающих веб-кластеров на платформе 1С-Битрикс, в т.ч. ресурса www.1c-bitrix.ru.
Но прежде — постараемся объективно ответить на вопрос — в каких случаях все же целесообразно для реализации веб-проекта выбирать фреймворк или коробочное решение, а в каких — создавать веб-проект «с нуля».
Разработка веб-проекта «с нуля»
Казалось бы, процесс разработки веб-проекта «с нуля» выглядит относительно простым и ведущим к успеху:- Проектируем и оцениваем объем работ
- Набираем команду веб-разработчиков, верстальщиков (возможно, дизайнеров)
- Программируем, верстаем, тестируем
- Наполняем веб-проект контентом
- Запускаемся
- Поддерживаем и развиваем веб-проект
- Вам потребуются квалифицированные системные аналитики и технические эксперты для проектирования и оценки объема работ, которых на рынке мало, а стоят они дорого
- Нужно набрать команду квалифицированных веб-разработчиков, которых на рынке мало, а стоят они дорого
- Нужно выбрать и настроить эффективный процесс разработки, в т.ч. снабдить команду инструментами типа трекера, среды разработки, системы контроля версий и т.п.
- Чтобы быстро наполнить веб-проект контентом нужно… разработать «админку» для всех видов контента, а это дополнительное время и деньги
- Потребуется тесное взаимодействие с квалифицированными системными администраторами для настройки серверов и софта, организации резервного копирования и мониторинга, аудита безопасности
- Нужно выбрать и внедрить инструменты для «передачи» доработок веб-проекта от команды разработки в «прямой эфир» — для этого используют, например, системы контроля версий и/или инструменты непрерывной интеграции
А при значительном увеличении посещаемости веб-ресурса, например, до миллионов хитов в сутки, может оказаться — что веб-решение вообще не создавалось для подобных нагрузок и должно быть «срочно» переписано заново.
Разработка веб-проекта на базе фреймворка
Выбирая фреймворк, Вы, в теории, сокращаете риски и сроки разработки. Действительно, ведь я использую что-то типа каркаса/фундамента, на который «нанизываю» нужный мне функционал веб-сайта. Но многие риски, к сожалению, остаются:- Теперь вам нужны «особые» эксперты, хорошо знающие фреймворк, для проектирования и оценки трудозатрат. При разработке на базе BitrixFramework можно довольно просто «прокачать» сотрудников — путем их бесплатной сертификации по нашим курсам, после чего они смогут, в принципе, достаточно точно оценить объем, сложность работ и определить, что нужно писать «с нуля», а какие решение можно использовать в готовом виде.
- Фреймворки обладают разным уровнем вхождения, поэтому для работы c популярными «академичными» фреймворками, типа ZendFramework,Symfony, Yii — Вам потребуются программисты более высокой стоимости и квалификации, чем, например, для работы с BitrixFramework (на базе которого работают продукты и решения 1С-Битрикс), использующим простые архитектурные концепции и паттерны, понятные большинству разработчиков начальной и средней квалификации. Для ускорения ввода разработчиков BitrixFramework в строй, поможет прохождение курса «Быстрый старт разработчика».
- Технологический процесс разработки веб-проекта на базе фреймворка, как правило, мало чем отличается от разработки «с нуля». Однако, некоторые фреймворки, например BitrixFramework, предоставляют удобные инструменты аудита и мониторинга качества разработки: монитор производительности, SEO-аудит, средства отладки.
- Для быстрого и удобного наполнения веб-проекта контентом некоторые фреймворки предлагают средства автоматизированного создания «админок» (полуфабрикат, на базе которого можно, в принципе, ускорить создание некоторых типов административных страниц). В BitrixFramework имеется встроенный функциональный и довольно удобный административный интерфейс, допускающий кастомизацию под нужды проекта. Например, можно сделать свою «админку» по добавлению новостей или обработке заказов.
- Для нагрузочного тестирования веб-проекта перед запуском фреймворки иногда предоставляют технические инструменты создания нагрузки и аудита. В BitrixFramework имеются эффективные и популярные среди клиентов встроенные подсистемы аудита аппаратно-программной конфигурации и создания нагрузки.
- Не все фреймворки, к сожалению, умеют «обновлять» себя — а это необходимо для оперативного устранения ошибок, улучшения текущего и получения нового функционала. В BitrixFramework встроена система обновления — которая позволяет постоянно поддерживать ядро веб-проекта в перманентно хорошем тонусе.
Расширение возможностей — благословение или проклятье?
Одной из краеугольной характеристик качественного фреймворка — это предоставление возможности, путем создания несложных надстроек, реализовать разные сценарии его использования. Например, а смогу я встроить нестандартный алгоритм расчета скидок в интернет-магазине без затратного переписывания ядра фреймворка высококвалифицированными программистами с опытом разработки н фреймворке от 5 лет :-)? А смогу я использовать разные валюты, курсы которых зависят от региона? А можно использовать внешнюю базу учетных записей из имеющейся системы для авторизации на веб-проекте?В BitrixFramework, благодаря обязательной фазе углубленной системной аналитики проблемной области при разработке ядра и модулей платформы, реализованы основные распространенные бизнес-процессы, которые могут потребоваться в 95% веб-проектов. Для создания надстроек Вы всегда сможете задействовать механизм несложных обработчиков событий, с помощью которого можно реализовать практически любой фантастический сценарий бизнес-процесса программистом начальной или средней квалификации.
Тем не менее, иногда все же может оказаться, что задачу на фреймворке реализовать сложнее и дольше, чем написать «с нуля», и Вы об этом узнаете уже в процессе разработки :-). В этом случае фреймворки, как правило, предоставляют возможность модульного расширения. В BitrixFramework вам нужно будет создать модуль, реализующий нестандартную логику. Писать модуль обычно дольше, чем создавать обработчик события, но при этом достигается максимальная гибкость. Написать модуль относительно просто, но возможно такой модуль уже написан — поэтому стоит предварительно «порыться» в marketplace.
Разработка веб-проекта на базе коробочного решения
Данный подход скорее всего максимально сократит время и риски разработки веб-проекта, если ваши требования «близки» к функционалу коробки. Например, для создания и запуска типичного интернет-магазина с мультивалютным каталогом, авторизацией, скидками, персональным разделом, поиском и поддержкой многочисленных платежных систем скорее всего подойдет коробочное решение «1С-Битрикс: Управление сайтом» (редакция «Малый бизнес»).Дополнительно, коробочное решение, являясь как бы «историей успеха» и «книгой рецептов», помогает Вам, как заказчику проекта, «пощупать» практические примеры реализации бизнес-задач. А разработчикам коробка позволяет изучить «исходники» решения, чтобы продублировать его, либо сделать лучше :-). Частый кейс при использовании коробки: «Сделайте также как тут и тут, чтобы в админке управлялось аналогично как там».
«Правильная» коробка не навязывает свои решения как истину в последней инстанции, позволяя «срезать» слой работающей реализации и заменить его на свою реализацию, базирующуюся на фреймворке. В 1С-Битрикс вы можете легко деинсталлировать из системы готовое решение, поставить новое для экспериментов, в том числе из Marketplace и выбрать свой, наиболее оптимальный путь.
Для каких типов веб-проектов окажутся полезными технологии кластеризации платформы 1С-Битрикс?
Если Вы уже используете или планируете вести разработку на фреймворке/коробке 1С-Битрик то, скорее всего:- Ваш проект имеет сложную бизнес-логику и объемный функционал, который хорошо ложится на возможности платформы 1С-Битрикс
- Вы хотите снизить риски и увеличить скорость разработки, за счет использования промышленного фреймворка BitrixFramework
- Вас волнует устойчивость веб-проекта к высоким нагрузкам (миллионы хитов в сутки) и простой веб-сайта в течении часа просто недопустим, т.к. грозит серьезными убытками и ударом по репутации
1) Вертикальный шардинг (вынесение модулей системы на отдельные серверы MySQL). Теперь можно вынести интенсивно используемые модули «Поиск» и «Веб-аналитика» на собственное «железо».
2) Репликация MySQL и балансирование нагрузки между серверами. Теперь можно распределить нагрузку на СУБД веб-проекта на группу серверов, добавляя их при необходимости. Технические подробности можно почитать тут.
3) Распределенный кеш данных (memcached). Надежное и масштабируемое кэширование критически важно для высоконагруженных проектов. Технические подробности тут.
4) Кластеризация сессий между веб-серверами. Эта необходимо при работе группы веб-серверов за балансировщиком. Почему мы храним сессии не в memcached — об этом напишем отдельно :-).
5) Кластеризация файлов веб-серверов. Это необходимо для автоматической синхронизации контента между машинами. Технические подробности тут.
Особое внимание хочется обратить на то, что технологии кластеризации используются на уровне ядра платформы 1С-Битрикс и дорабатывать код веб-проекта — не нужно! (каждый раз когда пишу про это, не верю, но… это так и есть на самом деле) Разумеется, при необходимости можно в коде задавать, с каких именно серверов репликации осуществлять чтение/запись — но это необходимо подавляющему меньшинству веб-проектов.
Также, если Вы разрабатываете веб-проект, которому возможно понадобятся технологии кластеризации в будущем — можно в принципе их «подключить» потом, когда в них возникнет необходимость, без доработки кода веб-проекта. Это серьезно удешевляет разработку веб-проекта, т.к. если сразу создавать систему под высокую нагрузку, работающую на 5 базах данных, с кластерной файловой системой и горизонтальным шардингом — то в случае ее невостребованности — вы напрасно потратите время и деньги.
Кластерные архитектуры работающих веб-проектов на базе 1С-Битрикс
Самый интересный раздел статьи — рассмотрим, наконец, конкретные примеры действующих веб-кластеров на платформе 1С-Битрикс.www.kupibonus.ru — бесперебойная доставка услуг
Внедрение веб-кластера провел наш сертифицированный партнер «Linemedia», г. Москва. Редакция платформы – «Бизнес веб-кластер».Веб-проект ежедневно посещают несколько сотен тысяч пользователей, также дополнительную нагрузку генерируют партнёры проекта, имеющие доступ к проекту через API Kupibonus. Активная двухсторонняя интеграция с бэк-офисом «1С: Предприятие», интенсивные каналы взаимодействия с внешними сервисами. За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость не только публично части, но и внутренних бизнес-процессов и API. Внедрение прошло в довольно короткие сроки – две недели.
www.komos.ru — электронная биржа
Внедрение веб-кластера провел золотой сертифицированный партнер «Профессиональные Интернет-решения», г. Ижевск. Редакция платформы – «Веб-кластер».Веб-проект является высоконагруженной площадкой для проведения электронных торгов группой компаний — «КОМОС ГРУПП». В состав группы входит 13 крупнейших предприятий, производящих продукты питания в Удмуртии и Пермском крае. Полученная в результате торгов стоимость предложений составила почти 5 млрд. рублей менее чем за год. За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость, легкая масштабируемость электронной торговой площадки.
www.1c-bitrix.ru — это мы
Веб-кластер размещен на группе EBS/EC2 машин в облаке Amazon. Достаточно большой объем статического контента. Высокая нагрузка как на публичную часть, так и на интеграционное API (marketplace), а также систему обновлений. За счет перехода на веб-кластер обеспечена высокая производительность и устойчивость, быстрое масштабирование в случае необходимости.Мы хотели использовать встроенный в облако балансировщик, но пока, по причине его «негибкости», используем для этого отдельную машину. Бэкапы делаем в S3 встроенной в облако удобной технологией снепшотов, для резервного копирования raid10 на базе EBS разместили на нем XFS и, для целостного снепшота, «фризим» ее используя утилиту ec2-consistent-snapshot. Статику постепенно выносим в облако и CDN. Большинство рутинных операций: поднять машину в случае нагрузки, переключение нагрузки, бэкапы и т.п. — заскриптовано на API amazon.
В настоящее время несколько веб-кластеров готовятся к запуску у отечественного облачного провайдера Оверсан-Скалакси. Мы о них обязательно напишем и нарисуем.
Наши ближайшие технологические планы в области облаков и кластеризации
На прошедшей недавно партнерской конференции мы анонсировали, что сделаем в ближайшем релизе платформы 10.5, который выйдет осенью, поддержку облачных хранилищ: Amazon/S3, Google Storage, технологий хранения данных в Microsoft Azure.
Также, в версии 10.5, мы хотим предложить нашим клиентам решение, делающее их веб-кластер максимально надежным и… абстрагированным от облачного провайдера — чтобы в случае серьезных проблем в облаке/ДЦ, веб-кластер продолжил бесперебойно обслуживать клиентов в другом регионе облака/на другом континенте:
Cluster grid (это пока одно их рабочих названий технологии)
Мы с интересом смотрим на новейшие облачные технологии кластеризации и видим в них немалый потенциал для обеспечения надежности и производительности веб-проектов. Лучшие технологии мы будем продолжать реализовывать в платформе 1С-Битрикс — делая их полезными и доступными для наших многочисленных клиентов.
Желаю всем технологической удачи, оптимизма и до новых встреч в нашем корпоративном блоге!
Ссылки:
Александр Сербул, руководитель направления контроля качества интеграции и внедрений 1С-Битриксhabr.com
примеры использования / Блог компании 1С-Битрикс / Хабр
Tarantool — это СУБД с открытым исходным кодом. Кто угодно может скачать её с GitHub и использовать как в коммерческих приложениях, так и в некоммерческих. Сегодня технический директор Почта@Mail.ru Денис Аникин расскажет о примерах использования этой базы данных. Материал подготовлен по мотивам выступления на конференции FailOver Conference.Tarantool разрабатывается в Mail.Ru Group уже больше семи лет. Эта СУБД рассчитана на высоконагруженные системы. Её основное отличие: это база данных, которая сочетает в себе свойства настоящей БД — транзакции, репликации, всё что касается надежности, — но при этом она такая же быстрая, как и кэши, например, Memcached или Redis.
В Mail.Ru Group добрая половина продуктов работает на Tarantool. Ему отдаётся предпочтение в тех случаях, когда от СУБД требуются свойства кэша, то есть она должна уметь делать 100 тыс. апдейтов в секунду, у нее должно быть очень хорошее latency — 1 мс или меньше — и так далее. Многие СУБД не удовлетворяют этим критериями. Если используется много шардов, то это не идёт на пользу: перестают работать транзакции, теряется целостность и возникают прочие проблемы. А кэши, в свою очередь, не обладают многими полезными свойствами БД: надежностью хранения данных на диске, транзакциями и так далее. Например, в кэшах обычно нет такой важной штуки, как хранимые процедуры. Они позволяют переносить логику на сторону хранилища данных.
БД + кэш = ?
Конечно, можно жить на высоконагруженных проектах и без Tarantool. Допустим, вам нужны свойства и базы, и кэша в одном флаконе. Тогда можно применить очень популярную схему: поместить кэш поверх БД. Тогда все запросы идут сначала в кэш, если в нём есть нужные данные, то они отдаются пользователю. Если их там нет, то запрос переадресуется в БД. Все обновления идут сразу и в БД, и в кэш, ведь мы не можем что-то хранить в кэше, не сохранив это в базе, иначе эти данные могут быть потеряны.Такая схема позволяет получить часть свойств СУБД. Например, транзакций и хранения процедур уже не будет, потому что когда появляются две системы, особенно кэш, то ни о каких транзакциях речь не идёт. В каком-то смысле теряется и репликация, потому что данные в базе реплицируются, а в кэш — как бы не совсем. Также теряются хранимые процедуры и прочие свойства БД. Свойства кэша сохраняются тоже частично. Такая система работает быстрее, потому что увеличивается скорость обработки обращений на чтение, но при этом, например, обращения на запись быстрее не становится. Если база данных затормозила, потому что у нее происходит вакуум таблицы или что-то ещё, то система будет тормозить на запись, потому что без БД запись не работает.
В целом, это рабочая схема. Она позволяет получить часть свойств и базы, и кэша в одной системе. Если вам этого достаточно, то такую схему и надо использовать.
Правда, в этом случае возникают две частые проблемы — несогласованные данные и холодный старт. «Несогласованность» означает, что данные в кэше и базе могут оказаться разными, потому что кэш и база не являются репликой друг друга, это просто две отдельные сущности. «Холодный старт» — это ситуация, когда при старте кэша он ещё пустой, данных в нём нет, поэтому все запросы летят в базу, и производительность системы оставляет желать лучшего.
Если вас не смущают эти моменты, то схема «кэш поверх БД» — вполне рабочий вариант. В противном случае целесообразно обратить внимание на Tarantool, потому что в нём все эти проблемы решены изначально. Одна из причин его разработки и заключается в том, чтобы не городить такие сложные гетерогенные системы, состоящие из нескольких хранилищ, а спокойно обходиться одним и хранить в нём все горячие данные.
Движки
У Tarantool есть два движка хранения данных. Один из них — это in-memory движок. Устроен он так: все данные хранятся в памяти, копии данных есть на диске. На диск пишется каждая транзакция просто в log, и время от времени на диск сбрасывается целиком snapshot всей базы. Сбрасывается асинхронно в фоновом режиме. Пока он сбрасывается, база работает, потому что все новые обновления идут в отдельные места. То есть все работает вообще без тормозов. Log транзакций пишется всегда.Второй движок дисковый. Он позволяет всё хранить на диске. Причем можно использовать как SSD, так и винчестеры. Этот движок вырос из гуглового LevelDB, который был оптимизирован.
Преимущества и недостатки
Tarantool присущи свойства, характерные для кэша:- Горячие данные.
- Доступность 99,99%.
- Оптимальная работа при высокой параллельной нагрузке.
- Latency:
- 99% запросов < 1 мс
- 99,9% запросов < 3 мс
- Нагрузка на запись — до 1 миллиона транзакций в секунду на одном ядре ЦПУ.
- Не нужно много серверов.
- Оптимальное использование памяти.
- Система работает постоянно, не нужно делать перерыв на профилактические работы.
- Персистентность (надёжность хранения данных на диске).
- Транзакции ACID.
- Репликация (master-slave и master-master).
- Хранимые процедуры.
- Неблокирующие серверные сценарии.
- Удобные бэкапы.
- Выполнение запросов Cursors, Range и Full scan.
- Первичные и вторичные индексы.
- Таблицы.
Одни современные БД нацелены на высокую надёжность работы, другие делают упор на скорость работы. Это два разных мира, которые, в основном, не пересекаются. Tarantool — это достаточно успешная попытка объединить оба мира в одном решении.
К недостаткам Tarantool можно отнести следующее:
- У него пока не очень большое сообщество. Прежде чем применять какую-то технологию, каждый человек всегда думает: «Что если она не будет работать? У кого я спрошу?». Разработчики Tarantool стараются быть и отвечать на вопросы везде: в Facebook, на Stack Overflow и так далее. Но с точки зрения ряда пользователей есть риск не получить ответ из-за немногочисленности сообщества.
- Отсутствует консистентный шардинг. Над этим сейчас ведётся работа, чтобы он уже из коробки был нормальный, с поддержкой транзакций.
- Проприетарный протокол.
Примеры использования Tarantool
Все примеры взяты из опыта работы проектов Mail.Ru Group. На самом деле их очень много, но мы рассмотрим только три: систему аутентификации, систему push-уведомлений и систему показа рекламы. Обычно они самые высоконагруженные.Система аутентификации
Она должна обладать рядом, казалось бы, противоречивых требований.- Высочайшая востребованность: аутентификация должна проверяться при каждом хите на веб-сайте или в мобильном приложении. Нужно проверить пароль, куки, токен, что угодно, ведь нельзя просто так впускать пользователя. На портале Mail.Ru и в мобильных приложениях количество запросов к системе аутентификации исчисляется миллионами в секунду.
- Latency — время между запросом и ответом от базы данных. Оно должно быть как можно меньше, иначе всё будет тормозить, в том числе и веб-сервер, использующий аутентификацию. Пока он ждёт ответа от БД, он занимает какой-нибудь поток или процесс, данные висят в памяти, и это тоже потребляет серверные ресурсы. То есть медленная система работы аутентификации может потащить за собой кучу проблем, поэтому она должна работать просто моментально.
- Высокая доступность. Если система аутентификации не будет работать в 1% случаев, то и весь сайт не будет работать в 1% случаев.
- Постоянные обращения к хранилищу. Каждый хит в системе аутентификации — это проверка сессии, пароля, токена.
- Защита от brute-force атак и мошенничества. Систему аутентификации постоянно пытаются сломать.
- Почти каждое обращение связано с выполнением транзакции, то есть с необходимостью изменения каких-то данных. Например, при выполнении аутентификации нужно проверить введённые данные, обновить место и время аутентификации, прочие параметры для системы защиты от brute-force. Всё это — прямая транзакция в БД. Эту запись нельзя терять.
- Много неизбежной лишней работы. Когда все пытаются сломать систему, то за кулисами происходит очень много обращений, которые генерируются не пользователями, а средствами взлома. Эти обращения не несут полезный трафик или прибыль. Это лишняя нагрузка. Но их приходится обрабатывать и проверять.
- Большой размер данных. Естественно, в системе аутентификации должна храниться вся пользовательская база.
- Наличие срока действия введённых пользователем данных (expiration). По соображениям безопасности, если пользователь не активен какое-то время, его сессия завершается. Для этого необходимо проверять время начала сессии и наличие активности.
- Надёжность хранения данных (persistence). Очевидно, что если система аутентификации «забудет» часть пользователей в результате потери учётных данных, то это прямой ущерб репутации.
Схема работы системы аутентификации Mail.Ru по логину и паролю:
Только при проверке логинов и паролей в Mail.Ru выполняется 50 тыс. транзакций в секунду. Защита от brute-force и система аутентификации каждый раз читают и пишут в Tarantool. Эта суммарная нагрузка достигает примерно миллиона запросов в секунду: от всего портала, от всех мобильных приложений, от всех Ajax- и неAjax-запросов.
При этом сессии обслуживает всего 4 сервера, а профили пользователей — 8 серверов. Не какие-то брендовые, специальные серверы, а самые обычные, с обычными процессорами. Ничего космического.
Система push-уведомлений
Как вы знаете, мобильные приложения любят присылать пользователям push-уведомления, чтобы они оставались в них подольше. То есть это такая хорошая и благодарная штука.Как устроена система уведомлений в Mail.Ru?
Когда на сервере происходят какие-то события — пришло письмо, сообщение в мессенджер, появилась новость — нужно отправить уведомление на мобильные телефоны конечных пользователей. Напрямую это сделать невозможно. Поэтому Apple и Google предоставляют API для iOS и Android, посредством которых можно дергать мобильные приложения.
Но обращаться к этим API напрямую с сервера нельзя. Почему — об этом чуть ниже. Кроме того, при каждом генерировании события нужно сходить в хранилище, чтобы понять, какому пользователю доставлять это событие. И не забыть прочитать токен, потому что API работают с токенами. И всё это нужно сделать очень быстро.
Также крайне важно сохранить очень низкое latency, поскольку события генерируются из большого количества разных контекстов и серверных окружений. Никогда нельзя тормозить на сервере, ждать секунду-две, потому что иначе все остальные участники процесса по цепочке начнут работать медленно. По этой причине мы к API не напрямую с сервера, а через очередь, тоже работающую на Tarantool. Эта СУБД может предоставлять и сервис очередей, причем персистентных и реплицируемых. То есть при падении машины, при выходе диска из строя, при перезагрузке сервера никто ничего не замечает.
Получается, что сервер работает напрямую только с быстрым хранилищем, а всё медленное расположено дальше, за очередью. Такая схема позволяет быстро всё обрабатывать: суммарное количество запросов в этой системе порядка 200 тыс. в секунду.
Система показа рекламы
Это, наверное, самый высоконагруженный вариант использования Tarantool, и это самая большая ферма, которая есть в Mail.Ru Group. Система отвечает за показ рекламы почти на всех страницах огромного портала, причём рекламных блоков на странице обычно не менее 10.Чтобы показать каждый рекламный блок, нужно понять, что вообще нужно показывать пользователю. Для этого данные о нём собираются из нескольких разных источников. Всё это агрегируется и формируется результат. Всё это делается для каждого блока, и на это надо потратить меньше одной миллисекунды. Откуда такое требование? Потому что пользователи не захотят, чтобы сервис тормозил из-за рекламы, она и так всех раздражает, но является необходимым злом.
Нагрузка на систему показа рекламы — порядка 3 млн запросов в секунду. Причем 1 млн из них — это изменения, потому что показ рекламы часто приводит к обновлению профиля пользователя.
Краткий вывод
Если вам нужно сочетать свойства БД и кэша, — надежность и скорость, — и если какими-то простыми методами, которыми вы обычно это делаете, не получается этого добиться, то присмотритесь к Tarantool. Скорее всего, он эту проблему решит.habr.com
Подробная инструкция по установке SSL-сертификата Let’s Encrypt на сервер с CMS Bitrix и Nginx
Да, на Хабре уже много текстов про сертификаты Let’s Encrypt, но полной пошаговой инструкции я, к сожалению, не нашёл. Хотел восполнить пробел. К тому же, с мая 2016 года в процессе установки произошли незначительные изменения, которые могут сбить с толку новичка. Поэтому я решил написать эту инструкцию. Так сказать себе на память и другим в помощь.Эта инструкция, в первую очередь, должна быть интересна новичкам.
Если у вас все настройки установлены по умолчанию, можно смотреть те пути, которые я привёл. То есть, если вы используете систему, установленную с помощью скрипта Bitrix environment на операционной системе CentOS 6.X. Если же нет, вы и сами знаете где что лежит.
Установка
Первое, что необходимо сделать — установить git:# yum install git Далее переходим в директорию /tmp:# cd /tmp С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется certbot:# git clone https://github.com/certbot/certbotПереходим в скачанную директорию:
# cd certbot На всякий случай, даем права на выполнение для файла скрипта:# chmod a+x ./certbot-autoПолучение сертификата
Далее следует команда непосредственно получения сертификата:# ./certbot-auto certonly --webroot --agree-tos --email [email protected] -w /home/bitrix/www/ -d my-domain.ru -d www.my-domain.ru --webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ;--agree-tos — соглашаемся с лицензионным соглашением;--email [email protected] — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта;-w /home/bitrix/www — указываем корневую директорию сайта;-d my-domain.ru — наш домен. так же можно указывать и поддомены, например -d site.my-domain.ru.После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём.
Если всё завершится успешно, вы увидите сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/my-domain.ru/fullchain.pem. Your cert will expire on 2016-08-21. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to [email protected]. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le Сертификаты установлены, осталось только указать nginx'у, где они лежат.
Настройка
Открываем конфигурационный файл ssl.conf:# vim /etc/nginx/bx/conf/ssl.conf Если у вас уже были установлены сертификаты, удаляем или комментируем строки с ними и вставляем новые:ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem; Не забываем включить ssl, если этого не было сделано ранее:
ssl on; keepalive_timeout 70; keepalive_requests 150; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; После этого перезапускаем nginx:
# service nginx reload Если он не выдал никаких ошибок, значит всё в порядке. Можно зайти на сайт и посмотреть что получилось.Обновление
Сертификат выдается на 90 дней, так что после этого срока нужно будет его обновить. Делается это командой:# certbot-auto renew Её так же можно поставить в cron.На этом всё. Для составления инструкции я использовал статью Yet another инструкция по получению ssl-сертификата Let's Encrypt и официальный гайд.
habr.com