программа автоматизации бухучета
"ИНФОБУХГАЛТЕР"
продажа, установка, настройка, сопровождение
Вологда, ул.Козленская, д.35, офис 325
 (8172)21-15-70

Автоподдомены на fvds.ru
 

Как-то заказали мне небольшой сайт для дачного кооператива. Не хотелось ради этого брать отдельный хостинг и решил я создать поддомен на firstvds.ru, где у меня уже был VDS на FreeBCD. Хотелось то хотелось, но опыта администрирования Linux-серверов не было. К тому же на firstVDS к тому времени ввели платную техподдержку и убрали бесплатную панель управления (ISP), с помощью которой это делалось за пару кликов. "Задолбав" техподдержку "наивными хотелками", повозившись неделю, я отступился от VDS. Пошел на 1GB.ru, где имел виртуальный хостинг и сделал субдомен минут за пять. Но "зудело")))).... 

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

И решил для таких же "не очень линуксоидов" как я написать подробную инструкцию по запуску автоподдоменов на VDS firstvds.ru (FreeBCD).

1. Надо добавить запись со звездочкой ("*") (тип А) в файл зоны вашего домена на DNS (сервер имен).

Т.е. строку: *.vash_domen.ru.    IN    A     XXX.XXX.XXX.XXX

где  XXX.XXX.XXX.XXX -  ip-адрес вашего VDS

Для этого заходим на firstvds.ru, в личный кабинет, жмем слева "Виртуальные серверы" (раздел "Товары/услуги"). Выделяем ваш сервер,  жмем сверху "В панель". Принимаем сертификаты(будет окно запроса). В разделе "Главное" жмем "Собственные файлы".

Идем в папку "/var/named/etc/namedb". тут ищем файл типа "ваш_домен.ru" и открываем его(жмем вверху "Изменить")

Добавляем строку

*.vash_domen.ru.    IN    A     XXX.XXX.XXX.XXX

где  XXX.XXX.XXX.XXX -  ip-адрес вашего VDS

 vash_domen.ru - ваш домен, не забудьте в конце точку. Это оказалось очень важно. Если не добавить, то записть еще раз дополниться именем домена. т.е. можно, видимо, просто написать  "*    IN    A     XXX.XXX.XXX.XXX ".(не стал я экспериментировать).

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

Вот что должно в итоге получиться. Изменения и дополнения выделены жирным.

$TTL 3600
ваш_домен.ru. IN SOA ns1.user.fvds.ru. root.user.fvds.ru. (2013090904 10800 3600 604800 86400)
ваш_домен.ru. IN NS ns1.firstvds.ru.
ваш_домен.ru. IN NS ns2.firstvds.ru.
ваш_домен.ru. IN MX 10 mail
ваш_домен.ru. IN A XXX.XXX.XXX.XXX
*.ваш_домен.ru. IN A XXX.XXX.XXX.XXX
www IN A XXX.XXX.XXX.XXX
ftp IN A XXX.XXX.XXX.XXX
mail IN A XXX.XXX.XXX.XXX
smtp IN A XXX.XXX.XXX.XXX
pop IN A XXX.XXX.XXX.XXX
ваш_домен.ru. IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX a mx ~all"

Нажать "ОК". Вы добавили запись в свой сервер имен(или BIND по "умному"). Но надо теперь перезапустить сервер имен. Можно через консоль (например "putty.exe") (команда "/etc/rc.d/named restart") или просто перезапустить сервер с панели VDS("Установка->Перезагрузка VDS").

Но и это еще не все))). Теперь надо чтоб информация обновилась на "авторитетных" серверах имен firstvds.ru.

Для этого заходим в DNS-менеджер https://82.146.47.1/manager/dnsmgr. Пароль и логин указан в письме при создании домена. Я его потерял и пришлось просить в поддержке. Вот тут есть тонкость. Надо обязательно нажать слева "Доменные имена". И нажать "Обновить" сверху. Потом нажать "Записи" и убедиться что запись со звездочкой("*") появилась. 

Все. DNS теперь настроен. Через некоторое время ваш сайт исчезнет из инета. Не пугайтесь. Через некоторое время(у меня около часа) он снова появится. Это связано с обновлением кэша вторичных DNS-серверов. Теперь можно пингануть ваш основной сайт и любой поддомен. Т.е. "ping vash_domen.ru" и   "ping qq.vash_domen.ru"  должны показывать один и тот же ip вашего VDS.

2.Настройка APACHE(веб-сервера).

Настройка заключается в изменеии файла "/usr/local/etc/apache22/httpd.conf" (находим и редактируем как выше редактировали файл зоны).

Открываем файл и ищем блок "<VirtualHost XXX.XXX.XXX.XXX :80 >", где  XXX...... - ip вашего VDS

добавляем в этот блок записи:

 ServerAlias *.ваш_домен.ru

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} !^www\. ваш_домен \.ru
RewriteCond %{HTTP_HOST} !^ ваш_домен \.ru
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\. ваш_домен .ru
RewriteRule ^/(.*) /%1/$1

В итоге получится подобное (изменения выделены жирным):

<VirtualHost XXX.XXX.XXX.XXX:80 >
ServerName ваш_домен.ru
ServerAlias *.ваш_домен.ru
AssignUserID user user
CustomLog /home/httpd-logs/user.fvds.ru.access.log combined
DocumentRoot /home/aset/data/www/user.fvds.ru
ErrorLog /home/httpd-logs/user.fvds.ru.error.log
ServerAdmin webmaster@user.fvds.ru
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
php_admin_value open_basedir "/home/user/data:."
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@cppv.fvds.ru"
php_admin_value upload_tmp_dir "/home/user/data/mod-tmp"
php_admin_value session.save_path "/home/user/data/mod-tmp"
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} !^www\.ваш_домен\.ru
RewriteCond %{HTTP_HOST} !^ваш_домен\.ru
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.ваш_домен.ru
RewriteRule ^/(.*) /%1/$1

</VirtualHost>

Условия перенапрвления ( RewriteCond ) описываются "регулярными выражениями":

RewriteCond %{HTTP_HOST} !^www\.ваш_домен\.ru - условие что строка запроса страницы не начинается с  www.ваш_домен.ru, т.е это не субдомен.

RewriteCond %{HTTP_HOST} !^ваш_домен\.ru - аналогично предыдущему, если запрос страницы набирается без www .

RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.ваш_домен.ru - тут запоминаем переменую для следующей строки $1 (первая скобка). Реально это вторая скобка, т.к. первая не запоминается из-за   "?:". Т.е. запоминаем наш субдомен. Если "qq.ваш_домен.ru", то   $1="qq" 

RewriteRule ^/(.*) /%1/$1 - и наконец само перенаправление.  "^/(.*)"  - запоминаем подкаталоги. Если  "qq.ваш_домен.ru/pic/1.jpg" то в $1=" pic/1.jpg". " /%1/$1 " = "/qq/pic/1.jpg". Что и требовалось. Если запрос "корня" поддомена, то  " /%1/$1 "="/qq/" и загрузится "/qq/index.html" или  "/qq/index.php". 

перезапускаем APACHE. или в кансоли ("/usr/local/etc/rc.d/apache22 restart") или перезапускаем весь VDS(как выше описано)

Ну и все. Теперь в корне сайта создаем любое количество каталогов. Например: каталог subdomen1, в нем файл "index.html" ( "index.php" ).

Набираем в броузере "subdomen1.ваш_домен.ru" и должен окрыться соответсвующий файл "index.html" ( "index.php" ).

Причем можно все это сделать даже без консоли. Перзапуская VDS с VDS-менеджера после правки файла зоны и конфигурирования апача.