Основные команды и контроль запуска
После активации лицензии запустите WCS командой
sudo systemctl start webcallserver
Остановка сервера выполняется командой
sudo systemctl stop webcallserver
Есть несколько способов убедиться в том, что сервер стартовал и готов к работе:
1.Убедитесь, что серверный процесс работает.
pgrep -afn com.flashphoner.server.Server
В консоли должен отобразиться процесс WCS Core (PID 6880 на примере ниже):
[root@localhost ~]# pgrep -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 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/usr/local/FlashphonerWebCallServer/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@localhost ~]#
2. Убедитесь, что серверный процесс слушает основные порты.
netstat -nlp | grep java [root@localhost ~]# netstat -nlp | grep java tcp 0 0 0.0.0.0:1098 0.0.0.0:* LISTEN 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 6880/java tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 6880/java tcp 0 0 127.0.0.1:2002 0.0.0.0:* LISTEN 6880/java tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 6880/java tcp 0 0 192.168.1.5:3478 0.0.0.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:* 6880/java
Если вы использовали стандартный набор портов, в списке портов, должны появится порты 8080, 8444 (Websockets), 1935 (RTMP) или другие порты, которые вы сконфигурировали для WCS сервера.
3. Убедитесь, что WCS сервер пишет основной серверный лог
tail -f /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log
В логе должна появиться информация о настройках, с которыми стартовал сервер.
Пример:
18:29:51,945 INFO SettingsLoader - main Override setting allow_outside_codecs: from true to false 18:29:51,974 INFO SettingsLoader - main 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 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 сервер готов к работе и можно начинать тестирование.
Способы запуска
Запуск сервера осуществляется командой:
sudo systemctl start webcallserver
Начиная со сборки 5.2.801, WCS запускается как сервис от пользователя flashphoner для большей безопасности.
Кроме этого запуск может быть осуществлен командой:
cd /usr/local/FlashphonerWebCallServer/bin sudo ./webcallserver start
В сборках 5.2.840 - 5.2.863 эта команда запускает WCS также от пользователя flashphoner.
Настройка переменных окружения
Подготовка запуска и переменных окружения происходит в скрипте setenv.sh. В этом скрипте могут быть заданы дополнительные параметры для WCS Core. Кроме того, здесь же задается параметр, предотвращающий утечки памяти на многопроцессорных системах:
MALLOC_ARENA_MAX=4
Запуск с выводом в stdout
В некоторых случаях, например когда сервер не стартует и не выдает никаких ошибок, требуется запуск с прямым логгированием в консоль 'stdout'. Прямой вывод в stdout не может использоваться в production т.к. при закрытии консоли или потере SSH-соединения сервер будет остановлен. Поэтому рекомендуется использовать вывод stdout только в целях отладки.
Для того чтобы запустить сервер в данном режиме, необходимо выполнить команду:
cd /usr/local/FlashphonerWebCallServer/bin sudo ./webcallserver start standalone
Запуск с различными правами пользователя
Начиная со сборки 5.2.864, права, с которыми запускается WCS, подчиняются следующей логике:
1. Команда
sudo systemctl start webcallserver
запускает WCS всегда от пользователя flashphoner, если он есть в системе
2. Команда
./webcallserver start
запускает WCS от пользователя root, если она выполнена с правами root, например.
sudo ./webcallserver start
или от пользователя flashphoner, если запущена другим пользователем
Это касается и запуска с выводом на консоль
./webcallserver start standalone
Параметры JVM
Параметры задаются в файле wcs-core.properies.
Дополнительные опции запуска могут быть также добавлены в файле bin/setenv.sh в следующие переменные:
WCS_JAVA_OPTS - список опций для WCS Core
При запуске параметры JVM проверяются на совместимость с текущей установленной версией Java. Если JVM не может стартовать с заданными параметрами, информация об этом выводится в файл /usr/local/FlashphonerWebCallServer/logs/startup.log, в соответствии с диагнозом, возвращенным Java при попытке запуска.
Автоматическое определение версии Java и корректировка параметров запуска
В сборке 5.2.972 добавлена возможность автоматического определения версии Java и корректировки параметров запуска при старте WCS, например, после обновления JDK. Параметры запуска JVM также могут быть скорректированы командой
cd /usr/local/FlashphonerWebCallServer/bin sudo ./webcallserver set-java-opts
При этом меняются настройки в файле wcs-core.properies, предыдущие настройки копируются в файл с расширением .backup и порядковым номером, например
[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) при этом не меняется, но могут быть изменены его настройки (например, наименование ключей запуска).