Публикация сайта в Интернете

В предыдущих заметках я рассказывал о том, как создать блог на домашнем ПК на движке WordPress. После того, как я определился с темой для сайта, необходимыми плагинами и написал несколько постов, я собираюсь разместить сайт в Интернете. Для этого мне надо

  1. Зарегистрировать доменное имя
  2. Разместить сайт на веб-хостинге

О том, как это делается я прочитал в книге Андрей Грачев — Создаем свой сайт на WordPress быстро, легко и бесплатно. Работа с CMS WordPress 3 — 2011 — Глава 2. Выбор доменного имени и хостинга и Глава 3. Установка WordPress.

Некоторые фирмы-регистраторы доменных имен предоставляют услуги хостинга сайтов. Воспользовавшись услугами такой фирмы, можно упростить себе работу по публикации сайта. Список фирм-регистраторов доменных имен в российском сегменте Интернета есть на сайте cctld.ru — всего их чуть меньше 40 штук. Из этого списка я должен выбрать те, которые предоставляют услуги веб-хостинга. Есть сайт hosting101.ru, где публикуются отзывы пользователей о различных хостерах. В топе рейтинга hosting101.ru я обнаружил три регистратора доменных имен: Beget.ru, Reg.ru и Ru-Center. Сравнение этих трех склонило меня в пользу Beget.ru (на остальные два хостинга пользователи жаловались, что сайты на них часто «лежат»).

Бесплатный хостинг

Помимо прочего Beget заинтересовал меня тем, что он предоставляет бесплатный хостинг. Бесплатный хостинг на Beget.ru обладает следующими ограничениями:

  • 1 сайт
  • 1 база данных MySQL
  • 1 ГБ дискового пространства
  • нагрузка на сервер не более 10 CP в сутки

CP — это единица измерения процессорного времени, как я понял, это — суммарное количество минут, затраченное всеми ядрами процессора на выполнение всех задач сайта.
Для работы WordPress от сервера требуется только поддержка PHP и MySQL, и бесплатный хостинг удовлетворяет этим требованиям. Доменное имя тоже предоставляется бесплатно, но это — доменное имя третьего уровня (типа dvsav.beget.ru). За «нормальное» доменное имя придется заплатить 180 рублей в год.

Платный хостинг для блога

Самый дешевый платный хостинг, предоставляемый Beget.ru, имеет следующие параметры:

  • 2 сайта
  • неограниченное количество баз данных MySQL
  • 2 ГБ дискового пространства
  • нагрузка на сервер не более 65 CP в сутки

Подсчитаем затраты:

Услуга Цена, рублей в год
Доменное имя 180
Хостинг для блога 1380
Выделенный IP-адрес 660
Итого: 2220

Заказываем услуги

Сначала я решил заказать хостинг в надежде, что, может быть, дадут в подарок доменное имя. Но нет, не дали. Зато дали 30 дней бесплатного пользования хостингом и доменное имя 3-его уровня (которое мне не нужно). Чтобы сделать заказ, надо всего лишь указать свои ФИО, мобильный телефон и e-mail. На почту приходит письмо с логином и паролем от панели управления сайтом. Логины и пароли рекомендуется тем или иным способом сохранить (например, переписать на бумажку), после чего удалить письмо с почтового сервера в целях безопасности.
Доменное имя покупаем отдельно. При покупке придется указать свои паспортные данные. Доменное имя регистрируется не сразу — sms-сообщение, сообщающее о том, что домен зарегистрирован, пришло мне минут через 15 после заказа. Видимо потому что я сначала заказал хостинг, мой домен после регистрации автоматически оказался делегирован, т. е. сайт готов к работе.

А если регистратор и хостинг — не одна и та же фирма?

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

Что еще осталось сделать

  • Заказать выделенный IP-адрес, чтобы у моего сайта был свой собственный IP и сайт не зависел от соседей на сервере. Цена вопроса — 660 рублей в год.
  • Заказать для сайта сертификат SSL, чтобы общение с сайтом происходило по шифрованному протоколу HTTPS — на сегодняшний день это абсолютно необходимо. После отправки заявки на SSL-сертификат, на почту приходит письмо, в котором написано, что выпуск сертификата займет два дня, так как «информация на DNS-серверах может обновляться до нескольких суток».
  • Завести электронную почту на своем собственном домене — солидней выглядит!:)
  • Установить WordPress и все необходимые плагины.

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

Установка сертификата SSL

После установки сертификата SSL ваш сайт будет доступен по двум протоколам: HTTP и HTTPS. Необходимо настроить автоматическое перенаправление c HTTP на HTTPS, чтобы доступ к сайту всегда осуществлялся по HTTPS. Поищите в корневой папке сайта файл .htaccess. Если найдете его, то добавьте в начало файла следующие строки:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Подробнее о проблемах с SSL можно прочитать тут: Подключение SSL к сайту.

Взаимодействие с читателями блога

Последнее (last but not least), о чем нужно позаботиться, когда вы публикуете блог в Интернете, это взаимодействие с читателями.
Во-первых, надо дать читателям возможность следить за обновлениями.

  • Читатель может конечно время от времени заходить на ваш сайт и проверять, не появилось ли там что-то новое, но есть кто-то, кто может делать эту работу за него. Это — специальные программы-агрегаторы и онлайн-сервисы, которые следят за обновлениями, новостями и пр. Чтобы эти программы могли следить за вашим сайтом, сайт должен предоставлять им содержимое в специальном формате, который называется RSS (Really Simple Syndication). RSS — это расширение формата XML. WordPress умеет генерировать документ RSS, и по-умолчанию этот документ имеет URL ваш_сайт/feed. Так что вы просто должны добавить на страничку своего сайта ссылку на документ RSS.
  • Еще один вариант извещения читателей об обновлениях — подписка по электронной почте. Читатель сообщает сайту свой email, а сайт автоматически отправляет ему письма, когда случается обновление. В результате почта читателя будет завалена кучей писем от вашего сайта.
  • Еще один вариант — социальные сети. Вы заводите сообщество в соцсети и помещаете в записях сообщества аннотации ко вновь добавляемым постам в блоге.

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

  • Опубликовать на сайте свой email. Возможно после этого всякие боты забросают вас спамом.
  • Создать форму обратной связи. Для этого можно воспользоваться соответствующим плагином WordPress и защититься от спам-ботов при помощи капчи (для этого тоже существуют плагины).

Теория

Чтобы сделать сайт и опубликовать его в Интернете, необязательно понимать, как всё работает и что на самом деле происходит. Тем не менее я кое-что все-таки понял, и здесь кратко это кое-что изложу.

DNS-серверы, домены, регистраторы, хостеры, делегирование домена

Пользователь Интернета идентифицирует сайт по его доменному имени, которое он вбивает в браузере. Браузер отправляет сайту HTTP-запрос и получает в ответ HTML-код странички, которую он и показывает пользователю. Чтобы браузер мог послать HTTP-запрос сайту, он должен знать IP-адрес сайта (все хосты в сети идентифицируются IP-адресами). Откуда браузер узнает IP-адрес сайта? В этом ему помогает система под названием DNS (Domain Name System). Она представляет собой иерархическую сеть так называемых DNS-серверов и предназначена для сопоставления доменных имен хостов и их IP-адресов. DNS-серверы есть у:

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

Каждый вид серверов выполняет свою функцию. Серверы регистраторов доменных имен называются «корневые DNS-серверы». Корневых DNS-серверов много, но они пользуются единой базой данных, в которых хранятся доменные имена хостов. Каждому доменному имени в этой базе соответствует набор имен DNS-серверов хостера, у которого размещен сайт. DNS-серверы хостера хранят базу данных доменных имен и IP-адресов сайтов, которые у них размещены.
Браузер посылает запрос DNS-серверу провайдера интернета, DNS-сервер провайдера интернета посылает запрос корневому DNS-серверу, корневой DNS-сервер сообщает DNS-серверу провайдера интернета имена DNS-серверов хостера. DNS-сервер провайдера интернета посылает запрос DNS-серверу хостера и получает в ответ IP-адрес сайта и отсылает этот адрес браузеру пользователя. Затем DNS-сервер провайдера интернета сохраняет (кэширует) в своей базе данных полученный IP-адрес сайта.

Как только вы зарегистрировали новое доменное имя, в базе данных корневых DNS-серверов нет информации о DNS-серверах хостера. Затем вы покупаете у какого-либо хостера хостинг и он сообщает вам имена своих DNS-серверов. Вы берете эти имена и на сайте регистратора доменных имен вносите их в базу данных корневых DNS-серверов. Эта операция называется делегирование домена. Если ваш регистратор и ваш хостер — одно и то же лицо, то делегирование домена он сделает для вас автоматически.
Дополнительные ресурсы:

HTTPS, SSL/TLS, цифровые сертификаты, сертификационные центры

Постановка проблемы. Предположим, я — клиент и я пользуюсь неким сервером, которому я должен передать некую конфиденциальную информацию — например, номер банковской карты. Эта информация передается от клиента к серверу по сетям, которые злоумышленник может прослушивать (to sniff, to eavesdrop) и похитить номер моей банковской карты.

Проблема решается благодаря тому, что клиент и сервер шифруют данные, которыми они обмениваются — так, чтобы злоумышленник (sniffer, eavesdropper) не мог их расшифровать. Любой алгоритм шифрования использует т. н. ключи: чтобы зашифровать данные, нужен ключ, чтобы расшифровать данные — тоже нужен ключ. Алгоритмы, в которых для шифрования и расшифровки используется один и тот же ключ, называются симметричными. Симметричные алгоритмы шифрования непригодны для обмена данными в Интернете, ведь сервер должен передать клиенту ключ по незащищенному каналу, поэтому его может получить и злоумышленник, а поскольку один и тот же ключ используется и для шифрования, и для расшифровки, злоумышленник сможет расшифровать данные, которыми обмениваются сервер и клиент.

А вот асимметричные алгоритмы шифрования используют для шифрования и расшифровки разные ключи. Причем один ключ называется открытым и может передаваться по незащищенному каналу (и в том числе, может быть известен злоумышленнику), другой ключ называется закрытым и находится только у одной из сторон, обменивающихся данными. Асимметричные алгоритмы могут использоваться для двух целей:

  1. Обеспечение конфиденциальности (confidentiality) передаваемых данных. Одна сторона шифрует данные при помощи открытого ключа, другая сторона расшифровывает их при помощи закрытого ключа. Злоумышленник не может расшифровать данные, так как у него нет закрытого ключа (но он может их модифицировать или подменить).
  2. Обеспечение целостности/подлинности (integrity) передаваемых данных. Одна сторона шифрует данные при помощи закрытого ключа, другая сторона расшифровывает их при помощи открытого ключа. Злоумышленник не может модифицировать или подменить данные, поскольку у него нет закрытого ключа (но он может их расшифровать). Этот механизм называется цифровой подписью. Говорят, что сторона, которая зашифровывает данные закрытым ключом, подписывает эти данные, т. е. удостоверяет их подлинность.

При обмене данными между клиентом и сервером приходится решать как задачу обеспечения конфиденциальности, так и задачу обеспечения подлинности данных.
Конфиденциальность. Сервер посылает клиенту открытый ключ. Клиент шифрует данные с помощью открытого ключа. Сервер расшифровывает данные при помощи своего закрытого ключа. Эта схема уязвима для атаки злоумышленника под названием man in the middle: злоумышленник может перехватить открытый ключ, который сервер посылает клиенту, и подменить его своим собственным открытым ключом. Тогда клиент будет шифровать данные открытым ключом злоумышленника, и злоумышленник сможет их расшифровать, так как у него есть соответствующий закрытый ключ.
Подлинность. Получается, что надо сделать так, чтобы злоумышленник не смог подменить открытый ключ сервера своим открытым ключом, т. е. клиент должен проверить, что полученный им открытый ключ действительно принадлежит тому серверу, к которому он обращается. Значит клиент должен получить от сервера подписанный цифровой подписью документ, который содержит идентификационные данные сервера (например URL и IP-адрес), открытый ключ сервера и срок действия открытого ключа. Этот документ называется цифровой сертификат безопасности. Злоумышленник не может модифицировать никакую часть сертификата (а он, вероятнее всего, желал бы модифицировать открытый ключ), поскольку сертификат подписан цифровой подписью… Но кто его подписал? А подписал его так называемый центр сертификации (certification authority). Центр сертификации должен иметь нескомпрометированный (т. е. недоступный третьим лицам) закрытый ключ. Владелец сервера обращается к центру сертификации с просьбой выдать ему цифровой сертификат безопасности, указывает свои идентификационные данные и предоставляет свой открытый ключ. А центр сертификации проверяет, что обратившийся к нему субъект — именно тот, за кого он себя выдает. Таким образом, злоумышленник не сможет получить сертификат для чужого сайта. После того, как сертификат получен от сертификационного центра, его установка например на сервер Apache сводится к копированию на сервер нескольких файлов (SSLCertificateFile, SSLCertificateKeyFile и SSLCertificateChainFile) и незначительному редактированию конфигурационного файла httpd.conf. Что касается открытых ключей, которые принадлежат сертификационным центрам, то они заранее известны и поставляются либо вместе с браузерами, либо с операционными системами, которыми пользуются клиенты.

Источники:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *