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

28.07.2010
@LEXXX_NF

Предположим, у нас есть вебсервер с настроенной связкой Apache — Nginx, например, Bitrix Virtual Appliance, и мы хотим сделать на этом сервере дополнительный виртуальный хост (или несколько хостов).

  1. Заведём папку для нашего будущего виртуального хоста. Где она будет находиться — не принципиально. Мне удобнее держать виртуальные хосты в папке /var/vhosts. Допустим, мы создаём хост с именем virtualka1, это значит, что нам надо создать папку /var/vhosts/virtualka1. Внутри нам понадобятся еще 2 папки: www — содержимое этой папки будет доступно из браузера, и log — в этой папке будем держать логии нашей виртуалки. Разумеется все манипуляции делаются от root'а.

  2. Теперь созданную нами папку надо сделать доступной для пользователя bitrix, от которого обычно и осуществляется вся работа с сайтом. Для этого, находясь в папке /var/vhosts, мы выполняем команду

    chown –R bitrix:bitrix virtualka1/

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

    ln –s /var/vhosts/virtualka1 /home/bitrix
  3. Переходим к настройке серверов 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/.

  4. Осталось перезапустить сервера:

    
    /etc/init.d/nginx restart
    /etc/init.d/apache2 restart
        

Всё, виртуалка должна работать. Проверялось на BVA 1.6.

Есть один нюанс: исходные конфиги виртуалок битрикса намного больше, потому что заточены специально под него (например, там есть специальная настройка для HTML-кэшa). Я повыкидывал из них всё, на мой взгляд, не нужное, ведь у меня на этих виртуалках далеко не всегда крутиться битрикс :)

Для тех, кому лень вручную всё это делать

Мне вот лень, поэтому я написал себе скриптик. В качестве единственного параметра он принимает название виртуалки, оно же название БД, оно же логин к БД и пароль к БД. Да, скрипт автоматически создаёт и базу тоже.

Способ применения:

crSite.sh virtualka1

Не забываем разрешить скрипту исполняться.

Скачать скрипт

Скрипт для BVA2.0 можно найти в моей следующей статье.

#1
Денис
13.11.2010 23:58
Полезный пост! Только вот скриптик не грузится...
#2
@LEXXX_NF
15.11.2010 20:27
Спасибо за внимательность! Скрипт перезалил, а заодно и немного обновил.
#3
Андрей
20.12.2010 02:17
Привет!
Нужна помощь в вопросах настройки и администрирования VPS, сайт на битриксе с шареда переносим туда - опыта в администрировании серверов вообще нет. Вознаградим ) Как связаться? Вопрос довольно срочный.

icq пять8пять8один8пять8
email - splean.khmao gmail com
#4
dclg
27.05.2011 10:47
Привет. Спасибо за скрипт, но у меня при перезапуске nginx ругается на вот эту строчку:
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 или это что-то у меня не так?

Кстати если выкладываете скрипт в общий доступ неплохо бы указывать условия использования. Я, например, могу его(немного причесав под свои нужды) использовать в работе?
#5
@LEXXX_NF
28.05.2011 21:06
Конфиг nginx'а взят из оригинальной BVM v1.6, и там он работал. В версии 2.0 возможно что-то поменяли, надо будет посмотреть. Если интересно, можете почитать документацию nginx'а на тему логов тут: http://sysoev.ru/nginx/docs/http/ngx_http_log_module.html и сами поменяете этот параметр на то, что считаете нужным.

Что касается скрипта, то вы можете делать с ним всё, что вам хочется. Засорять сайт дисклеймерами я не буду.
#6
dclg
02.06.2011 11:45
Ок, почитаю, спасибо!
#7
antndr
25.06.2011 13:42
Отличная статья, спасибо!
Правда у меня вылез косяк - в конфиге апача DirectoryIndex index.php index.html index.htm
в nginx так же, но по урлу yoursite.com 403 ошибка. Работает только если втупую укажешь yoursite.com/index.php

Где я накосячил?
#8
antndr
25.06.2011 13:43
пардон, я кажется не под той статьей вопрос оставил - речь о BVA 2.0
#9
@LEXXX_NF
25.06.2011 19:16
Скорее всего проблема в конфиге nginx'а. Я думаю, что он не в той папке сайт ищет. Попробуйте создать в папке сайта файл test.txt с каким-нибудь текстом, типа "123", а потом обратитесь к этому файлу из браузера. Если файл будет недоступен, то проблема точно в конфиге nginx'а. Надо будет проверить пути в виртуальных хостах и их названия.
#10
Владимир
08.08.2015 13:57
Будь, добр, напиши как симлинк делать в папке /etc/nginx/sites-enabled/
#11
Виталий
15.02.2016 18:03
Статья по теме добавления виртуальных хостов на nginx https://shneider-host.ru/blog/dobavlenie-virtualnyh-hostov-na-nginx.html

Писáть здесь

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