Краткий список изменений:
- изменены настройки модуля nginx-push-stream-module для корректной поддержки push & pull
- по умолчанию включен php модуль json
- исправлена работа rpm пакета при обновлении
- исправлена постановка в cron задачи проверки прав munin и nagios
- исправлены правила обработки nginx-ом объединенных css
- добавлены правила для обработки nginx-ом объединенных js
- установлены корректные заголовки ответов nginx при выводе кастомных ошибок
- исправлены определение переменных в nginx
- в BitrixVM исправлены зависимости библиотек
При открытие страницы, клиент ajax запросом, подключаются к своему каналу на одном из портов nginx 8893 (http) или 8894 (https). С данного порта, nginx перенаправляет пользователя на внутренний сервер (доступный только по 127.0.0.1:8895) мгоновенных сообщений. Где проверятся наличие канала пользователя и новых сообщений. В случае если в канале нет сообщений, сервер не отдает ответ, а держит соединение в течение 40 сек.
Если в течение этого времени в канал пользователя прийдет новое сообщение, то сервер отправит его клиенту и закроет соединение. В случае если в канал пользователя не будет новых сообщений в течение 40 секунд, то сервер разорвет соединение и отправит ему заголовок 304 Not Modified.
После получения ответа сервера и закрытия соединения, клиент выполнит повторное подключение к каналу, с новой датой последнего изменения.
Сообщения в канал пользователя публикуются посредством вызова соответствующих методов API модуля "Push & Pull".
Для работы с мгновенными сообщениями рекомендуем использовать протокол https и обеспечить правильную синхронизацию времени сервера.
В случае, если вам не подходит BitrixEnv или BitrixVM вы можете настроить сервер мгновенных сообщений самостоятельно. Для этого вам необходимо собрать nginx с поддержкой модуля nginx-push-stream-module и настроить его по аналогии с BitrixEnv.
Общие настройки для модуля nginx-push-stream-module
push_stream_shared_memory_size 128M; push_stream_max_subscribers_per_channel 50; push_stream_max_messages_stored_per_channel 100; push_stream_max_channel_id_length 32; push_stream_max_number_of_channels 100000; push_stream_shared_memory_cleanup_objects_ttl 60; push_stream_message_ttl 86400; |
server { listen 8893; include bx/node_host.conf; 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:8893; # Errors include bx/conf/errors.conf; location ^~ /bitrix/sub/ { proxy_pass location ^~ /bitrix/subwin/ { proxy_pass location ^~ / { deny all; } } server { listen 8894; include bx/node_host.conf; include bx/conf/ssl.conf; 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:8894; proxy_set_header HTTPS YES; # Errors include bx/conf/errors.conf; location ^~ /bitrix/sub/ { proxy_pass location ^~ /bitrix/subwin/ { proxy_pass location ^~ / { deny all; } } # Server for push and pull server { listen 127.0.0.1:8895; include bx/node_host.conf; 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:8896; location ^~ /bitrix/pub/ { push_stream_publisher admin; set $push_stream_channel_id $arg_CHANNEL_ID; push_stream_store_messages on; push_stream_keepalive off; allow 127.0.0.0/8; deny all; } location ^~ /bitrix/sub/ { push_stream_subscriber long-polling; set $push_stream_channels_path $arg_CHANNEL_ID; push_stream_last_received_message_tag $arg_tag; push_stream_longpolling_connection_ttl 40; push_stream_keepalive on; push_stream_authorized_channels_only on; push_stream_content_type "text/html; charset=utf-8"; push_stream_message_template "#!NGINXNMS!#{"id":~id~,"tag":"~tag~","time":"~time~","text":~text~}#!NGINXNME!#"; } location ^~ /bitrix/subwin/ { push_stream_subscriber long-polling; set $push_stream_channels_path $arg_CHANNEL_ID; push_stream_last_received_message_tag $arg_tag; push_stream_longpolling_connection_ttl 40; push_stream_keepalive on; push_stream_authorized_channels_only on; push_stream_content_type "text/html; charset=windows-1251"; push_stream_message_template "#!NGINXNMS!#{"id":~id~,"tag":"~tag~","time":"~time~","text":~text~}#!NGINXNME!#"; } location ^~ / { deny all; } # Errors include bx/conf/errors.conf; } |
Документация по АПИ "Push & Pull" уже есть?
Загруженный архив с ошибкой! не открывается...
По этому приходится делать много конфигураций, что бы максимально соответствовать окружению.
Из-за чего это может происходить?
Можно перенести их выполнение на крон или подождать пока они отработают.
Распаковал новый BitrixEnv на CentOS6. В настройках модуля Push & Pull включил пуши - не приходят.
Как данная проблема решена?
Хотя мне кажется, что БД очень плохо будет работать в режиме изменения ресурсов.
yum install php-soap
service httpd restart
Пришлось скачать исходник php5.3.3 скомпилировать его, вытащить из него soap.so и вставить в текущую конфигурацию. Заработало!
В итоге с 4.2 пока только разочарование.
PS Пуши на Android, не работают. На iOS приходят, но только на личные сообщения.
Запустил виртуальную машину в VMPlayer. Cent-OS запустилась и спрашивает логин/пароль.
Какие у нее данные для входа?
Документация по настройке не соответствует действительности.
Но,
С некоторых порт при попытке перезапуска nginx получаю ответ:
[root@bitrix ~]# service nginx restart
Начиная с версии 0.4.0
autoconf
gcc
devel-пакеты
samba*
желательно по каждому пункту отдельно. Не очень то это хорошо и правильно ставить на нормальную боевую систему компилятор, утилиты сборки и исходные коды библиотек.
Спасибо!
nginx: [emerg] unknown directive "push_stream_content_type" in /etc/nginx/bx/site_enabled/push.conf:21
nginx: configuration file /etc/nginx/nginx.conf test failed
nginx: [emerg] unknown directive "push_stream_content_type" in /etc/nginx/bx/site_enabled/push.conf:21
nginx: configuration file /etc/nginx/nginx.conf test failed
В настройках есть такие строки:
В документации об этом, к сожалению, ни слова.
после установки вижу
Installed:
bitrix-env4.noarch 0:3.1-bitrix
Complete!
однако все отвалилось nginx не стартует сервак упал
[root@CentOS-64-64-minimal ~]# /etc/init.d/nginx restart
nginx: [emerg] open() "/etc/nginx/bx/server_monitor.conf" failed (40: Too many levels of symbolic links) in /etc/nginx/bx/site_enabled/s1.conf:25
nginx: configuration file /etc/nginx/nginx.conf test failed
что прикажете делать? По моему это саботаж какой то!!!!
проблему пока решил удалением файла server_monitor.conf"
он почему то повредился и я даже не мог его открыть на редактирование
заменил рабочим с другого сервака.
доступ предоставлен в тикете можете посмотреть что и как ради интереса...
сейчас попробую еще один сервак обновить, если ситуация повториться напишу в личку вам
nginx: [error] push stream module: push_stream_channels_path must be set. in /etc/nginx/nginx.conf:66
nginx: configuration file /etc/nginx/nginx.conf test failed
Блин, как вы такие баги выпускаете?
yum clean all yum reinstall bitrix-env4 не помогло... Что делать? Сервак не рабоает!!!
2. выполните следующее
yum clean all
yum reinstall nginx
yum reinstall bitrix-env4
Строку 1302 init-скрипта /etc/init.d/bvat нужно как минимум заменить с
Спасибо.
Как можно прикрутить этот модуль для nginx под Windows?
Спасибо!
nginx: [emerg] unknown directive "push_stream_shared_memory_size" in /etc/nginx/bx/conf/im_settings.conf:3
Попытка как-то собрать заново Push&Pull из git--a не увенчалась.