diff --git a/trunk/packaging/redhat/srs.conf b/trunk/packaging/redhat/srs.conf new file mode 100644 index 000000000..ff0bfcbac --- /dev/null +++ b/trunk/packaging/redhat/srs.conf @@ -0,0 +1,36 @@ +# main config for srs. +# @see full.conf for detail config. + +daemon off; +pid /var/lib/srs/srs.pid; +work_dir /var/lib/srs; +listen 1935; +max_connections 1000; +srs_log_tank file; +srs_log_file /var/log/srs/srs.log; + +http_api { + enabled on; + listen 1985; +} + +http_server { + enabled on; + listen 8080; + dir /usr/share/srs/html; +} + +stats { + network 0; + disk sda sdb xvda xvdb; +} + +vhost __defaultVhost__ { + hls { + enabled on; + } + http_remux { + enabled on; + mount [vhost]/[app]/[stream].flv; + } +} diff --git a/trunk/packaging/redhat/srs.init b/trunk/packaging/redhat/srs.init new file mode 100644 index 000000000..9e939c09d --- /dev/null +++ b/trunk/packaging/redhat/srs.init @@ -0,0 +1,76 @@ +#!/bin/sh +# +# srs - a simple, high efficiency and realtime video server +# +# chkconfig: + +### BEGIN INIT INFO +# Provides: srs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: a simple, high efficiency and realtime video server +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/bin/srs" +prog=${exec##*/} +configfile=/etc/srs/srs.conf + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + echo -n $"Starting $prog: " + daemon $exec -c $configfile + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog -TERM + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +reload() { + echo -n $"reloading $prog: " + killproc $prog -HUP + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +rotate() { + echo -n $"logrotate $prog: " + killproc $prog -USR1 + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +case "$1" in + start|stop|restart|reload|rotate) + $1 + ;; + status) + status $prog + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|reload|rotate}" + exit 2 +esac diff --git a/trunk/packaging/redhat/srs.logrotate b/trunk/packaging/redhat/srs.logrotate new file mode 100644 index 000000000..5823687df --- /dev/null +++ b/trunk/packaging/redhat/srs.logrotate @@ -0,0 +1,15 @@ +/var/log/srs/*.log { + daily + missingok + rotate 30 + compress + delaycompress + notifempty + create 640 root nobody + sharedscripts + postrotate + if [ -f /var/lib/srs/srs.pid ]; then + kill -USR1 `cat /var/lib/srs/srs.pid` + fi + endscript +} diff --git a/trunk/packaging/redhat/srs.service b/trunk/packaging/redhat/srs.service new file mode 100644 index 000000000..97b3a9283 --- /dev/null +++ b/trunk/packaging/redhat/srs.service @@ -0,0 +1,23 @@ +[Unit] +Description=srs - a simple, high efficiency and realtime video server +Documentation=https://github.com/ossrs/srs/wiki +After=network-online.target remote-fs.target nss-lookup.target +Wants=network-online.target + +[Service] +Type=simple +User=nobody +Group=nobody +WorkingDirectory=/var/lib/srs +EnvironmentFile=-/etc/sysconfig/srs +PIDFile=/var/lib/srs/srs.pid +ExecStartPre=/usr/bin/srs -c /etc/srs/srs.conf -t +ExecStart=/usr/bin/srs -c /etc/srs/srs.conf +ExecReload=/bin/kill -s HUP $MAINPID +ExecStop=/bin/kill -s TERM $MAINPID +Restart=on-failure +PrivateTmp=true + +[Install] +WantedBy=multi-user.target + diff --git a/trunk/packaging/redhat/srs.spec b/trunk/packaging/redhat/srs.spec new file mode 100644 index 000000000..2ff93a555 --- /dev/null +++ b/trunk/packaging/redhat/srs.spec @@ -0,0 +1,105 @@ +%define use_systemd (0%{?fedora} && 0%{?fedora} >= 18) || (0%{?rhel} && 0%{?rhel} >= 7) || (0%{?suse_version} == 1315) + +Name: srs +Version: 3.0.168 +Release: 1%{?dist} +Summary: a simple, high efficiency and realtime video server + +License: MIT +URL: https://github.com/ossrs/srs +Source0: %{name}-3.0-r8.tar.gz +Source1: srs.conf +Source2: srs.service +Source3: srs.init +Source4: srs.logrotate + +BuildRequires: python +BuildRequires: rsync + +%if %{use_systemd} +BuildRequires: systemd +Requires: systemd +%else +BuildRequires: initscripts +Requires: initscripts +%endif + +%description +SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT. + +%prep +%setup -q -n srs-3.0-r8 + +%build +cd trunk +./configure --prefix=/usr +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT + +%{__mkdir_p} $RPM_BUILD_ROOT%{_bindir} +%{__mkdir_p} $RPM_BUILD_ROOT%{_initrddir} +%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/%{name} +%{__mkdir_p} $RPM_BUILD_ROOT%{_sharedstatedir}/%{name} +%{__mkdir_p} $RPM_BUILD_ROOT%{_localstatedir}/log/%{name} + +%{__install} -m 755 trunk/objs/srs $RPM_BUILD_ROOT%{_bindir} +%{__install} -m 755 trunk/objs/srs_hls_ingester $RPM_BUILD_ROOT%{_bindir} +%{__install} -m 755 trunk/objs/srs_mp4_parser $RPM_BUILD_ROOT%{_bindir} + +#http_server file +rsync -aqL --delete trunk/objs/nginx/ $RPM_BUILD_ROOT%{_datadir}/%{name}/ + +#%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/%{name} +%{__install} -D -m 644 trunk/packaging/redhat/srs.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/srs.conf + +#init files +%if %{use_systemd} +%{__mkdir} -p $RPM_BUILD_ROOT%{_unitdir} +%{__install} -p -m 644 trunk/packaging/redhat/srs.service $RPM_BUILD_ROOT%{_unitdir}/srs.service +%else +%{__mkdir} -p $RPM_BUILD_ROOT%{_initrddir} +%{__install} -p -m 755 trunk/packaging/redhat/srs.init $RPM_BUILD_ROOT%{_initrddir}/srs +sed -i 's/daemon/{s/off/on/g}' %{_sysconfdir}/%{name}/srs.conf +%endif + +#logrotate +%{__install} -D -p -m 644 trunk/packaging/redhat/srs.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/srs + + +%pre +# Add the "srs" user +# getent group srs >/dev/null || groupadd -r srs +# getent passwd srs >/dev/null || useradd -r -g srs -s /sbin/nologin -d /var/lib/srs srs + +%post +%if %{use_systemd} +%systemd_post %{name}.service +%endif + +%preun +%if %{use_systemd} +%systemd_preun %{name}.service +%endif + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%config(noreplace) %{_sysconfdir}/srs/srs.conf +%{_sysconfdir}/logrotate.d/srs +%{_datadir}/%{name} +%dir %attr(0755, nobody, nobody) %{_localstatedir}/log/%{name} +%dir %attr(0755, nobody, nobody) %{_sharedstatedir}/%{name} +%doc trunk/conf +%license LICENSE + +%if %{use_systemd} +%{_unitdir}/srs.service +%else +%{_initrddir}/%{name} +%endif + +%changelog +* Mon Nov 1 2021 Purple Grape +- rpm init