Столкнулся с проблемой в веб-окружения 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 следующие строчки:
1 2 3 4 5 |
# # Get port # let siteport=$(cat /root/bitrix-env/latest_port)+1 echo "$siteport" > /root/bitrix-env/latest_port |
Этим мы говорим, что нужно прочитать в файле latest_port номер последнего добавленного порта и прибавить к нему 1. Затем сохранить это значение в переменную siteport и записать его в тот же файл (обновить).
После этого спускаемся вниз, почти в каждый конец.
После строки:
1 |
cp /root/bitrix-env/bx_nginx_site_template.conf /etc/nginx/bx/site_avaliable/bx_ext_"$sitedir".conf |
Добавляем:
1 |
sed -i "s/#SERVER_PORT#/$siteport/g" /etc/nginx/bx/site_avaliable/bx_ext_"$sitedir".conf |
После строки:
1 2 3 4 5 6 |
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 |
После строки:
1 |
cp /root/bitrix-env/bx_apache_site_template.conf /etc/httpd/bx/conf/bx_ext_"$sitedir".conf |
Добавляем:
1 |
sed -i "s/#SERVER_PORT#/$siteport/g" /etc/httpd/bx/conf/bx_ext_"$sitedir".conf |
После этого нужно немного подправить шаблоны виртуальных хостов, которые находятся в папке /root/bitrix-env/:
1 2 3 |
bx_apache_site_template.conf bx_nginx_site_template.conf bx_ssl_nginx_site_template.conf |
Во всех них нужно найти и заменить:
1 |
8887 |
на
1 |
#SERVER_PORT# |
Т.е. тем самым мы меняем фиксированный порт на переменную, которая будет подставлять нам нужный порт.
Ну и последнее, что осталось сделать, это в /root/bitrix-env/ создать файл latest_port и записать в него значение последнего использованного порта в созданном виртуальном хосте. Если вы еще не добавляли никаких доменов и поддоменов, то можно записать 8079, в результате нумерация при создании хостов начнется с 8080 и так далее. Можно выбрать другие порты, тут уж как хотите.
После произведенных действий перезапустите конфиги:
1 2 |
/etc/init.d/httpd reload /etc/init.d/nginx reload |
На этом все 🙂