diff --git a/build/Makefile.am b/build/Makefile.am index 936ab56843..dbda77330e 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -55,10 +55,10 @@ install: @echo " + Install/Re-install default config: +" @echo " + ---------------------------------- +" @echo " + $(MK) samples +" -if SYSTEMD_INIT +if KNOWN_INIT @echo " + +" - @echo " + Install systemd startup scripts: +" - @echo " + -------------------------------- +" + @echo " + Install startup scripts: +" + @echo " + ------------------------ +" @echo " + +" @echo " + build/startup/install_systemd.sh +" endif diff --git a/build/startup/freeswitch.service.in b/build/startup/freeswitch.service.in index f580ba2480..930c8c2b93 100644 --- a/build/startup/freeswitch.service.in +++ b/build/startup/freeswitch.service.in @@ -5,12 +5,11 @@ After=syslog.target network.target local-fs.target [Service] ; service Type=forking -PIDFile=@runtimedir@/freeswitch.pid +PIDFile=@rundir@/freeswitch.pid PermissionsStartOnly=true Environment="DAEMON_OPTS=-nonat" -EnvironmentFile=-/etc/sysconfig/freeswitch -EnvironmentFile=-/etc/default/freeswitch -ExecStart=@bindir_expanded@/freeswitch -u freeswitch -g freeswitch -ncwait -rp ${DAEMON_OPTS} +EnvironmentFile=-/etc/@environmentfilelocation@/freeswitch +ExecStart=@bindir@/freeswitch -u freeswitch -g freeswitch -ncwait -rp ${DAEMON_OPTS} TimeoutSec=20s Restart=on-failure ; exec diff --git a/build/startup/install_systemd.sh.in b/build/startup/install_systemd.sh.in index 3f77c4f8b3..6fe5374a5c 100644 --- a/build/startup/install_systemd.sh.in +++ b/build/startup/install_systemd.sh.in @@ -1,8 +1,9 @@ #!/bin/bash +# @DISTRO@ installer # Niek Vlessert USER=`whoami` -DISTRO=$(source /etc/os-release && echo $PRETTY_NAME) +DISTRO=@DISTRO@ if [ $USER != "root" ] ; then SUDO=`which sudo | awk -F"/" '{print $NF}'` if [ -z $SUDO ] ; then @@ -19,34 +20,36 @@ if [ $USER != "root" ] ; then fi echo -echo "This will do several things on your $DISTRO installation:" +echo "This will do several things on your @DISTRO@ installation:" echo "- Create user freeswitch and add it to group freeswitch" FSPATH=@prefix@ if [[ $FSPATH == *"freeswitch"* ]] then echo "- Set permissions on @prefix@ and files in @bindir_expanded@" fi -echo "- Install systemd unit file and other required files" +echo "- Install systemd unit file" +echo "- Install /etc/@environmentfilelocation@/freeswitch" echo read -p "Do you want to continue? (y/n) " -n 1 -r if [[ $REPLY =~ ^[yY]$ ]] then echo echo "Installing..." - $SUDO useradd -d @confdir@ -r -U -s /bin/false -c "FreeSWITCH open source softswitch" freeswitch + $SUDO groupadd freeswitch + if DISTRO="debian8"; then + $SUDO adduser --disabled-password --quiet --system --home @confdir@ --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch + elif DISTRO="centos7"; then + $SUDO adduser --system --home @confdir@ -c "FreeSWITCH open source softswitch" -g freeswitch freeswitch + fi if [[ $FSPATH == *"freeswitch"* ]] then $SUDO chown -R freeswitch:freeswitch @prefix@ $SUDO chmod -R ug=rwX,o= @prefix@ $SUDO chmod -R u=rwx,g=rx @bindir_expanded@/* fi - $SUDO cp build/startup/freeswitch.service /etc/systemd/system/ - $SUDO cp build/startup/freeswitch.tmpfile /etc/tmpfiles.d/freeswitch.conf - if [ -d /etc/sysconfig ]; then - $SUDO cp build/startup/freeswitch.default /etc/sysconfig/freeswitch - else - $SUDO cp build/startup/freeswitch.default /etc/default/freeswitch - fi + $SUDO cp init/freeswitch.service /etc/systemd/system/ + $SUDO cp init/freeswitch.tmpfile /etc/tmpfiles.d/freeswitch.conf + $SUDO cp init/freeswitch.default /etc/@environmentfilelocation@/freeswitch $SUDO systemd-tmpfiles --clean --create $SUDO systemctl daemon-reload echo diff --git a/configure.ac b/configure.ac index 4f3e0d24e6..a1d8010a39 100644 --- a/configure.ac +++ b/configure.ac @@ -773,14 +773,33 @@ case "$host" in ;; *linux*) APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl -lcrypt -lrt]) - systemdinit=false - if test -d /run/systemd/system; then - systemdinit=true - AC_SUBST(bindir_expanded) - AC_CONFIG_FILES([build/startup/install_systemd.sh], [chmod +x build/startup/install_systemd.sh]) - AC_CONFIG_FILES([build/startup/freeswitch.service]) + if test -f /etc/os-release; then + DISTRO="$(source /etc/os-release && echo $ID$VERSION_ID)" + case "$DISTRO" in + *debian8*) + environmentfilelocation="default" + ;;& + *centos7*) + environmentfilelocation="sysconfig" + ;;& + *debian8*|*centos7*) + knowninit=false + if test -d /run/systemd/system; then + knowninit=true + AC_SUBST(DISTRO) + AC_SUBST(rundir) + AC_SUBST(environmentfilelocation) + AC_SUBST(bindir_expanded) + AC_CONFIG_FILES([build/startup/install_systemd.sh], [chmod +x build/startup/install_systemd.sh]) + AC_CONFIG_FILES([build/startup/freeswitch.service]) + fi + ;; + *) + knowninit=false + ;; + esac fi - AM_CONDITIONAL([SYSTEMD_INIT], [test x$systemdinit = xtrue]) + AM_CONDITIONAL([KNOWN_INIT], [test x$knowninit = xtrue]) ;; esac