Создание виртуальных хостов в виртуальной машине Битрикс
Предположим, у нас есть вебсервер с настроенной связкой 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
Где я накосячил?