SRS提供多种启动的方式,包括:
可以直接下载release的binary,提供了几个常见系统的安装包,安装程序会安装系统服务,直接以系统服务启动即可。参考:Github: release或者国内镜像: release
若不需要添加到系统服务,每次重启后需要手动启动SRS,可以直接在srs的trunk目录执行脚本:
cd srs/trunk &&
./etc/init.d/srs start
复制
SRS作为系统服务启动,需要以下几步:
Step1: 安装SRS
编译SRS后,可执行命令安装SRS:
make&&sudomakeinstall
复制
安装命令会将srs默认安装到/usr/local/srs中,可以在configure时指定其他目录,譬如./configure --prefix=`pwd`/_release可以安装到当前目录的_release目录(可以不用sudo安装,直接用make install即可安装。
Step2: 链接脚本:
sudoln -sf \
/usr/local/srs/etc/init.d/srs \
/etc/init.d/srs
复制
备注:若SRS安装到其他目录,将/usr/local/srs替换成其他目录。
备注:也可以使用其他的名称,譬如/etc/init.d/srs,可以任意名称,启动时也用该名称。
Step3:添加服务:
#centos 6
sudo /sbin/chkconfig --add srs
复制
或者
#ubuntu12
sudo update-rc.d srs defaults
复制
使用init.d脚本管理SRS
查看SRS状态:
/etc/init.d/srs status
复制
启动SRS:
/etc/init.d/srs start
复制
停止SRS:
/etc/init.d/srs stop
复制
重启SRS:
/etc/init.d/srs restart
复制
Reload SRS:
/etc/init.d/srs reload
复制
日志切割,给SRS发送SIGUSR1信号:
/etc/init.d/srs rotate
复制
平滑退出,给SRS发送SIGQUIT信号:
/etc/init.d/srs grace
复制
Ubuntu20使用systemctl管理服务,我们在init.d的基础上新增了systemctl的配置:
./configure && make && sudo make install &&
sudo ln -sf /usr/local/srs/etc/init.d/srs /etc/init.d/srs &&
sudo cp -f /usr/local/srs/usr/lib/systemd/system/srs.service /usr/lib/systemd/system/srs.service &&
sudo systemctl daemon-reload && sudo systemctl enable srs
复制
Remark: 必须拷贝srs.service,否则在enable srs时会出错。
使用systemctl启动SRS服务:
sudo systemctl start srs
复制
Gracefully Upgrade是平滑升级,就是指老的连接服务完后退出,新版本的服务继续提供服务,对业务没有影响,涉及的技术包括:
Note: 关于这个机制,这里#1579有更多的探讨。
SRS3主要支持Gracefully Quit平滑退出:
# For gracefully quit, wait for a while then close listeners,
# because K8S notify SRS with SIGQUIT and update Service simultaneously,
# maybe there is some new connections incoming before Service updated.
# @see https://github.com/ossrs/srs/issues/1595#issuecomment-587516567
# default: 2300
grace_start_wait 2300;
# For gracefully quit, final wait for cleanup in milliseconds.
# @see https://github.com/ossrs/srs/issues/1579#issuecomment-587414898
# default: 3200
grace_final_wait 3200;
# Whether force gracefully quit, never fast quit.
# By default, SIGTERM which means fast quit, is sent by K8S, so we need to
# force SRS to treat SIGTERM as gracefully quit for gray release or canary.
# @see https://github.com/ossrs/srs/issues/1579#issuecomment-587475077
# default: off
force_grace_quit off;
复制
Note: 关于平滑退出的命令和演示,可以查看#1579。
Winlin 2019.10