FTP-Сервер обеспечивает возможность передачи файлов между клиентом и сервером с помощью протокола FTP. Здесь будет рассказано как запустить FTP-сервер в Windows Server 2008 R2.

tavalik.ru

Сайт на домашнем компьютере

Обычно для размещения сайта в сети Интернет многие прибегают к использованию услуг хостинг-провайдера и аредны выделенных серверов. Однако, если вы не хотите платить буржуям, то можно сделать свой собственный хостинг на домашнем компьютере. Для этого вам понадобиться компьютер с постоянным доступом в интернет, связка Apache+PHP+MySQL и привязка доменного имени, к вашему серверу.

Для того, чтобы обеспечить стабильную и бесперебойную работу своего сервера рекомендуется подключиться к хорошему Интернет-провайдеру. Могу порекомендовать Интернет-провайдер SkyNet и тариф "Огонь" - 400 рублей в месяц со скоростью 50-100Мбит! Подробно расписать весь процесс настройки сервера не удасться, потому как это займет не один десяток страниц, но вкратце я расскажу как это сделать.

Установка и настройка веб-сервера

Перво-наперво скачиваем любую виртуальную машину (virtual box, paralell desctop) и создаем раздел на диске, в котором будет функционировать операционная система. Устанавливаем любой дистирбутив Linux (например, Ubuntu). Когда виртуальная ОС будет установлена, переходим к установке веб-сервера.

Для начала установим MySQL. В консоли вводим что-то вроде:

Sudo apt-get install mysql-server

В зависимости от версии Linux команда может отличаться. Далее вам предложат создать пароль и установить GUI:

Sudo mysqladmin -u root password 123456root sudo apt-get install mysql-admin

После настройки MySQL переходим к установке Apache:

Sudo apt-get install php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5-mysql php-image-graph imagemagick

Привязка доменного имени

Для того, чтобы сайт функционировал у вас на компьютере, необходимо разместить все файлы в папке /var/www/ и настроить связь с mysql. В локальной сети он будет доступен по IP-адресу компьютера, а для публикации его в сети Интернет необходим белый IP и наличие не менее двух NS-серверов. Белый IP вы можете получить опять-таки у провайдера, а NS-сервера у любого бесплатного регистратора DNS (например, FreeDNS). Там вводите свой IP, а в замен получаете NS-записи. Меняем NS-сервера у регистратора доменного имени и делегируем его. Ждем 3-12 часов (в зависимости от частоты обновления DNS) и все! Сайт доступен!

Настроить работу сервера и привязать к нему доменное имя можно так же и в Windows. Это даже проще - достаточно установить Denwer (джентельменский пакет разработчика). Однако не стоит забывать о безопасности работы сервера! К сожалению, в рамках данной статьи всего не расскзать, поэтому о безопасности сервера и его защите читайте в других статьях на нашем сайте.

6 393 просмотра

www.SecurityScripts.ru

Как создать, установить, настроить локальный сервер на компьютере

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

Что такое локальный сервер?

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

Те, кто занимался сайтостроением с использованием лишь html и css знают, что необходимости в локальном сервере нет, так как браузер прекрасно обрабатывает и понимает язык гипертекстовой разметки и таблицы каскадных стилей. Но, стоит добавить какой-нибудь PHP скрипт и Вас тут же ждет конфуз – браузер не выдаст результат работы PHP. А происходит это потому, что браузеры не понимают PHP. И чтобы пользователь увидел страницу сайта в том виде, в котором эта страница должна быть, необходимо, чтобы сервер обработал и преобразовал PHP код в html.

Все CMS а-ля WordPress и Joomla содержат в себе PHP скрипты. Соответственно, чтобы сайты, созданные с помощью систем управления содержимым, могли работать на домашнем компьютере, необходим локальный сервер.

Мой сайт создан с помощью WordPress, постоянно приходится тестировать какие-то плагины, расширения, копаться в PHP коде. Вполне логично, что рано или поздно, такие действия могут привести к утрате работоспособности сайта, из-за допущенной ошибки. Само собой большинство хостингов поддерживает восстановление (бек ап) сайта и базы данных. Да и грамотные веб мастера держат, на всякий случай, запасную на своем компьютере. Я вообще параноик, кроме хостинга и моего компьютера, еще и на флешку записал. Надо будет еще куда-нибудь на облачный сервис закинуть =).

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

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

Как создать локальный сервер?

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

Как установить локальный сервер?

Один из самых популярных и стабильных локальных серверов – Денвер (Denwer). Название расшифровывается как: джентльменский набор веб разработчика – Д. н. в. р. Его установку мы то и рассмотрим.

Базовый пакет содержит:

  • Инсталлятор.
  • Сервер Apache.
  • PHP 5.
  • MySQL5, поддерживающая транзакцию.
  • phpMyAdmin - система управления MySQL, позволяющая работать с базами данных через браузер.
  • Эмулятор sendmail и SMTP-сервера – имитация функции отправки почты. Все отправленные письма будут расположены в директории Z:\tmp\!sendmail в формате.eml, а не отправляться на указанную почту.

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

Ну и, конечно же, самый главный плюс – Denwer абсолютно бесплатен.

Скачать Денвер последней версии (на данный момент 3) можно тут: http://www.denwer.ru/

Установка Denwer

    1. Запускаем скачанный файл и соглашаемся с установкой базового пакета.
    2. Затем, откроется окно браузера, которое необходимо закрыть для продолжения или отмены установки.
    3. Для продолжения установки нажимаем Enter.
    4. Затем, необходимо указать директорию, в которой будут расположены файлы. По умолчанию: C:\WebServers. Смело жмем Enter и продолжаем.
    5. Следуя инструкции, жмем Enter.
    6. Далее, инсталлятор предложит выбрать букву виртуального диска. По умолчанию предлагается буква Z. Если на компьютере нет диска с таким именем, то можно смело продолжать установку, нажав Enter, если же есть – то выбираем другую.
    7. После того как все файлы дистрибутива будут скопированы, предложат на выбор 2 варианта создания виртуального диска:
    1. Виртуальный диск создавать при включении компьютера.
    2. Создавать виртуальный диск только при явном вызове, то есть – при клике ярлыка старта на рабочем столе (я выбрал этот вариант).

Вот собственно и все, на этом установка Денвера окончена.

Теперь можно протестировать работу локального сервера. Если все сделано верно, то на рабочем столе появятся 3 ярлыка: Start Denwer, Stop Denwer, Restart Denwer.

Нажимаем Start Denwer для запуска. Если зайти в мой компьютер, то можно увидеть, что появился выбранный локальный диск. А в трее (возле часов) появятся 2 значке в виде шляпы и пера.

Откройте окно браузера и в адресную строку введите следующее: http://localhost/

Откроется окно с сообщением: «Ура, заработало!», символизирующее, что все сделано правильно и можно смело приступать к роботе с локальным сервером.

Открывшаяся страничка содержит много полезного:

  1. Можно найти необходимую документацию по PHP, MySQL, Apache, Perl, PostgreSQL, воспользовавшись соответствующим поиском.
  2. Так как Денвер – бесплатный софт, то для поддержания проекта, создатели принимают от благодарных пользователей пожертвования. Ну, и я заметил партнерскую ссылку на хостинг «Джино».
  3. Можно проверить работу компонентов, перейдя по следующим ссылкам:

subdomain.localhost/ssl.php - проверяем активен ли SSL.

subdomain.localhost/ - проверяем "не-Интернет" домены второго уровня, а также SSI

test1.ru/ - проверка доменов второго уровня.

subdomain.test1.ru/ - проверка поддоменов (субдоменов)

localhost/Tests/phpnotice/index.php - можно проверить перехват PHP Notice.

localhost/Tests/PHP5/index.php5 - информация по PHP 5.

localhost/Tools/phpMyAdmin - доступ к phpMyAdmin и MySQL.

custom-host:8648 - проверяем хост с другим IP-адресом и портом (127.0.0.2:8648)

localhost/Tests/sendmail/index.php - проверяем работу sendmail (отправка почты).

Сайт в Денвере отображается иероглифами

Проблема с иероглифами иногда случается, если используется кодировка utf-8. В Опере и Хроме, вместо моего текста выводились жуткие наскальные надписи. А Internet Explorer, как ни странно, все показывал как надо. Но как бы там ни было, проблему надо решать. И сделать это можно следующим способом:

Создать в корневой директории сайта (в папке www) файл.htaccess и прописать там следующее: AddDefaultCharset UTF-8

Если же файл уже есть, то просто добавляем туда эту строчку.

Как удалить Денвер?

Удалить через панель управления – удаление программ Денвер не получится, так как он не пишет файлы в директорию Windows и не оставляет записей в реестре, соответственно деинсталлятор не нужен. Поэтому, просто удаляем папку с файлами локального сервера (предварительно остановив работу Денвера с помощью ярлыка на рабочем столе): C:\WebServers, удаляем ярлыки с рабочего стола и из Автозагрузки.

Как сделать локальный сервер Denwer доступным в сети интернет.

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

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

Если же вы грамотный администратор и полностью понимаете, что вы делаете, то что бы открыть доступ к локальному сайту следует:

  1. Прежде всего, необходимо иметь статический ip адрес. Динамические айпишники будут меняться при перезагрузке машины (роутера).
  2. В Windows есть встроенный антивирус - брандмауэр, который блокируют доступ с внешних компьютеров. Для того, чтобы сделать локальный сайт доступным, эту блокировку необходимо отключить в Пуск - брандмауэр Windows. Следует понимать, что это так же снизит защиту компьютера.
  3. Ну, и последнее, что нужно сделать – создать на виртуальном диске Денвера такую иерархическую структуру из папок: /home/192.168.0.1/www

Вместо указанного в предыдущем пункте ip адресе, необходимо указать свой, выданный вашим интернет провайдером.

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

Оригинал инструкции: http://www.denwer.ru/faq/shared.html

В следующей статье рассмотрим установку WordPress на локальный сервер.

ВСЕХ С НАСТУПАЮЩИМ 2014 НОВЫМ ГОДОМ!!!

8

Для проверки в разных браузерах иногда бывает необходимо протестировать свой сайт до того как установить его на платный хостинг. Некоторые,в том числе и я, вообще пользуются домашним компьютером как виртульным хостингом для своего сайта.
Как пишут в Интернете, некоторые умудряются держать на своем ноутбуке несколько ресурсов и спокойно вещать их в web-сеть. Если вы тоже хотите настроить виртуальный хостинг на своем компьютере, то в этой статье вы найдете как это сделать.
Настройка виртуального хостинга не вызывает особых осложнений. Установка XAMPP была описана . Для установки полноценного сервера на домашнем компьютере необходимы некоторые требования:

У Вас должен быть уникальный(белый) или выделенный IP. Его можно приобрести у провайдера.

Вам потребуется ДНС сервер для связи ваших доменных имен с вашим сервером. Для этого необходимо при регистрации домена, выбирать регистратора, который предоставляет такие услуги. Обычно такие услуги платные. Можно воспользоваться бесплатным ДНС сервисом Яндекса.
После того как вы только установили XAMPP на домашний компьютер, у вас имеется только один локальный домен localhost. Если вы сделаете настройку виртуальных хостов, то сможете разместить сколько захочется сайтов со своими доменами. Для настройки виртуального хостинга открываете папку /xampp/apache/conf/extra/httpd-vhosts.conf.

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

NameVirtualHost *:80


ServerName localhost
DocumentRoot c:/xampp/htdocs/localhost/www
ServerAdmin [email protected]


ServerName mysite.ru
ServerAlias www.mysite.ru
DocumentRoot c:/xampp/htdocs/mysite.ru/www
ServerAdmin [email protected]


ServerName mysite2.ru
ServerAlias www.mysite2.ru
DocumentRoot c:/xampp/htdocs/mysite2.ru/www
ServerAdmin [email protected]

Здесь mysite.ru и mysite2.ru названия ваших доменов, которые измените на свои. [email protected] - почта админа сайта.

После такой настройки виртуального хостинга на домашнем компьютере останется только прописать на ДНС ваши указанные в этом файле домены и направить их на ваш IP.

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

Что необходимо знать, чтобы создать свой ?

Во-первых, необходимо понимать суть данной услуги. Хостинг сочетает в себе качественное оборудование и программное обеспечение с одной стороны и предоставление услуги по техническому обслуживанию с . Многие эксперты отмечают, что именно услуга является наиболее важной составляющей , поскольку найти компании с качественным оборудованием и ПО не представляет проблемы.

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

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

Способы создать свой хостинг

Существует три основных способа создать свой хостинг.


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

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

  3. Третий способ – это самостоятельная покупка сервера и размещение его в Дата-центре на условиях аренды места. Преимущества такого способа – более дешевая арендная плата. Недостаток – необходимость покупать сервер, который стоит достаточно дорого.

Этапы создания хостинга


  • Составление сметы проекта и средств.

  • Разработка тарифных планов для владельцев сайтов.

  • Определение способа создания хостинга (реселлерство, аренда сервера, места в Дата-центре).

  • Разработка маркетинговой стратегии для продвижения своих услуг в Интернете и нахождения клиентов.

  • Создание хостинга и его .

  • Наем персонала

Видео по теме

Источники:

  • как сделать свой хостинг сайтов

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

Вам понадобится

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

Инструкция

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

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

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

  • DNS ,
  • Хостинг
  • У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

    В то-же время в наличии имеется:

    • Домашний сервер на Ubuntu
    • Быстрый ethernet-интернет от МТС
    Но не имеется ключевого - статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

    Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com , но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).

    Что делать?

    Я не буду останавливаться на том, как настроить linux сервер (и тем более как его выбрать), поскольку предполагаю, что он у вас уже есть. Также я не буду подробно расписывать настройки nginx и Apache, поскольку опять-таки предполагаю, что вы с этим справитесь самостоятельно.

    Первое с чем у меня возникли проблемы - это как перенаправить посетителей с моих доменов (у меня есть 2 домена) на мой домашний сервер. То есть чтобы клиент который набрал domain.com попал ровно на мой домашний сервер с учетом того, что на нем каждый день меняется IP-адрес.

    Для решения нам нужно настроить DNS-сервер, а именно следующие записи: SOA, NS, MX, A, CNAME. Важно чтобы мы имели возможность настройкой TTL (time to live), поскольку время жизни наших записей должно быть очень небольшим, буквально 60-120 секунд. В противном случае при смене IP-адреса сервера пользователи долго не смогут попасть на наш сервер (из-за кеширования).

    Итак, нам нужен DNS сервер, варианты решения:

    Рассмотрим оба варианта.

    Используем сервисы которые предоставляют нам DNS-хостинг

    Для этого есть ряд бесплатных сервисов, из которых самым популярным является freedns.afraid.org . На таких сервисах можно добавить свой домен(ы) и получить возможность через API обновлять у них A-запись при помощи небольшого скрипта.

    Выглядит вполне неплохо, но подвох в том, что эти сервисы оставляют за собой право довешивать к вашему домену поддомены третьего уровня. То есть вы зарегистрировали у них user.ru, а они спокойно довешают свои сайты вида hello.user.ru, shop.user.ru и так далее. Разумеется от этого можно отказаться, но… за деньги. Платить деньги за такие сервисы смысла я не вижу, поскольку за сравнимые деньги вы можете купить полноценный хостинг на каком-нибудь провайдере без всяких плясок вокруг DNS настроек.

    Остальные сервисы рассматривать не будем, а сосредоточимся на втором варианте.

    Используем собственный DNS-сервер в связке с DDNS-доменом

    Для этого варианта у нас, во-первых, должен быть DDNS-домен (который обновляется при смене IP), например, domain.ddns.net, а во-вторых, придется установить и настроить BIND на нашем сервере.

    Всего необходимо сделать ровно 5 шагов. Везде под словами «domain» или «domain.ru» подразумевается ваше имя домена (короткое или полное).

    1. Настроить 2 или 3 DDNS-поддомена
    Почему 2 или 3? Потому, что ряд регистрантов не разрешит вам использовать домен только с одним NS-сервером. Самое обидно, что не все про это скажут - ваш домен просто не будет работать, но вы не будете понимать почему.

    Тут все просто - идем на noip.com , там регистрируем аккаунт и добавляем 3 бесплатных поддомена (больше 3 не даст).

    2. Настраиваем собственный DNS-сервер
    Устанавливаем BIND:

    $ sudo apt-get install bind9
    Создаем зоны (по одной зоне на каждый наш домен):

    $ sudo nano /etc/bind/zones.my
    с содержимым:

    Zone "domain.ru" { type master; file "/etc/bind/db.domain.ru"; };
    и собственно файл с настройками зоны:

    $ nano /etc/bind/db.domain.ru
    и пишем внутри:

    ; ; BIND data file for local loopback interface ; $TTL 60 @ IN SOA domain.ru. admin.domain.ru. (1477015437 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 1800) ; Negative Cache TTL @ IN NS domain.ddns.net. @ IN NS domain.ddnsking.com. @ IN NS domain.myftp.biz. @ IN MX 10 mx.yandex.net. @ IN A 1.2.3.4 mail IN CNAME domain.mail.yandex.net. * IN CNAME domain.ru.
    Примечание: обращаю внимание, что TTL устанавливаем равным 60 секунд. В файле /etc/bind/named.conf.local добавляем подключение нашей зоны:

    Include "/etc/bind/zones.my";
    Все, рестартуем BIND:

    $ sudo service bind9 restart
    И глянем /var/log/syslog чтобы там не было сообщений об ошибках

    3. Настроить наш домен(ы)
    Идем в панель управления регистратора и там в настройках нашего домена в качестве NS-серверов указываем созданные DDNS-поддомены:

    Nameserver1 = domain.ddns.net nameserver2 = domain.ddnsking.com nameserver3 = domain.myftp.biz
    После этого возможно придется подождать несколько часов (или даже сутки) пока настройки среплицируются между всеми серверами.

    4. Настроить периодическое обновление IP-адресов
    Мой роутер поддерживает обновление IP-адреса на одном домене, но мне нужно это делать сразу для 3-х доменов. Плюс нам надо обновлять IP-адрес в конфиге BIND"а, поэтому напишем скрипт который будет делать:
    1. Определять наш внешний IP-адрес
    2. Проверять изменился ли IP адрес, если не изменился, то ничего делать не надо
    3. Обновлять IP-адрес у всех DDNS-поддоменов через API сервиса noip.com
    4. Прописывать новый IP адрес в конфиг BIND"а
    5. Перезапускать BIND
    Сам скрипт пусть будет на шелле:

    #!/bin/sh # This script works via noip.com service + local Bind server # Settings ZONES_CONFIG=zones.my IP_FILE=./current_ip.txt DDNS_USER=user DDNS_PASS=password DDNS_HOST=domain.ddns.net DDNS_HOSTS=domain.ddns.net,domain.ddnsking.com,domain.myftp.biz # Start DATE=$(date +"%Y-%m-%d %H:%M:%S") # detect an external IP IP=$(dig +short $DDNS_HOST) if [ $? -ne 0 ] || [ -z $IP ] || [ $IP = "0.0.0.0" ] ; then echo "$DATE Can"t detect a remote IP. Aborting." exit 1 fi # verify IP changing PREV_IP="(unknown)" if [ -e $IP_FILE ] ; then PREV_IP=$(cat $IP_FILE) fi if [ $IP = $PREV_IP ] ; then echo "$DATE IP "$IP" has not changed" else echo "$DATE IP has been changed from "$PREV_IP" to "$IP"" echo "$DATE IP will be updated on DDNS server" /usr/bin/curl -u $DDNS_USER:$DDNS_PASS "https://dynupdate.no-ip.com/nic/update?hostname=$DDNS_HOSTS&myip=$IP" fi echo $IP > $IP_FILE # check BIND config cd /etc/bind if [ ! -e $ZONES_CONFIG ] ; then echo "$DATE File $ZONES_CONFIG not found!" exit 1 fi # read the list of active zones ZONE_FILES=$(grep file $ZONES_CONFIG | grep -v ^# | perl -ne "/file "(.+)"/ && print "$1\n"") for ZONE_FILE in $ZONE_FILES; do echo "$DATE Process the zone config $ZONE_FILE" cat $ZONE_FILE | perl -ne "s/([\t ]+IN[\t ]+A[\t ]+)[\d\.]*/\${1}${IP}/; print \${_}" > $ZONE_FILE.tmp if [ $(diff -w $ZONE_FILE $ZONE_FILE.tmp | wc -l) -ne 0 ] ; then # update serial number STAMP=$(date +%s) cat $ZONE_FILE.tmp | perl -ne "s/\d+(?=.+Serial)/$STAMP/; print \${_}" > $ZONE_FILE # reload BIND service bind9 reload echo "$DATE Config $ZONE_FILE is updated" else # nothing to do rm $ZONE_FILE.tmp echo "$DATE Config $ZONE_FILE is NOT changed" fi done
    Скрипт нужно запускать под рутом (чтобы ему хватило прав обновлять конфиги BIND"а и рестартовать его). Добавляем в crontab рута его запуск каждую минуту:

    * * * * * cd /home/root && ./update_bind_config.sh >> /var/log/update_bind_config.log
    Пару слов про определение текущего IP-адреса. В скрипте выше это делается через резолвинг DDNS-поддомена domain.ddns.net. То есть сначала наш роутер его туда прописывает, а потом мы читаем. Это не очень хороший вариант, поскольку мы завязываемся на роутер и можем потерять несколько минут пока на DDNS-поддомене обновится IP-адрес на актуальный. Все это время наш сервер будет недоступен.

    Поэтому у себя я использовал улучшенный вариант, который заодно не лазит в интернет:

    IP=$(perl -le "use LWP::UserAgent; my $content=LWP::UserAgent->new->get("http://router")->decoded_content(); $content =~ q(([\d\.]+)); print $1")
    В данном варианте мы загружаем главную страницу роутера (через http), дальше регэкспом находим на ней текущий IP-адрес. Разумеется, этот вариант подходит далеко не всем, но на DD-WRT прошивках работает.

    5. Настройка роутера
    Про необходимость настроить обращение к DDNS-сервису я уже писал, но еще не забывайте про необходимость настроить форвардинг портов на вашем роутере:
    • HTTP - TCP, 80-ый порт
    • DNS - TCP+UDP, 53 порт

    Вывод

    Итак, что я получил в итоге:
    • Мои сайты живут на домашнем сервере, за который я никому не плачу;
    • Мои домены резолвятся через мой собственный DNS-сервер, время жизни записей 1 минута, то есть обновление происходит очень быстро;
    • В качестве NS-записей указаны не реальные IP-адреса (которые у меня часто меняются), а DDNS-поддомены;
    • Актуальность записей в DDNS-поддоменах и в конфиге моего DNS-сервера обеспечивается автоматически, без какого-либо вмешательства со моей стороны.
    По моим замерам, когда МТС (мой провайдер) обновляет мне IP-адрес, то мои сайты начинают работать спустя где-то 2 минуты. Это вполне приемлемо для меня.

    P.S. Если кому-то понравилась данная заметка, то я могу написать вторую часть, где расскажу как настроить работу с использованием DNS-хостинга Яндекса. Это позволит отказаться от собственного DNS-сервера, отказаться от DDNS-поддоменов, плюс чуть улучшит надежность работы (поскольку DNS-сервер никогда не будет менять свой IP). Именно такую схему я использую в настоящий момент.

    Знакомьтесь - Демьян. Начинающий русский блогер, которому надоело постить свои записки на Тамблере и он хочет свой сайт. Вот только Демьян - жадный. Настолько жадный, что ему жалко $3 в месяц за хостинг.

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

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

    Подготовка

    Превратить компьютер в хостинг Демьян сможет где-то за час. Но сначала ему нужно подготовиться.

    Компьютер

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

    Покупать компьютер в местных магазинах Демьян не хочет - все знают, что местные цены выше! Поэтому он заходит на буржуйский http://pcpartpicker.com и, оплакивая свои кровные, собирает себе системный блок. Останавливается Демьян на двухъядерном Pentium G4560 и 4 ГБ ОЗУ, что обходится ему в $250. Еще $50 он тратит на доставку.

    Увидев цены на Виндоус, Демьян падает в обморок. Но с Линукс Демьян вообще не дружит и знакомиться не хочет. Он скачивает пиратскую Виндоус и устанавливает её, обещая купить лицензию потом - с первой прибыли.

    Интернет

    Без хорошего интернета Демьяну не обойтись - как же еще к нему будут заходить толпы восторженных читателей? А нынешние 10 Мбит/с даже YouTube ему нормально посмотреть не дают.

    Тоскливо вздыхая, Демьян ходит по провайдерам в поисках дешевых 100 Мбит/с. Узнав, зачем ему такой канал, все провайдеры тут же тыкают пальцем в Соглашение Пользователя и предлагают только специальные тарифы для хостинга - в 5 раз дороже. А некоторые вообще хостинг не разрешают. Наконец, Демьян находит нового провайдера, который готов подключить его хостинг за 500 рублей в месяц - но только на первое время.

    Там же Демьян подключает выделенный IP-адрес. Это обходится еще в 100 рублей в месяц.

    Установка серверного ПО

    Собрав свою машину и подключив к ней найденный на барахолке монитор, Демьян наконец приступает к работе. Почитав форумы, он узнаёт - чтобы его хостинг работал с современными CMS, нужны специальные программы - сервер Apache, PHP, MySQL, PHPMyAdmin и т.д.

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

    Полчаса спустя Демьян разбирается в том, как правильно установить Wampserver, регистрирует домены, подключает их к серверу, и довольно потирая руки начинает устанавливать WordPress.

    Рентабельность

    Давайте посчитаем, сколько денег Демьян умудрился сэкономить:

    1. Электроэнергия . Средний тариф на электроэнергию по России - 5,31 р/кВт*ч. Средний компьютер потребляет около 600 Вт*ч. Это значит, что только за электричество Демьян платит 2300 рублей в месяц.
    2. Интернет. 100 Мбит/с стоят Демьяну 500 рублей в месяц + 100 за IP. И ему еще очень сильно повезло с щедрым провайдером.

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

    При этом:

    1. Нет техподдержки. Все проблемы решает сам Демьян, пользуясь инструкциями и форумами.
    2. Демьяну снятся кошмары о счетах за электроэнергию. Хорошо еще, что у него однотарифная система и ему не приходится платить за перерасход.
    3. Наличие блога в интернете зависит от городской электросети.
    4. Нелицензионная Windows на сервере вынуждает Демьяна дергаться при каждом дверном звонке.

    А Unihost предлагает примерно такой же сервер всего за 2500 рублей в месяц, без всех вышеперечисленных проблем. То есть Демьян «обул» себя сам на 450 рублей в месяц, а также получил проблемы с законом.