Table of Contents |
---|
Основные команды и контроль запуска
После активации лицензии запустите WCS командой
...
Code Block | ||||
---|---|---|---|---|
| ||||
pspgrep aux | grep WebCallServer-afn com.flashphoner.server.Server |
В консоли должен отобразиться процесс WCS Core (11114 на PID 6880 на примере ниже):
Code Block | ||||
---|---|---|---|---|
| ||||
[root@localhost tmp~]# pspgrep aux | grep WebCallServer root 11114 1.5 57.1 3014240 1076652 ? Sl Jan18 124:45 java -Xmx1024M -XX:+UseConcMarkSweepGC -XX:NewSize=1024m --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=p11p13.flashphoner.com -XX:ErrorFile=/usr/local/FlashphonerWebCallServer/logs/error%p.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/usr/local/FlashphonerWebCallServer/logs/gc-core-20192021-0106-1825_1814-1944.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=falsetrue -DsessionDebugEnabled=false -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" -cp /usr/local/FlashphonerWebCallServer/lib/* com.flashphoner.server.Server root 17709 0.0 0.0 112704 976 pts/[root@localhost ~]# |
2. Убедитесь, что серверный процесс слушает основные порты.
Code Block | ||||
---|---|---|---|---|
| ||||
netstat -nlp | grep java [root@localhost ~]# netstat -nlp | grep java tcp 0 S+ 12:420 0.0.0.0:1098 0.0.0:00 grep --color=auto WebCallServer [root@localhost tmp]# |
2. Убедитесь, что серверный процесс слушает основные порты.
Code Block | ||||
---|---|---|---|---|
| ||||
netstat -nlp | grep java [root@localhost tmp]# netstat -nlp | grep .0:* LISTEN 6880/java tcp 0 0 0.0.0.0:554 1935 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:10988080 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0127.0.0.01:8432001 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:19358081 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0127.0.0.01:8080 2002 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:20018082 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0192.0168.01.0:8081 5:3478 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:808250999 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:8444 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:8445 0.0.0.0:* LISTEN 111146880/java tcp 0 0 0.0.0.0:9091 0.0.0.0:* LISTEN 111146880/java udptcp 0 0 0.0.0.0:193545731 0.0.0.0:* LISTEN 6880/java udp 0 11114/java |
Если вы использовали стандартный набор портов, в выводе слушаемых портов, командой netstat, должны появится порты 8080 (Websockets) и 1935 (RTMP) или другие порты, которые вы сконфигурировали для WCS сервера.
3. Убедитесь, что WCS сервер пишет основной серверный лог Ядра.
Code Block | ||||
---|---|---|---|---|
| ||||
tail -f /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log |
В логе должна появиться информация о настройках, с которыми стартовал сервер.
Пример:
Code Block | ||
---|---|---|
| ||
18:29:51,945 INFO0 0.0.0.0:1935 0.0.0.0:* 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 6880/java |
Если вы использовали стандартный набор портов, в списке портов, должны появится порты 8080, 8444 (Websockets), 1935 (RTMP) или другие порты, которые вы сконфигурировали для WCS сервера.
3. Убедитесь, что WCS сервер пишет основной серверный лог
Code Block | ||||
---|---|---|---|---|
| ||||
tail -f /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log |
В логе должна появиться информация о настройках, с которыми стартовал сервер.
Пример:
Code Block | ||
---|---|---|
| ||
18:29:51,975945 INFO SettingsLoader - main Override setting mediaallow_portoutside_fromcodecs: from 31001true to 31001false 18:29:51,978974 INFO SettingsLoader - main Override setting keep_alive.enabledcodecs: from websocket,rtmp,rtmfp to websocket,rtmfpnull to opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv 18:29:51,978975 INFO SettingsLoader - main Override setting webrtcmedia_ccport_min_bitratefrom: from 3000031001 to 300000031001 18:29:51,979978 INFO SettingsLoader - main Override setting codecs_exclude_sipkeep_alive.enabled: from null websocket,rtmp,rtmfp to mpeg4-generic,flv,mpv,opus,ulaw,h264,g722,g729websocket,rtmfp 18:29:51,979978 INFO SettingsLoader - main Override setting wss.portwebrtc_cc_min_bitrate: from 844330000 to 84433000000 18:29:51,980979 INFO SettingsLoader - main Override setting codecs_exclude_sip_rtmp: from null to opus,g729,g722,mpeg4-generic,vp8flv,mpv,opus,ulaw,h264,g722,g729 18:29:51,980979 INFO SettingsLoader - main Override setting codecs_exclude_streamingwss.port: from null8443 to telephone-event8443 18:29:51,980 INFO SettingsLoader - main Override setting webrtccodecs_ccexclude_maxsip_bitratertmp: from 10000000null to 7000000opus,g729,g722,mpeg4-generic,vp8,mpv 18:29:51,980 INFO SettingsLoader - main Override setting ipcodecs_exclude_streaming: from 0.0.0.0null to 192.168.1.5telephone-event 18:29:51,980 INFO SettingsLoader - main Override setting clientwebrtc_cc_logmax_levelbitrate: from INFO10000000 to DEBUG7000000 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 mediaclient_portlog_tolevel: from 32000INFO to 32000DEBUG 18:29:51,981980 INFO SettingsLoader - main Override setting ws.portip_local: from 80800.0.0.0 to 8080 |
Логи должны реагировать на соединения web-клиентов. Если при тестировании этого не происходит, убедитесь что серверный процесс работает и web-клиент корректно настроен на соединение именно с этим сервером. См. раздел Возможные неисправности и способы их устранения для получения дополнительной информации.
Если серверный процесс запущен и в логах нет ошибок, это означает что WCS сервер готов к работе и можно начинать тестирование.
Способы запуска
Запуск сервера осуществляется командой:
Code Block | ||||
---|---|---|---|---|
| ||||
sudo systemctl start webcallserver |
Начиная со сборки 5.2.801, WCS запускается как сервис от пользователя flashphoner для большей безопасности.
Кроме этого запуск может быть осуществлен командой:
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start |
В сборках 5.2.840 - 5.2.863 эта команда запускает WCS также от пользователя flashphoner.
Настройка переменных окружения
Подготовка запуска и переменных окружения происходит в скрипте setenv.sh. В этом скрипте могут быть заданы дополнительные параметры для WCS Core. Кроме того, здесь же задается параметр, предотвращающий утечки памяти на многопроцессорных системах:
Code Block | ||||
---|---|---|---|---|
| ||||
MALLOC_ARENA_MAX=4 |
Запуск с выводом в stdout
В некоторых случаях, например когда сервер не стартует и не выдает никаких ошибок, требуется запуск с прямым логгированием в консоль 'stdout'. Прямой вывод в stdout не может использоваться в production т.к. при закрытии консоли или потере SSH-соединения сервер будет остановлен. Поэтому рекомендуется использовать вывод stdout только в целях отладки.
Для того чтобы запустить сервер в данном режиме, необходимо выполнить команду:
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start standalone |
Запуск с различными правами пользователя
Начиная со сборки 5.2.864, права, с которыми запускается WCS, подчиняются следующей логике:
...
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 | ||||
---|---|---|---|---|
| ||||
sudo systemctl start webcallserver |
Это предпочтительный способ запуска. При этом сервис стартует от пользователя root
, а основной процесс от пользователя flashphoner
или от root
, в зависимости от настройки режима запуска.
В сборке 5.2.1537 тип сервиса изменен с simple
на forking
. Кроме того, права доступа к файлу, содержащему PID основного процесса WCS, приведены в соответствие с требованиями systemd. Сервис помечается как active (running)
, и systemd, при необходимости. может послать сигнал для остановки основного процесса непосредственно ему
Автоматический перезапуск сервиса при сбоях
В сборке 5.2.1562 добавлен автоматический перезапуск сервиса webcallserver.service
в тех случаях, когда сервис по каким-либо причинам перешел в статус failed
. Предпринимается до 5 попыток перезапуска в случае, если между попытками проходит не более 2 минут.
Сервис по-прежнему может быть остановлен или запущен вручную. Если сервис остановлен вручную, попытки перезапуска предприниматься не будут.
Автоматический перезапуск может быть отключен командой
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver set-service-restart disable |
Запуск из командной строки
При необходимости, запуск WCS может быть осуществлен командой:
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start |
Этот способ запуска полезен при отладке и тестировании.
Настройка переменных окружения
Подготовка запуска и переменных окружения происходит в скрипте setenv.sh. В этом скрипте могут быть заданы дополнительные параметры для WCS Core. Кроме того, здесь же задается параметр, предотвращающий утечки памяти на многопроцессорных системах:
Code Block | ||||
---|---|---|---|---|
| ||||
MALLOC_ARENA_MAX=4 |
Запуск с выводом в stdout
В некоторых случаях, например когда сервер не стартует и не выдает никаких ошибок, требуется запуск с прямым выводом в консоль stdout
. Прямой вывод в stdout
не может использоваться в промышленной эксплуатации, т.к. при закрытии консоли или потере SSH-соединения сервер будет остановлен. Поэтому рекомендуется использовать прямой вывод в stdout
только в целях отладки.
Для того чтобы запустить сервер в данном режиме, необходимо выполнить команду:
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start standalone |
Запуск с выводом лога JVM в файл
В сборке 5.2.1562 добавлена возможность запустить WCS с выводом лога JVM в файл, аналогично прямому выводу в stdout
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
sudo systemctl start webcallserver |
запускает WCS всегда от пользователя flashphoner, если он есть в системе
2. Команда
Code Block | ||||
---|---|---|---|---|
| ||||
./webcallserver start |
запускает WCS от пользователя root, если она выполнена с правами root, например.
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver start |
или от пользователя flashphoner, если запущена другим пользователем
Это касается и запуска с выводом на консоль
Code Block | ||||
---|---|---|---|---|
| ||||
./webcallserver start standalone |
Запуск в сборках 5.2.976 и новее
Начиная со сборки 5.2.976, права, с которыми запускается WCS, определяются только настройкой в файле /usr/local/FlashphonerWebCallServer/bin/setenv.sh
:
При значении по умолчанию
Code Block | ||||
---|---|---|---|---|
| ||||
WCS_NON_ROOT=true |
WCS запускается от пользователя flashphoner
При
Code Block | ||||
---|---|---|---|---|
| ||||
WCS_NON_ROOT=false |
WCS запускается от пользователя root.
При этом сервис может стартовать от пользователя root, смена пользователя для запуска Java производится автоматически.
Изменение режима запуска
В сборке 5.2.1255 добавлена команда для изменения режимов запуска:
- переключение в режим запуска от пользователя
root
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver set-root-mode enable |
- переключение в режим запуска от пользователя
flashphoner
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver set-root-mode disable |
При этом WCS будет остановлен перед внесением изменений в настройки и автоматически запущен после внесения изменений
Настройка прав доступа к каталогам при запуске от пользователя flashphoner
В сборке 5.2.976 добавлена проверка возможности записи в каталоги сервера, а также в собственные каталоги, при запуске WCS от пользователя flashphoner. Если прав на запись не хватает, WCS не стартует с выводом сообщения на консоль и в лог /usr/local/FlashphonerWebCallServer/logs/startup.log
Code Block | ||
---|---|---|
| ||
FlashphonerWebCallServer cannot be started from user flashphoner, please fix the permissions to the folders or run 'webcallserver set-permissions'! |
В этом случае необходимо выполнить команду
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver set-permissions |
Параметры 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 также могут быть скорректированы командой
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver set-java-opts |
При этом меняются настройки в файле wcs-core.properies, предыдущие настройки копируются в файл с расширением .backup и порядковым номером, например
Code Block | ||||
---|---|---|---|---|
| ||||
[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 | ||
---|---|---|
| ||
GET http://localhost:8081/health-check HTTP/1.1 |
В сборке 5.2.1084 добавлен ключ запуска, позволяющий указать максимальное количество попыток проверки работоспособности
Code Block | ||||
---|---|---|---|---|
| ||||
sudo systemctl./webcallserver start webcallserver |
запускает WCS всегда от пользователя flashphoner, если он есть в системе
2. Команда
Code Block | ||||
---|---|---|---|---|
| ||||
./webcallserver start |
запускает WCS от пользователя root, если она выполнена с правами root, например.
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver start |
или от пользователя flashphoner, если запущена другим пользователем
Это касается и запуска с выводом на консоль
Code Block | ||||
---|---|---|---|---|
| ||||
./webcallserver start standalone |
Параметры JVM
Параметры задаются в файле wcs-core.properies.
Дополнительные опции запуска могут быть также добавлены в файле bin/setenv.sh в следующие переменные:
WCS_JAVA_OPTS - список опций для WCS Core
...
--health-timeout 10 |
По умолчанию, предпринимается 10 попыток с паузой в 1 секунду между ними. При каждой попытке скрипт ожидает ответа в течение секунды. Таким образом, максимальное время ожидания готовности сервера может составить по умолчанию до 20 секунд (10 * (1+1)
).
Если процесс WCS не ответил на указанное число запросов, или ответ отличается от 200 OK, в лог запуска и на консоль будет выведено сообщение
Code Block | ||
---|---|---|
| ||
FlashphonerWebCallServer started, but is not healthy, please try to restart |
При необходимости, проверку можно отключить, указав нулевое количество попыток
Code Block | ||||
---|---|---|---|---|
| ||||
sudo ./webcallserver start --health-timeout 0 |