суббота, 21 января 2017 г.

Как доменное имя связать с сайтом на личном сервере с Ubuntu Linux

ru-center logo
Допустим имеется сервер со статическим белым IP адресом (в качестве сервера может быть и VPS/VDS). На сервере установлен серверный дистрибутив Ubuntu с web-сервером LAMP (Linux-Apache-MySQL-PHP). Также приобретено доменное имя для сайта. Возникает задача, как сделать, чтобы сайт работающий на этом сервере был связан с доменным именем и был доступен в интернете.

По историческим причинам я пользуюсь услугами интернет компании RU-CENTER. Сейчас в моем распоряжении имеются VDS сервер, несколько доменных имен и дополнительная услуга DNS-хостинг. И на примере услуг от RU-CENTER, в статье я расскажу, как связать доменное имя со сайтом на личном сервере.

Настройка домена и DNS-хостинга от RU-CENTER


Открываем в браузере главную страницу RU-CENTER’а: https://www.nic.ru/ и в правом верхнем углу выполняем вход на страницу управления услугами.

Сайт nic.ru

На странице управления переходим в раздел услуги -> Мои домены, где выбираем имя домена для сайта на личном сервере. В моем случае это будет neon1ks.ru. Далее вам необходимо во всех командах neon1ks.ru заменить на своё имя домена.

В столбце DNS-серверы у выбранного домена, нажимаем Изменить

Услуги - Мои домены

Откроется страница управления DNS-сервера. В области Использовать DNS-серверы услуг RU-CENTER выбираем «DNS-master», и применяем изменения с помощью кнопки Сохранить изменения.

Управление DNS-серверами, выбор DNS-master

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

Управление DNS-серверами

Возвращаемся в раздел услуги -> Мои домены и ждем, когда для домена будет установлен новый список DNS-серверов, в моем случае это:
  • ns3-l2.nic.ru
  • ns4-l2.nic.ru
  • ns8-l2.nic.ru
  • ns4-cloud.nic.ru
  • ns8-cloud.nic.ru

Домен с новым списком DNS-серверов

Далее переходим в раздел услуги -> DNS-хостинг и нажимаем на кнопку Управление DNS-зонами.

Услуга DNS-хостинг

Откроется страница управления DNS-Master, где добавляем наше доменное имя кнопкой Добавить домен.

Добавление нового домена в DNS-Master

Указываем имя домена:

Добавление нового домена в DNS-Master

Затем получаем предупреждение, на которое можно не обращать внимание, нажимаем Продолжить:

Предупреждение при добавлении нового домена в DNS-Master

Домен добавлен, заходим в его настройки, щелкая по имени домена:

Выбор домена в DNS-Master

Минимальная настройка домена требует указания двух типов записей NS и A:
  • NS (Authoritative name server) — адрес узла, отвечающего за доменную зону. Проще говоря, запись NS указывает, какие DNS сервера хранят информацию о домене. Критически важна для работы службы DNS.
  • Запись A (address) — адресная запись, необходима для связи домена и IP-адреса сервера. Проще говоря, для работы вашего сайта и всех поддоменов.
    Когда вы вводите название сайта в адресную строку браузера, именно по записи A служба доменных имён определяет, с какого сервера нужно открывать ваш сайт.
Записи типа NS в моем случае были добавлены автоматически. Они связываю имена DNS-серверов с именем домена. 5 DNS-серверов – 5 записей NS.

Осталось добавить записи типа A. Добавляем первую запись с параметрами:
  • Name (Имя) — указываем символ собаки @;
  • Type (Тип) — A;
  • IP address (IP адрес) — ваш IP адрес сервера;
  • TTL — поле оставляем пустым.

Добавление новых записей для домена в DNS-Master

Затем еще раз добавляем запись типа A, только в поле Name вместо @ указываем www.
После добавлении записей сверху появится предупреждение: “Зона содержит изменения, не выгруженные на сервер.” Здесь в правой части нажимаем на кнопку Выгрузить зону.

Выгрузка зоны в DNS-Master

Остальные настройки уже выполняются на стороне личного сервера.

Настройка локального хостинга LAMP


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

В начале создает директорию хостинга (document root) /var/www/neon1ks.ru/public_html, не забывайте, что вместоneon1ks.ru вам нужно указывать свое имя домена.

sudo mkdir -p /var/www/neon1ks.ru/public_html

Где размещаем тестовый файл index.html (вместо mcedit можете использовать любой другой консольный редактор)

sudo mcedit /var/www/neon1ks.ru/public_html/index.html

содержащий, допустим, следующее

<html>
  <head>
    <title>Welcome to neon1ks.ru!</title>
  </head>
  <body>
    <h1>Success!  The neon1ks.ru virtual host is working!</h1>
  </body>
</html>

Горячие клавиши у mcedit для сохранения F2, для выхода из редактора F10.

Для правильной работы сайта требуется, чтобы пользователь www-data (пользователь созданный для работы сервера apache2) имел доступ на чтение файлов сайта. Простой способ это обеспечить, сделать пользователя www-data владельцем всех файлов сайта:

sudo chown -R www-data:www-data /var/www/neon1ks.ru/public_html

Далее создаем файл конфигурации виртуального хостинга, за основу можно взять файл 000-default.conf:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/neon1ks.ru.conf

И редактируем. Я использую следующий конфиг. файл для виртуального хостинга:

<VirtualHost *:80>

    ServerName neon1ks.ru
    ServerAlias www.neon1ks.ru
    ServerAdmin postmaster@neon1ks.ru
    DocumentRoot /var/www/neon1ks.ru/public_html

    <Directory /var/www/neon1ks.ru/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/neon1ks_ru_error.log
    CustomLog ${APACHE_LOG_DIR}/neon1ks_ru_access.log combined

</VirtualHost>

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

sudo a2ensite neon1ks.ru.conf
sudo service apache2 reload

На этом настройка завершена.

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

Тестовая страница