Как это работает.
Статья о том как создан и функционирует этот сайт.

На главную
Вообще это вторая статья на данную тему. Первоначально сервер этого сайта работал по управлением ОС Windows XP (подробности тут), но потом все было полностью переделано и теперь, уже почти год сервер, управляется  ОС Ubuntu 12.04 - это такой Linux, если кто не знает. Не самая свежая, но вполне стабильная версия.

Итак, основная задумка была в том, чтобы организовать прямо у себя дома постоянно работающий хостинг, т.е. сервер для размещения сайтов. Цель была исключительно в самообразовании. За примерно полтора года работы этот сайт как-либо в Интернете не прославился. Такой цели и не было. Главное, что все работает.

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

В качестве железа для этого сайта был выбран неттоп DNS-porto. AMD Zacate E450 (1.65GHz), HD6320, 2Gb, 320GB, Wi-Fi, BT, HDMI, D-sub

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

Выглядит он так:
DNS-porto
 Скромно висит на стене за телевизором и связан с домашним роутером по Wi-Fi. Не обязательно именно такой покупать, можно что-то похожее.

Долступ к интернету, как Вы наверно догадались организован по технологии DSL. В данный момент скорость 4 МБит/с.

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

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

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

Просто пишем в терминале :
sudo apt-get install apache2 apache2-mpm-prefork apache2-utils apache2-suexec

Далее нам потребуется php - программа которая формирует динамические страницы. Проще говоря (очень сильно проще) отвечает за всякие кнопочки на странице сайта:
sudo apt-get install php5 php5-mysql libapache2-mod-php5 php-pear


Ну и наконец MySQL - программа которая отвечает за хранение данных. Позволяет хранить контент в виде базы данных, легко искать нужную информацию и работать с нею:
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

Еще не помешает интересное дополнение к MySQL - phpMyAdmin - программа для работы с базами данных, но это не обязательно:
sudo apt-get install phpmyadmin

В принципе, для простого сайта-визитки (просто текст с картинками) достаточно одного Apache.

Итак, все установлено. Пора делать сайт. Сам по себе сайт - это набор файлов в папке с именем "www". Если вы не сильны в html, то можете воспользоваться каки-нибудь редактором, например Kompozer, как это сделал я. Главный файл должен называться index.html и лежать в корне сайта, иконка (логотип) к нему - это файл favicon.ico там же. В общем написание сайта - это слишком большой вопрос, чтобы излагать его здесь даже кратко.

Для того, чтобы сайт появился в сети, следует арендовать доменное имя. Тут есть много вариантов. Следует сразу настроиться на то, что это платная услуга. На момент написания этой статьи можно было найти имя в зоне .ru за 90 рублей/год.

Имя есть, теперь самое главное. Браузеры всех компьютеров должны иметь возможность найти ваш сайт по имени. Для этого в сети придуман сервис DNS. DNS-сервер знает по какому ip-адресу находится сайт, имя которого вы ввели в браузере, а если не знает, то спросит у других DNS-серверов. В настройках вашего интернета обязательно указаны ip-адреса парочки DNS-серверов, с которыми работает ваш компьютер.

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

На этот случай придуман сервис динамических DNS. Он может быть платным и бесплатным. Нас больше интересует бесплатные варианты. Я рекомендую воспользоваться http://freedns.afraid.org.

После регистрации Вы можете указать там свое доменное имя, а на сате вашего регистратора (там, где брали имя) указать DNS-серверы freedns.afraid.org:
ns1.afraid.org
ns2.afraid.org
ns3.afraid.org
ns4.afraid.org

Теперь вам надо установить у себя программу-клиент, которая будет следить за текущим ip-адресом и обновлять его. freedns.afraid.org предлагает целый ряд клиентов, но для Linux'а я ничего удобного не нашел. Поэтому написал свою программку(ссылка) с удобным интерфейсом, подробности тут.

Теперь остается только включить ваш сайт. Для этого придется поправить несколько файлов (на примере этого сайта):

1. в /etc/hosts добавить строку вида 127.0.0.2 viktand.ru - адрес следующий по порядку к уже там написанным, имя ваше.

2. /etc/apache2/httpd.conf добавить
строку вида:
NameVirtualHost 127.0.0.2

и секцию вида:

<VirtualHost 127.0.0.2>
ServerName viktand.ru
DocumentRoot /media/system/Apache/viktand.ru/www/
</VirtualHost>

В секции указан путь к папке с файлами сайта.

3. в /etc/apache2/sites-available создать файл с именем как у вашего сайта (viktand.ru) и следующим содержанием:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    ServerName viktand.ru
    ServerAlias www.viktand.ru viktand.ru
    DocumentRoot /media/system/Apache/viktand.ru/www/
    ErrorLog /media/system/Apache/viktand.ru/error.log
    CustomLog /media/system/Apache/viktand.ru/access.log combined
    ServerSignature Off
    <Directory /media/system/Apache/viktand.ru/www/>
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

4. в /etc/apache2/sites-enable следует создать символическую ссылку на файл из п.3

Ну и последнее, если ваш сервер подключен к интернету не напрямую а через, к примеру, роутер, то вам необходимо организовать проброс пакетов через роутер к серверу. Дело в том, что со стороны интернета у вас ip-адрес вида  95.70.0.197, а реально 192.168.0.5 или как-то так. Все будут обращаться к вам по первому адресу, а это фактически адрес роутера, а не сервера. Роутер не в курсе ваших задумок, он просто проигнорирует запросы или покажет страничку своих настроек (что еще хуже). Все современные роутеры содержат инструменты для проброса пакетов. Вам надо настроить его так, чтобы запросы по порту №80 пересылались на локальный адрес сервера (в примере это 192.168.0.5). Как - это зависит от вашего роутера.

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



Продолжение (18.12.2015)

Ничего не стоит на месте. В работе этого сайта тоже произошли изменения. Какое-то время назад операционная система была заменена на Lubuntu 14.10, якобы она более легкая. Честно сказать, изменений не заметил. Внутри сервера сайты были перемещены в папку /var/www/... Предыдущее размещение происходило исторически с того времени, когда сервер работал на windows и фалы сайтов лежали на NTFS диске. Теперь более правильно технически и более защищённо от злодеев.
Потом менялся способ подключения к Ростелекому с DSL на FTTx, но так как в основе остался PPPoE, то ничего не менялось кроме скорости.

Но вот в ноябре 2015г. сервер существенно переехал географически (с Дальнего востока в Краснодарский край).  Новый  провайдер  "Спринт" предоставляет  несколько иную форму доступа к Интернету.  Технически все пользователи находятся в распределенной локальной сети оператора с ip адресам вида 10.N.N.N и ни как не могут быть идентифицированы из вне. Т.е. нет даже динамического адреса. Все серые. Пришлось подключить дополнительную услугу "Внешний статический ip адрес" (+100 рублей в месяц :(  ). Этого оказалось вполне достаточно. Каких-то дополнительных настроек сервера не потребовалось. Клиент freeDNS теперь получился излишним, но я пока его не стал убирать. Он по прежнему обновляет (как он думает) текущий ip адрес. Интервал обновлений только увеличил.