Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Основные команды и контроль запуска

После активации лицензии запустите WCS командой

Code Block
languagebash
themeRDark
servicesudo webcallserversystemctl start webcallserver

Остановка сервера выполняется командой

Code Block
languagebash
themeRDark
servicesudo webcallserversystemctl stop

...

 webcallserver

Есть несколько способов убедиться в том, что сервер стартовал и готов к работе:

...

Code Block
languagebash
themeRDark
pspgrep aux | grep WebCallServer-afn com.flashphoner.server.Server

В консоли должно должен отобразиться два процесса: процесс WCS Core (20850 PID 6880 на примере ниже) и WCS Manager (20806 на примере ниже):

Code Block
languagebash
themeRDark
[root@localhost tmp~]# pspgrep aux | grep WebCallServer
root 20806 0.4 45.1 522148 236512 pts/0 Sl 10:56 0:59 java -Dloader.path=/usr/local/FlashphonerWebCallServer-5.0.2993/lib/tbs-commons.jar,/usr/local/FlashphonerWebCallServer-5.0.2993/lib/wcs_manager-1.0.jar -Dcom.flashphoner.fms.AppHome=/usr/local/FlashphonerWebCallServer -jar /usr/local/FlashphonerWebCallServer-5.0.2993/lib/wcs_manager-1.0.jar -Xmx1200M -Djava.net.preferIPv4Stack=true-afn com.flashphoner.server.Server
6880 java -Xmx4g -Xms4g -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=50999 -Djava.rmi.server.hostname=p13.flashphoner.com -XX:ErrorFile=/usr/local/FlashphonerWebCallServer/logs/error%p.log -Dcom.flashphoner.fms.AppHome=/usr/local/FlashphonerWebCallServer -Djava.library.path=/usr/local/FlashphonerWebCallServer/lib/so:/usr/local/FlashphonerWebCallServer/lib -cp XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/usr/local/FlashphonerWebCallServer/lib/* com.flashphoner.server.Server
root 20850 0.0 16.5 1567800 86636 pts/0 Sl 10:57 0:06 java -Xmx1200M -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=50999 -XX:ErrorFile=/usr/local/FlashphonerWebCallServer/logs/error%p.log -logs/gc-core-2021-06-25_14-44.log -XX:+ExplicitGCInvokesConcurrent -Dsun.rmi.dgc.client.gcInterval=36000000000 -Dsun.rmi.dgc.server.gcInterval=36000000000 -Dcom.flashphoner.fms.AppHome=/usr/local/FlashphonerWebCallServer -Djava.library.path=/usr/local/FlashphonerWebCallServer/lib/so:/usr/local/FlashphonerWebCallServer/lib -DWCS_NON_ROOT=true -DsessionDebugEnabled=false -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" -cp /usr/local/FlashphonerWebCallServer/lib/* com.flashphoner.server.Server
root 22053 0.0 0.1 61152 732 pts/0 R+ 14:51 0:00 grep WebCallServer
[root@localhost tmp~]#

2. Убедитесь, что серверный процесс слушает основные порты.

Code Block
languagebash
themeRDark
netstat -nlp | grep java

[root@localhost tmp~]# netstat -nlp | grep java
tcp        0      0 0.0.0.0:1098            0.0.0.0:*               LISTEN 20850      6880/java
tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 127.0.0.1:2001          0.0.0.0:*               LISTEN  20850    6880/java
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      208506880/java
tcp        0      0 0127.0.0.0:509991:2002          0.0.0.0:*               LISTEN 20850      6880/java
tcp        0      0 0.0.0.0:84438082            0.0.0.0:*               LISTEN      208506880/java
tcp        0      0 192.168.1.5:3478       0.0.0.0::9091 :::* LISTEN 20806/java
tcp 0 0 :::1099 :::* LISTEN 20806/java
tcp 0 0 :::2000 :::* LISTEN 20806/java
udp 0 *               LISTEN      6880/java
tcp        0      0 0.0.0.0:50999           0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:8443            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:8444            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:8445            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:9091            0.0.0.0:*               LISTEN      6880/java
tcp        0      0 0.0.0.0:45731           0.0.0.0:*               LISTEN      6880/java
udp        0      0 0.0.0.0:1935            0.0.0.0:* 20850                           6880/java

Если вы использовали стандартный набор портов, в выводе слушаемых списке портов, командой netstat, должны появится порты 8080, 8444 (Websockets) и , 1935 (RTMP) или другие порты, которые вы сконфигурировали для WCS5 WCS сервера.

3. Убедитесь, что WCS5 WCS сервер пишет основной серверный лог Ядра.

Code Block
languagebash
themeRDark
tail -f /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log

В логе должна появиться информация о настройках, с которыми стартовал сервер.

Пример:

language
Code Block
bashthemeRDark
1518:5929:3751,378945 INFO  Config - main LOAD_BALANCING_SERVERS: null
15:59:37,378 INFO ConfigSettingsLoader - main STREAM_MODE_UDP: true
15:59:37,379 INFO ConfigOverride setting allow_outside_codecs: from true to false
18:29:51,974 INFO        SettingsLoader - main LOAD_TOOL_ENABLED: false
15:59:37,379 INFO Config Override setting codecs: from null to opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv
18:29:51,975 INFO        SettingsLoader - main CLI_ENABLED: false
15:59:37,379 INFO Config - main RMI_PORT: 1098
15:59:37,379 INFO Server - main Starting server...
15:59:37,492 INFO KeepAliveManager - KeepAliveManager Start keepAlive thread KeepAliveManager
15:59:37,614 INFO Server - main Listening RTMFP on 1935 port, bufferSize: 64000
15:59:37,750 INFO Server - main Listening WebSocket on 8080 port, bufferSize: 64000
15:59:37,759 INFO Server - main Listening WebSocket Ssl on 8443 port, bufferSize: 64000

Логи должны реагировать на соединения web-клиентов. Если при тестировании этого не происходит, убедитесь что серверный процесс работает и web-клиент корректно настроен на соединение именно с этим сервером. См. раздел Возможные неисправности и способы их устранения для получения дополнительной информации.

4. Убедитесь что WCS пишет основной серверный лог Административного модуля

Code Block
languagebash
themeRDark
tail -f /usr/local/FlashphonerWebCallServer/logs/flashphoner_manager.log

15:59:36,277 INFO gerCommandLineRunner - main Starting server node
15:59:36,278 INFO ServerProcess - main Starting server node
15:59:36,293 INFO ServerProcess - main Arg: java
15:59:36,294 INFO ServerProcess - main Arg: -Xmx1200M
15:59:36,294 INFO ServerProcess - main Arg: -Djava.net.preferIPv4Stack=true
15:59:36,294 INFO ServerProcess - main Arg: -Dcom.sun.management.jmxremote.ssl=false
15:59:36,294 INFO ServerProcess - main Arg: -Dcom.sun.management.jmxremote.authenticate=false
15:59:36,294 INFO ServerProcess - main Arg: -Dcom.sun.management.jmxremote.port=50999
15:59:36,294 INFO ServerProcess - main Arg: -XX:ErrorFile=/usr/local/FlashphonerWebCallServer/logs/error%p.log
15:59:36,294 INFO ServerProcess - main Arg: -Dcom.flashphoner.fms.AppHome=/usr/local/FlashphonerWebCallServer
15:59:36,294 INFO ServerProcess - main Arg: -Djava.library.path=/usr/local/FlashphonerWebCallServer/lib/so:/usr/local/FlashphonerWebCallServer/lib
15:59:36,294 INFO ServerProcess - main Arg: -cp
15:59:36,295 INFO ServerProcess - main Arg: /usr/local/FlashphonerWebCallServer/lib/*
15:59:36,295 INFO ServerProcess - main Arg: com.flashphoner.server.Server
15:59:36,313 INFO Manager - main Started Manager in 49.416 seconds (JVM running for 51.706)Override setting media_port_from: from 31001 to 31001
18:29:51,978 INFO        SettingsLoader - main Override setting keep_alive.enabled: from websocket,rtmp,rtmfp to websocket,rtmfp
18:29:51,978 INFO        SettingsLoader - main Override setting webrtc_cc_min_bitrate: from 30000 to 3000000
18:29:51,979 INFO        SettingsLoader - main Override setting codecs_exclude_sip: from null to mpeg4-generic,flv,mpv,opus,ulaw,h264,g722,g729
18:29:51,979 INFO        SettingsLoader - main Override setting wss.port: from 8443 to 8443
18:29:51,980 INFO        SettingsLoader - main Override setting codecs_exclude_sip_rtmp: from null to opus,g729,g722,mpeg4-generic,vp8,mpv
18:29:51,980 INFO        SettingsLoader - main Override setting codecs_exclude_streaming: from null to telephone-event
18:29:51,980 INFO        SettingsLoader - main Override setting webrtc_cc_max_bitrate: from 10000000 to 7000000
18:29:51,980 INFO        SettingsLoader - main Override setting ip: from 0.0.0.0 to 192.168.1.5
18:29:51,980 INFO        SettingsLoader - main Override setting client_log_level: from INFO to DEBUG
18:29:51,980 INFO        SettingsLoader - main Override setting ip_local: from 0.0.0.0 to 192.168.1.5
18:29:51,980 INFO        SettingsLoader - main Override setting media_port_to: from 32000 to 32000
18:29:51,981 INFO        SettingsLoader - main Override setting ws.port: from 8080 to 8080

Логи должны реагировать на соединения web-клиентов. Если при тестировании этого не происходит, убедитесь что серверный процесс работает и web-клиент корректно настроен на соединение именно с этим сервером. См. раздел Возможные неисправности и способы их устранения для получения дополнительной информации.

Если серверный процесс запущен и в логах нет ошибок, это означает что WCS сервер готов к работе и можно начинать тестирование.

Способы запуска

Запуск

...

как сервиса 

Запуск WCS как сервиса осуществляется командой:

Code Block
languagebash
themeRDark
sudo systemctl start webcallserver

Это предпочтительный способ запуска. При этом сервис стартует от пользователя root , а основной процесс от пользователя flashphoner или от root , в зависимости от настройки режима запуска.

В сборке 5.2.1537 тип сервиса изменен с simple на forking. Кроме того, права доступа к файлу, содержащему PID основного процесса WCS, приведены в соответствие с требованиями systemd. Сервис помечается как active (running), и systemd, при необходимости. может послать сигнал для остановки основного процесса непосредственно ему

Image Added

Автоматический перезапуск сервиса при сбоях

В сборке 5.2.1562 добавлен автоматический перезапуск сервиса webcallserver.service  в тех случаях, когда сервис по каким-либо причинам перешел в статус failed. Предпринимается до 5 попыток перезапуска в случае, если между попытками проходит не более 2 минут.

Сервис по-прежнему может быть остановлен или  запущен вручную. Если сервис остановлен вручную, попытки перезапуска предприниматься не будут.

Автоматический перезапуск может быть отключен командой

Code Block
languagebash
themeRDark
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start

...

 set-service-restart disable

Запуск из командной строки

При необходимости, запуск WCS может быть осуществлен командой:

Code Block
languagebash
themeRDark
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start

Этот способ запуска полезен при отладке и тестировании.

Настройка переменных окружения

Подготовка запуска и переменных окружения происходит в скрипте setenv.sh. В этом скрипте могут быть заданы дополнительные параметры для WCS Core и WCS Manager. Кроме того, здесь же задается параметр, предотвращающий утечки памяти на многопроцессорных системах:

Code Block
languagebash
themeRDark
MALLOC_ARENA_MAX=4

Технически запуск происходит следующим образом: сначала запускается процесс WCS Manager, потом этот процесс запускает дочерний процесс WCS Core.

Запуск с выводом в stdout

В некоторых случаях, например когда сервер не стартует и не выдает никаких ошибок, требуется запуск с прямым логгированием выводом в консоль 'stdout' . Прямой вывод в stdout не может использоваться в production промышленной эксплуатации, т.к. при закрытии консоли или потере SSH-соединения сервер будет остановлен. Поэтому рекомендуется использовать прямой вывод в stdout только в целях отладки.

Для того чтобы запустить сервер в данном режиме, необходимо выполнить команду:

Code Block
languagebash
themeRDark
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start standalone

Запуск с выводом лога JVM в файл

В этом случае логи корневого процесса WCS Manager будут выводиться прямо в консоль и при нажатии Ctrl+C сервер будет остановлен.
Для того чтобы настроить вывод логов дочернего процесса WCS Core, воспользуйтесь настройкой node.enable_stdout=true.сборке 5.2.1562 добавлена возможность запустить WCS с выводом лога JVM в файл, аналогично прямому выводу в stdout 

Code Block
languagebash
themeRDark
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start --java-log

Весь вывод Java машины в этом случае перенаправляется в файл /usr/local/FlashphonerWebCallServer/logs/java.log. Данную возможность следует использовать только в целях отладки, но не в промышленной эксплуатации, т.к. объем вывода в этот файл будет очень большим.

Запуск с различными правами пользователя

Запуск в сборках 5.2.864-5.2.972

Начиная со сборки 5.2.864, права, с которыми запускается WCS, подчиняются следующей логике:

1. Команда

Code Block
languagebash
themeRDark
sudo systemctl start webcallserver

запускает WCS всегда от пользователя flashphoner, если он есть в системе

2. Команда

Code Block
languagebash
themeRDark
./webcallserver start

запускает WCS от пользователя root, если она выполнена с правами root, например.

Code Block
languagebash
themeRDark
sudo ./webcallserver start

или от пользователя flashphoner, если запущена другим пользователем

Это касается и запуска с выводом на консоль

Code Block
languagebash
themeRDark
./webcallserver start standalone

Запуск в сборках 5.2.976 и новее

Начиная со сборки 5.2.976, права, с которыми запускается WCS, определяются только настройкой в файле /usr/local/FlashphonerWebCallServer/bin/setenv.sh:

При значении по умолчанию

Code Block
languagebash
themeRDark
WCS_NON_ROOT=true

WCS запускается от пользователя flashphoner

При

Code Block
languagebash
themeRDark
WCS_NON_ROOT=false

WCS запускается от пользователя root.

При этом сервис может стартовать от пользователя root, смена пользователя для запуска Java производится автоматически.

Изменение режима запуска

В сборке 5.2.1255 добавлена команда для изменения режимов запуска:

  • переключение в режим запуска от пользователя root  
Code Block
languagebash
themeRDark
sudo ./webcallserver set-root-mode enable
  • переключение в режим запуска от пользователя flashphoner 
Code Block
languagebash
themeRDark
sudo ./webcallserver set-root-mode disable

При этом WCS будет остановлен перед внесением изменений в настройки и автоматически запущен после внесения изменений

Настройка прав доступа к каталогам при запуске от пользователя flashphoner

В сборке 5.2.976 добавлена проверка возможности записи в каталоги сервера, а также в собственные каталоги, при запуске WCS от пользователя flashphoner. Если прав на запись не хватает, WCS не стартует с выводом сообщения на консоль и в лог /usr/local/FlashphonerWebCallServer/logs/startup.log

Code Block
themeRDark
FlashphonerWebCallServer cannot be started from user flashphoner, please fix the permissions to the folders or run 'webcallserver set-permissions'!

В этом случае необходимо выполнить команду

Code Block
languagebash
themeRDark
sudo ./webcallserver set-permissions

Параметры JVM

Параметры задаются в файле setenvwcs-core.shproperies.

Здесь вы можете добавить любые Дополнительные опции запуска могут быть также добавлены в файле bin/setenv.sh в следующие переменные:

WCS_JAVA_OPTS - список опций для WCS Core

При запуске параметры JVM проверяются на совместимость с текущей установленной версией Java. Если JVM не может стартовать с заданными параметрами, информация об этом выводится в файл /usr/local/FlashphonerWebCallServer/logs/startup.log, в соответствии с диагнозом, возвращенным Java  при попытке запуска.

WCS_MANAGER_OPTS - список опций для WCS Manager

...

Автоматическое определение версии Java и корректировка параметров запуска

В сборке 5.2.972 добавлена возможность автоматического определения версии Java и корректировки параметров запуска при старте WCS, например, после обновления JDK. Параметры запуска JVM также могут быть скорректированы командой

Code Block
languagebash
themeRDark
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver set-java-opts

При этом меняются настройки в файле wcs-core.properies, предыдущие настройки копируются в файл с расширением .backup и порядковым номером, например

Code Block
languagebash
themeRDark
[root@localhost ~]# ls -l /usr/local/FlashphonerWebCallServer/conf/wcs-core.properties.backup.*
-rw-r--r--. 1 flashphoner flashphoner 1614 Jun 23 10:15 /usr/local/FlashphonerWebCallServer/conf/wcs-core.properties.backup.0
-rw-r--r--. 1 flashphoner flashphoner 1543 Jun 23 10:17 /usr/local/FlashphonerWebCallServer/conf/wcs-core.properties.backup.1

Отметим, что выбранный сборщик мусора (GC) при этом не меняется, но могут быть изменены его настройки (например, наименование ключей запуска).

Проверка работоспособности сервера при запуске

После запуска сервера, скрипт webcallserver проверяет его работоспособность, ожидая ответа 200 OK на предназначенный для этого запрос

Code Block
themeRDark
GET http://localhost:8081/health-check HTTP/1.1

В сборке 5.2.1084 добавлен ключ запуска, позволяющий указать максимальное количество попыток проверки работоспособности

Code Block
languagebash
themeRDark
sudo ./webcallserver start --health-timeout 10

По умолчанию, предпринимается 10 попыток с паузой в 1 секунду между ними. При каждой попытке скрипт ожидает ответа в течение секунды. Таким образом, максимальное время ожидания готовности сервера может составить по умолчанию до 20 секунд (10 * (1+1)).

Если процесс WCS не ответил на указанное число запросов, или ответ отличается от 200 OK, в лог запуска и на консоль будет выведено сообщение

Code Block
themeRDark
FlashphonerWebCallServer started, but is not healthy, please try to restart

При необходимости, проверку можно отключить, указав нулевое количество попыток

Code Block
languagebash
themeRDark
sudo ./webcallserver start --health-timeout 0