Создание виртуальных хостов в виртуальной машине Битрикс
Предположим, у нас есть вебсервер с настроенной связкой Apache — Nginx, например, Bitrix Virtual Appliance, и мы хотим сделать на этом сервере дополнительный виртуальный хост (или несколько хостов).
-
Заведём папку для нашего будущего виртуального хоста. Где она будет находиться — не принципиально. Мне удобнее держать виртуальные хосты в папке
/var/vhosts
. Допустим, мы создаём хост с именем virtualka1, это значит, что нам надо создать папку/var/vhosts/virtualka1
. Внутри нам понадобятся еще 2 папки:www
— содержимое этой папки будет доступно из браузера, иlog
— в этой папке будем держать логии нашей виртуалки. Разумеется все манипуляции делаются от root'а. -
Теперь созданную нами папку надо сделать доступной для пользователя
bitrix
, от которого обычно и осуществляется вся работа с сайтом. Для этого, находясь в папке/var/vhosts
, мы выполняем командуchown –R bitrix:bitrix virtualka1/
Теперь пользователь
bitrix
может делать с этой папкой всё. Для большего удобства, создадим символическую ссылку на эту папку в домашней директории пользователя:ln –s /var/vhosts/virtualka1 /home/bitrix
-
Переходим к настройке серверов Nginx и Apache. Конфиги будем располагать таким образом, что насторйка каждого виртуального хоста будет храниться в отдельном файле в папке
sites-available
. А в папкеsites-enabled
будут лежать симлинки на конфиги тех виртуалок, которые нам нужны. Таким образом можно будет легко разобраться где какой конфиг лежит и, при необходимости, отключить ненужные путём удаления симлинка.Nginx
Находим файл
/etc/nginx/nginx.conf
и добавляем в самый конец перед закрывающей скобкой}
такую строчку:include /etc/nginx/sites-enabled/*;
Это заставит nginx грузить конфиги из папки
sites-enabled
. Разуемеется папкиsites-available
иsites-enabled
должны существовать в директории/etc/nginx
, если их нет, то надо создать. Теперь в папкеsites-available
создаём файлvirtualka1
с таким содержимым:server { listen 80; server_name virtualka1; server_name_in_redirect off; access_log /var/vhosts/virtualka1/log/nginx_access.log common; index index.php; error_page 500 502 503 504 /500.html; error_page 404 = /404.php; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host:80; client_max_body_size 1024M; client_body_buffer_size 4M; root /var/vhosts/virtualka1/www; location / { expires 3d; proxy_pass http://127.0.0.1:8888; } location ~ (/|\.php)$ { proxy_pass http://127.0.0.1:8888; } }
Всё, осталось сделать симлинк на наш конфиг в папку
/etc/nginx/sites-enabled/
.Apache
Проконтролируем, чтобы в конце файла
/etc/apache2/apache2.conf
была строчкаInclude /etc/apache2/sites-enabled/
, а так же, чтобы были папки/etc/apache2/sites-available
и/etc/apache2/sites-enabled
. Если все хорошо, то в папке/etc/apache2/sites-available
создаём файлvirtualka1
с таким содержимым:<VirtualHost *:8888> ServerName virtualka1 ServerAdmin webmaster@localhost DocumentRoot /var/vhosts/virtualka1/www ErrorLog /var/vhosts/virtualka1/log/apache2_error.log CustomLog /var/vhosts/virtualka1/log/apache2_access.log combined </VirtualHost>
Делаем симлинк на созданный конфиг в папку
/etc/apache2/sites-enabled/
. -
Осталось перезапустить сервера:
/etc/init.d/nginx restart /etc/init.d/apache2 restart
Всё, виртуалка должна работать. Проверялось на BVA 1.6.
Есть один нюанс: исходные конфиги виртуалок битрикса намного больше, потому что заточены специально под него (например, там есть специальная настройка для HTML-кэшa). Я повыкидывал из них всё, на мой взгляд, не нужное, ведь у меня на этих виртуалках далеко не всегда крутиться битрикс :)
Для тех, кому лень вручную всё это делать
Мне вот лень, поэтому я написал себе скриптик. В качестве единственного параметра он принимает название виртуалки, оно же название БД, оно же логин к БД и пароль к БД. Да, скрипт автоматически создаёт и базу тоже.
Способ применения:
crSite.sh virtualka1
Не забываем разрешить скрипту исполняться.
Скрипт для BVA2.0 можно найти в моей следующей статье.
Нужна помощь в вопросах настройки и администрирования VPS, сайт на битриксе с шареда переносим туда - опыта в администрировании серверов вообще нет. Вознаградим ) Как связаться? Вопрос довольно срочный.
icq пять8пять8один8пять8
email - splean.khmao gmail com
access_log /var/vhosts/virtualka1/log/nginx_access.log common;
Ругается так:
[root@localhost ~]# /etc/init.d/nginx restart
[emerg]: unknown log format "common" in /etc/nginx/sites-enabled/sitename:5
configuration file /etc/nginx/nginx.conf test failed
То есть типа такой формат логов ему неизвестен BVA версии 2.0. Это действительно ошибка и можно безнаказанно удалять определение common или это что-то у меня не так?
Кстати если выкладываете скрипт в общий доступ неплохо бы указывать условия использования. Я, например, могу его(немного причесав под свои нужды) использовать в работе?
Что касается скрипта, то вы можете делать с ним всё, что вам хочется. Засорять сайт дисклеймерами я не буду.
Правда у меня вылез косяк - в конфиге апача DirectoryIndex index.php index.html index.htm
в nginx так же, но по урлу yoursite.com 403 ошибка. Работает только если втупую укажешь yoursite.com/index.php
Где я накосячил?