Создание виртуальных хостов в виртуальной машине Битрикс 2.0

13.06.2011
@LEXXX_NF

Раньше я уже писал подобный скрипт для BVA1.6, но с тех пор многое изменилось, и потребовался новый скрипт. Что ж, я его написал :) Но чтоб он заработал, надо внести небольшие изменения в конфиги серверов Apache и Nginx.

Напомню, что делает скрипт:

  • Создаёт конфиги виртуальных серверов Apache'а и Nginx'а.
  • Создаёт БД и пользователя БД.
  • Создаёт папку для хоста и симлинк на неё в домашней директории пользователя bitrix.

Кстати

В оригинальной поставке в BVA2.0 нет ни man'a, ни Midnight Commander'а. Не знаю как вам, а мне без них неуютно, поэтому я сначала устанавливаю их:

yum install man
yum install mc

Apache

Как и раньше, настройки каждого виртуального хоста будем хранить в отдельном файле, а Apache'у будем подсовывать симлинк на него.

В папке /etc/httpd/conf.d/ создаём 2 директории: sites-available и sites-enabled.

Теперь в /etc/httpd/conf/ открываем конфиг Apache'а httpd.conf и добавляем в конец 3 строчки:

NameVirtualHost *:8888
Listen 127.0.0.1:8888
Include ./conf.d/sites-enabled/

У конфига дефолтной виртуалки /etc/httpd/conf.d/default.conf надо удалить первую строчку Listen 8888.

Nginx

С Nginx'ом делаем почти то же самое. Создаём директории: /etc/nginx/sites-available/ и /etc/nginx/sites-enabled/.

Дописываем подгрузку конфигов в файл /etc/nginx/nginx.conf:

include ./sites-enabled/*;

Эту строчку нужно вставить перед последней закрывающей «}», чтоб она попала внутрь директивы http { ... }.

Всё, теперь можно скачать скрипт и пользоваться им во имя добра и справедливости. Только имейте в виду, что:

  • Скрипту надо дать права на исполнение и запускать его из-под root'а.
  • Вызывать скрипт надо так: ./crSite20.sh virualka1.
  • За образцы конфигов серверов взяты исходные конфиги, которые были в BVA.
  • Папки виртуальных хостов лежат здесь: /var/vhosts/.
  • Название БД, имя пользователя БД, пароль БД, а так же названия виртуальных хостов и папок для них — это одно и то же слово, передаваемое скрипту первым параметром. Поэтому постарайтесь не использовать в нём спецсимволов, никаких проверок на валидность нет.
  • Скрипт не предназначен для production-серверов. Используйте его на свой страх и риск!

Скачать скрипт для BVA1.6 и почитать более подробный рассказ о скрипте можно в моей предыдущей статье.

А как открыть доступ извне к базе данных написано в этой статье.

#1
Сергей
08.03.2014 20:12
А как сделать в битрикс виртуальной машине(последняя) перенаправление по поддомену.

например есть основной домен site.ru днс этот домен перенаправляет на нужный ip на 80 порт

хотим сделать поддомен sub.site.ru в днс перенаправляем на тот же ip а вот в настройках битриксовой машины сделать перенаправление на другой локальный ip например 192.168.1.77 порт 80 там будет стоять не битрикс.

Заранее спасибо за ответ
#2
@LEXXX_NF
08.03.2014 23:32
Самый простой вариант - перенести ваш сайт с отдельного сервера на виртуалку битрикса. Нужно будет в меню виртуалки создать новый сайт, в качестве адреса указать sub.site.ru. Сам сайт положить в папку, созданную битриксом, а то что там есть по-умолчанию - снести.

Если для вас принципиально, чтобы сайт остался на другом сервере, то тогда надо самостоятельно настроить проксирование в nginx. Заходите в папку /etc/nginx/bx/site_avaliable, создаёте там файл bx_ext_sub.site.ru.conf с таким содержанием:
server {
  listen 80;
  server_name sub.site.ru;
  location / {
    proxy_pass http://192.168.1.77:80/;
  }
}
Делаете симлинку на этот файл в папке /etc/nginx/bx/site_ext_enabled. Перезагружаете nginx командой service nginx restart.
#3
Сергей
09.03.2014 22:51
Делаете симлинку на этот файл в папке /etc/nginx/bx/site_ext_enabled. Перезагружаете nginx командой service nginx restart.

Как это сделать. Можете написать более подробные команды.
#4
@LEXXX_NF
09.03.2014 23:02
Симлинками занимается команда ln. В вашем случае надо набрать ln -s /etc/nginx/bx/site_avaliable/bx_ext_sub.site.ru.conf /etc/nginx/bx/site_ext_enabled/bx_ext_sub.site.ru.conf. А потом service nginx restart.
#5
Сергей
10.03.2014 00:17
Теперь другая проблема.

в локальной сети при переходе на данный адрес в адресной строке пишет http://192.168.1.77
а при переходе из за пределов сети например через интернет по адресу ничего не открывается.

При этом пинг есть по имени
#6
Сергей
10.03.2014 01:43
Кажется сам разобрался
сделал так

server {
listen 80;
server_name sub.site.ru;
location / {
proxy_pass http://192.168.1.77:80/;
proxy_redirect off;
proxy_set_header Host sub.site.ru;
}
}

Стало работать и по внешке и локалке так как планировалось.

Единственное как отказатся от абсолютного указания хоста

что можно написать вместо sub.site.ru т.е. домен может менятся ег, com и т.д. как сделать правильный линк
#7
@LEXXX_NF
11.03.2014 10:12
У вас по одному IP может открываться 2 сайта. Чтобы серверу знать, какой именно из сайтов надо открыть в данный момент, как раз используется домен. Отказаться от него можно только если на одном IP будет находиться один единственный сайт.

Писáть здесь

А еще у меня есть: