В стандартной комплектации, при добавлении нового поддомена в виртуальной машине первый сайт удачно встал и запустился. Далее, создал второй поддомен и тут вместо стандартного установщика Битрикса увидел контент сайта первого поддомена без шаблона.
Прочитав кучу мануалов, нашел простое решение, которое не требует замены основных скриптов, поставляемых из коробки. Суть решения заключается в том, что каждый сайт нужно сажать на отдельный внутренний порт апача. Т.е. 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
На этом все
ссылка на оригинал статьи http://habrahabr.ru/post/165331/
Добавить комментарий