Bitrix веб-окружение 4. Создание виртуальных хостов

в 10:05, , рубрики: 1С-Битрикс, bitrix, UNIX, web, метки: , ,

Столкнулся с проблемой в веб-окружения 4. Задача состояла в следующем, — установить CentOS 5.8 + Битрикс Веб-окружение 4, после чего подключить домен 2-го уровня и затем создать поддомены, на каждом из которых будет крутиться своя копия Битрикс — Управления сайтом.

В стандартной комплектации, при добавлении нового поддомена в виртуальной машине первый сайт удачно встал и запустился. Далее, создал второй поддомен и тут вместо стандартного установщика Битрикса увидел контент сайта первого поддомена без шаблона.

Прочитав кучу мануалов, нашел простое решение, которое не требует замены основных скриптов, поставляемых из коробки. Суть решения заключается в том, что каждый сайт нужно сажать на отдельный внутренний порт апача. Т.е. Nginx принимаем на стандартный 80 порт и затем перекидыват выполнение скриптов на какой нибудь 127.0.0.1:8080 для первого поддомена, на 127.0.0.1:8081 для второго поддомена и так далее.

Но вот проблема, руками это менять каждый раз при добавлении нового домена не очень хочется, поэтому я немного дописал shell скрипты битрикса, чтобы он это делал автоматически, а именно, для каждого нового создаваемого поддомена или домена присваивал новый порт (по порядку).

Для того, чтобы это сделать, нужно войти в папку /root/bitrix-env/, найти файл add_site.sh и добавить например, после раздела #Get folder name следующие строчки:

#
# Get port
#
let siteport=$(cat /root/bitrix-env/latest_port)+1
echo "$siteport" > /root/bitrix-env/latest_port

Этим мы говорим, что нужно прочитать в файле latest_port номер последнего добавленного порта и прибавить к нему 1. Затем сохранить это значение в переменную siteport и записать его в тот же файл (обновить).

После этого спускаемся вниз, почти в каждый конец.

После строки:

cp /root/bitrix-env/bx_nginx_site_template.conf /etc/nginx/bx/site_avaliable/bx_ext_"$sitedir".conf
Добавляем:

sed -i "s/#SERVER_PORT#/$siteport/g" /etc/nginx/bx/site_avaliable/bx_ext_"$sitedir".conf
После строки:

cp /root/bitrix-env/bx_ssl_nginx_site_template.conf /etc/nginx/bx/site_avaliable/bx_ext_ssl_"$sitedir".conf
<pre>

Добавляем:
<pre lang="bash">
sed -i "s/#SERVER_PORT#/$siteport/g" /etc/nginx/bx/site_avaliable/bx_ext_ssl_"$sitedir".conf

После строки:

cp /root/bitrix-env/bx_apache_site_template.conf /etc/httpd/bx/conf/bx_ext_"$sitedir".conf
Добавляем:

sed -i "s/#SERVER_PORT#/$siteport/g" /etc/httpd/bx/conf/bx_ext_"$sitedir".conf
После этого нужно немного подправить шаблоны виртуальных хостов, которые находятся в папке /root/bitrix-env/:

bx_apache_site_template.conf
bx_nginx_site_template.conf
bx_ssl_nginx_site_template.conf
Во всех них нужно найти и заменить:

8887
на

#SERVER_PORT#
Т.е. тем самым мы меняем фиксированный порт на переменную, которая будет подставлять нам нужный порт.

Ну и последнее, что осталось сделать, это в /root/bitrix-env/ создать файл latest_port и записать в него значение последнего использованного порта в созданном виртуальном хосте. Если вы еще не добавляли никаких доменов и поддоменов, то можно записать 8079, в результате нумерация при создании хостов начнется с 8080 и так далее. Можно выбрать другие порты, тут уж как хотите.

После произведенных действий перезапустите конфиги:

/etc/init.d/httpd reload
/etc/init.d/nginx reload
На этом все

Автор: unnisjm

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js