Организуем свой хостинг с 0, или История одной бессонной ночи

в 8:14, , рубрики: Песочница, хостинг, метки:

Здравствуй, уважаемое читатели.

Сегодня я хочу поделиться историей создания полностью своими силами одного маленького, но храброго хостинга. Материальных затрат не было почти никаких. Целью ставилось — организация работы пары десятков слабо нагруженных сайтов своих друзей и коллег, возможность обмениваться файлами, использовать БД, или тестировать свои скрипты в онлайне. В общем, кому что. Под катом — иллюстрированный экстракт работающих советов, полученный в результате одной бессонной ночи, расцвеченной плясками с бубном, раскуриванием благовоний и прочими неотъемлемыми атрибутами настройки любого сервера. Особенно рекомендован тем, кто, также как и я, пробует эту магию впервые.

Итак, приступим.

Исходные данные:

Есть локальная сеть на 3 компьютера. Один (comp1) раздает Интернет, остальные два (comp2 & comp3) подключены к Сети через первый. На comp1 — Win Server 2003, на остальных — XP. Толщина канала — 8 Мбит/с. IP — статический белый. Ресурсами, достаточными для организации мало — мальски приемлемого хостинга обладает только comp2 (Phenom X4, 4 Gb RAM, 750 Gb HDD, хорошее охлаждение и блок питания, не шумит при постоянной работе, подключен к UPS). Остальные важные атрибуты — банка кофе, кола и куча сладостей для поднятия настроения.

Подготавливаем рабочее место, раскладываем инструменты.

Итак, для начала я решил снести с comp2 XP и поставить на него обычную Ubuntu 11.10. Не хочу разводить тут очередной холивар, просто скажу, что сделал это из — за того, что эта система мне ближе + по советам «старших товарищей».

Итак, на comp2 начала ставиться Ubuntu.

Естественно, тут никаких неожиданностей не возникло. Я прошел пару несложных диалогов, типа установки времени и региональных настроек, выделил и форматировал 1 SATA диск на 750 Gb. Через несколько минут платформа для экспериментов была готова.

Первый, блин!

Очевидно, первое, что я сделал (кроме общего upgrade'а), была установка необходимых хостингу серверов: Apache, MySQL и подключение php. Решил не заморачиваться и установил все в одной LAMP связке (sudo apt-get install php5 mysql-server apache2), прошел несложный диалог по настройке всех этих чудо — зверей, рестартанул Апач (sudo service apache2 restart) и под локалхостом увидел приветственное «It works!». А потом, уже с другого компьютера (его IP отличен от моего. Тогда это получилось совершенно случайно, но потом будет важно), запросив свой внешний ip я не увидел ничего. Радости поубавилось.

Мыши кололись, но...

Тем не менее, скоро стало ясно — проблема кроется в том, что запрос извне доходит до comp1 (с Win Server 2003) и на нем же гаснет. Гугление привело к пониманию того, что необходимо опубликовать порт для доступа из Интернет к внутреннему серверу. Помогла инструкция, расположенная тут. Сервер начал отвечать на запросы,

Править легко, управлять трудно (Гете).

Управление хостингом, знакомство с Webmin

Теперь можно было переходить к настройкам Апача. Времени и желания возиться с конфигурационными файлами вручную у меня не было, поэтому я обратился на поиски какой — нибудь панели управления. Попробовал потестить ISP manager, но, в итоге, остановился на Webmin.

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

Больше сайтов, красивых и разных!

Теперь передо мной вставали следующие вопросы — как сделать так, чтобы
0) Сайт хранился не где попало (например, в /var/www) а в том месте, где мне нужно
1) Сайт был не один и в любой момент мог бы быть запрошен по своему DNS из внешней сети.

Для решения этих вопросов я использовал Gparted — сделал ещё 1 раздел нужного объема, потом еще один и… все. Система сказала, что достигнут потолок количества основных разделов. Решение проблемы состояло в выделении расширенного раздела и разбивки уже его на отдельные логические.
Так как система крутилась на этом же самом диске, то сделать это прямо из — под нее было невозможно. Пришлось создавать LiveUSB с LinuxMini и выполнять вышеозначенные операции из — под него.

Валера, пришло твое время!

Когда все необходимое пространство было размечено, пора было воспользоваться Webmin'ом для создания виртуальных хостов. Хм, тогда я слабо представлял себе что это. Google, Google… Так я узнал о ip-based и name-based виртуальных хостах (для справки, в простейшем смысле — ip-based, это когда каждому сайту на хостинге соответствует свой отдельный адрес, а name-based — все сайты расположены на 1 общем адресе). Очевидно, в моем случае подходил вариант с name-based. Статья по настройке всего этого дела, которую мне посоветовал один сетевой друг, явно сэкономила мне несколько тысяч нервных клеток.

DNS.

C DNS проблем особо не возникало, я зарегистрировал один домен и направил на свой ip еще за пару дней до этой ночи. Хочу отметить только, что я почему — то много раз слышал высказывания на тему того, что доменные имена нужно покупать только у регистраторов, хотя там .ru стоил около 600 рублей, когда у одного из хостеров я приобрел его за 150. Вероятно, тут есть какие — то подводные камни.

Рассвет.

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

Завершающие штрихи и мелкие проблемы (куда же без них)

Очевидно, что теперь было самое время подумать о том, как в будущем удаленно управлять расположенными на компьютере файлами и БД MySQL.

Для управления файлами я поставил FTP — сервер proFTPd и графический фронтенд Gadmin. Все встало без проблем, сервер отрапортовал из консоли о своем запуске. Небольшая проблема возникла при запуске Gadmin'а — он требовал какие — то сертификаты. Все решилось после прочтения этой статьи по настройке ftp-сервера (нужно было закомментить несколько строк в его конфигурационном файле).

Удаленное управление Мускулом.

Для этой цели был установлен phpMyAdmin, созданы необходимые базы данных, а пользователям розданы необходимые привилегии. Тут тоже не обошлось без странностей. К примеру, при вводе адреса сайта вида «mysite.ru/phpmyadmin» после залогивания система выводила ошибку «Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.» Так как времени оставалось совсем мало, я решил забить на это и воспользоваться хаком, описанным в этой статье.

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

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

Так эта история получила счастливое завершение и можно было со спокойной душой отправляться на пару о компьютерных сетях.

Автор: light204


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js