SRS Linux Service
There are many ways to startup SRS:
- Directly run srs at the trunk/objs, and need start again when system restart.
- Linux service, the init.d scirpt at
srs/trunk/etc/init.d/srs, and user can add to linux service when linked to the /etc/init.d/srs then add as service/sbin/chkconfig --add srs.
The SRS release binary can be downloaded from release site, we can install as system service.
Manual
We donot need to add to linux service to directly start SRS:
cd srs/trunk &&
./etc/init.d/srs start
or
cd srs/trunk &&
./objs/srs -c conf/srs.conf
init.d
Install and startup SRS as linux system service:
- Build SRS: the install script will modify the INSTALL ROOT of init.d script.
- Link to init.d: link the
trunk/etc/init.d/srsto/etc/init.d/srs - Add to linux service: use /sbin/chkconfig for Centos.
Step1: Build and Install SRS
Intall SRS when build ok:
make && sudo make install
the install of make will install srs to the prefix dir, default to /usr/local/srs, which is specified by configure, for instance, ./configure --prefix=`pwd`/_release set the install dir to _release of current dir to use make install without sudo.
Step2: Link script to init.d:
sudo ln -sf \
/usr/local/srs/etc/init.d/srs \
/etc/init.d/srs
Step3:Add as linux service:
#centos 6
sudo /sbin/chkconfig --add srs
or
#ubuntu12
sudo update-rc.d srs defaults
Use init.d script
Get the status of SRS:
/etc/init.d/srs status
Start SRS:
/etc/init.d/srs start
Stop SRS:
/etc/init.d/srs stop
Restart SRS:
/etc/init.d/srs restart
Reload SRS:
/etc/init.d/srs reload
For logrotate(SIGUSR1):
/etc/init.d/srs rotate
For Gracefully Quit(SIGQUIT):
/etc/init.d/srs grace
systemctl
Ubuntu20 use systemctl to manage services, we also need to install init.d service, then add to 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: We MUST copy the srs.service, or we couldn't enable the service by systemctl.
Use systemctl to start SRS:
sudo systemctl start srs
Gracefully Upgrade
Gracefully Upgrade allows upgrade with zero downtime, it can be done by:
- New SRS and old SRS should be able to listen at the same ports. They provide services in the same ports simultaneously.
- The old SRS then closes listeners, and quit util all connections closed, this is Gracefully Quit.
Note: About more informations, please see #1579.
SRS3 supports Gracefully Quit:
- Use signal
SIGQUIT, or command/etc/init.d/srs grace - A new config
grace_start_waitto wait for a while then start gracefully quit, default 2.3s - A new config
grace_final_waitallows wait for a few minutes finally, default 3.2s - A new config
force_grace_quitto force gracefully quit, see #1579.
# 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: There is a example for Gracefully Quit, see #1579
Winlin 2019.10
