Недавно столкнулся со следующей проблемой – нужно было перенести корпоративный сайт битрикс на новый хостинг.
Проблема была в том, что на одном движке работали несколько сайтов
Сделать архив через админку не составило труда, а вот заставить работать несколько сайтов с разными доменными именами на одном IP сразу не получилось. В связи с этим, хочу рассказать как настроить мультисайтовость на примере виртуальной машины bitrix, с развернутым бэкапом. И так – у нас есть несколько сайтов, с разными доменами, использующие одну копию нашей CMS.
Скачиваем виртуальную машину, запускаем ее в нашем гипервизоре, смотрим на то, какой IP она получила, и заходим в веб интрефейс, что бы развернуть бекап.
Ура, получилось, основной сайт работает. У нас остались папки с остальными сайтами. Допустим у нас есть папка и домен site2.com Для теста на локальной машине, правим файл hosts (c:\windows\system32\drivers\etc\hosts) и вносим запись IP_виртуальной машины site2.com
Далее копируем папку с нашим сайтом на веб-сервер, я для теста скопировал его в директорию bitrix, /home/bitrix/www/site2
Скопировать на сервер можно через SSH, используя утилиту PSCP
Утилита консольная, и простая, синтаксис следующий:
c:\pscp.exe -r c:\site2 root@192.168.1.1:/home/bitrix/www/
Ключик -r нужен для папок, рекурсивно копирует все внутри. Если хотим скопировать только файлы из папки, в уже созданную папку на сервере то набираем
c:\pscp.exe -r c:\site2\* root@192.168.1.1:/home/bitrix/www/site2
Теперь нужно настроить конфиги сервера. В данном случае, nginx принимает запрос на порт 80, передает на внутренний веб сервер, который уже перенаправляет запрос на нужный сайт, в зависимости от имени. Каждый сайт внутри висит на своем порту.
Правим первый конфиг веб сервера /etc/httpd/bx/conf/default.conf, там уже есть настройки нашего первого сайта.
Копируем этот конфиг целиком в конец сайта. Что нам нужно в нем поменять для нового сайта:
Listen 127.0.0.1:8889
<VirtualHost 127.0.0.1:8889>
ServerAdmin webmaster@localhost
DocumentRoot /home/bitrix/www/site2
Меняем номер порта на единичку больше, и прописываем новый корень сайта (там где будет лежать сайт)
Правим второй конфиг /etc/nginx/bx/site_avaliable/s1.conf
Примечание
Можно создать отдельный конфиг для каждого сайта, например s2.conf
данные конфиги подтягиваются в основной файл /etc/nginx/nginx.conf, если зайти в него, внизу можно увидеть строку:
# Set default website
include bx/site_enabled/*.conf;
В папке site_enabled лежат символические ссылки на конфиги в папке site_available
Предположим, в site_available мы создали второй конфиг s2.conf, что бы он заработал, создадим символическую ссылку на папку site_enable
ln -s /etc/nginx/bx/site_avaliable/s1.conf etc/nginx/bx/site_enable
Но мы продолжим работать с одним конфигом s1.conf. В нем мы видим
Копируем целиком эту конструкцию, вставляем в конец. Что нужно исправить:
server {
listen 80; здесь убираем default server
server_name mysite2.com www.mysite2.com; Здесь прописываем наши домены, по ним будет открываться наш второй сайт
server_name_in_redirect off;
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;
set $proxyserver “http://127.0.0.1:8889“; Правим на тот порт, который мы указали в /etc/httpd/bx/conf/default.conf
set $docroot “/home/bitrix/www/site2“; Указываем директорию к корню нашего сайта
index index.php;
root /home/bitrix/www/site2; Указываем директорию к корню нашего сайта
# Redirect to ssl if need
if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
# Include parameters common to all websites
include bx/conf/bitrix.conf;
# Include server monitoring locations
include bx/server_monitor.conf;
}
Готово. Теперь важный момент – для того что бы сайты заработали, и использовали ядро битрикса, нужно прописать ссылки на него, для нашего второго сайта.
ln -s /home/bitrix/www/bitrix /home/bitrix/www/site2
ln -s /home/bitrix/www/upload /home/bitrix/www/site2
Теперь в директории нашего второго сайта появились ссылки на каталоги битрикса.
Перезапускаем сервисы:
/etc/init.d/nginx restart
/etc/init.d/httpd restart
Прописываем в админке битрикса путь к корневой директории нашего второго сайта /home/bitrix/www/site2
Теперь в браузере по ссылке site2.com и www.site2.com должен открываться сайт из директории /home/bitrix/www/site2
Статья является не претендует на мануал по настройке nginx и bitrix, и написана из личного опыта.
Если у Вас есть вопросы, задавайте их на форуме, или ниже в комментариях.
Добавить комментарий