Difference between revisions of "Devuan Beowulf with Zoneminder 1.34 from ZM Repo"

From ZoneMinder Wiki
Jump to navigationJump to search
(Replaced content with "WIP The basic catch is that the sysvinit script is not included, so there is a file here: Zoneminder_Init_Script That can be manually included.")
 
(19 intermediate revisions by one other user not shown)
Line 1: Line 1:
Tested today with a migration from a fresh Raspbian Buster which was migrated to Beowulf. I did it a roundabout way, but users should be able to follow the same instructions for Ascii here: [[Devuan Ascii with Zoneminder 1.32.3 from ZM Repo]], except substituting release-1.34 for release in the zmrepo apt sources list. Please refer to zmrepo.zoneminder.com/debian for more details.
Make sure to add in the /etc/init.d/zoneminder file from [[Zoneminder_Init_Script]]
Log: tested update from Devuan Jessie to Beowulf: 2020/06
This is a guide for a Sysvinit based Devuan / [[Debian]] system. Debian Stretch / Devuan Ascii and Zoneminder Stable 1.34 from the ZMRepo. 1.35 is unstable (odd number).
'''Requirements:'''
* Debian 10 | buster /sysvinit
* Devuan Beowulf
* Zoneminder 1.34
==Install==
install mariadb, apache2, php
based on:
https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-lamp-on-debian-stretch/
apt-get install mariadb-server apache2 php7.3 libapache2-mod-php7.3
restart apache
service apache2 restart
Add zmrepo to /etc/apt/sources.list
deb https://zmrepo.zoneminder.com/debian/release-1.34/ buster/
NOTE: 1.34 is currently in release-1.34 folder on zmrepo. This is subject to change. Confirm it's there before installing.
NOTE: In order to make this guide, all the existing guides for [[Debian]] were parsed.
https://wiki.zoneminder.com/Debian_9_64-bit_with_Zoneminder_1.30.4_the_Easy_Way
https://wiki.zoneminder.com/Debian_10_Buster_with_Zoneminder_1.34.x_from_ZM_Repo
(these names are changed periodically, so refer to [[Debian]])
etc...
apt-get update
apt-get install apt-transport-https gnupg
wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add -
apt-get update
apt-get install zoneminder  vlc-plugin-base php7.3-gd
adduser www-data video
apt-get install zoneminder
a2enmod cgi
a2enmod rewrite
a2enconf zoneminder
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
mysqladmin -uroot -p reload
The zmupdate.pl call may fail during install of zoneminder. Run it manually to update the db.
# zmupdate.pl
Then apt should complete successfully. Some systemctl commands will fail, but these can be ignored for now.
may need to set timezone in /etc/php/7.3/apache2/php.ini
(and In 1.34 in zm web console options)
e.g. date.timezone America/New_York
EDIT: actually, set the timezone in zoneminder. Because upon update of php,
the new php won't have the TZ configured properly.
service apache2 restart
At this point, you will not have an /etc/init.d/ file for zoneminder
You must copy one from an existing install, or from 1.29 or 1.30.4.
I'm going to put the init script from 1.30.4 in [[Zoneminder_Init_Script]]
after copying that in, and chmod +x /etc/init.d/zoneminder
zoneminder should start:
<pre>
# service zoneminder start
Starting ZoneMinder: 01/27/2020 12:27:42.776878 zmpkg[2722].INF [main:57] [Command: start]
01/27/2020 12:27:42.778627 zmpkg[2722].INF [main:305] [Sanity checking States table...]
01/27/2020 12:27:42.780839 zmpkg[2722].INF [main:97] [Command: start]
01/27/2020 12:27:44.231615 zmpkg[2722].INF [main:205] [Single server configuration detected. Starting up services.]
success
</pre>
double check by reviewing
ps auxw | grep zm
Now, navigate to the Apache server which hosts ZM gui at http://serverip/zm
Review syslog for any error messages.
==Upgrading DB==
NOTE: this covers DB upgrades only. Not upgrade steps. See install above for general upgrade.
If you are importing an existing db, now is a good time. Stop zm, and import the db.
service zoneminder stop
mysqldump -u root -p zm > dump.sql  (export old db)
mysql -uroot -p zm < dump.sql  (import old db)
After this is done, you need to update the db
# zmupdate.pl
run this at least twice, as it tends to error out. If it's already updated, nothing new will happen.
you should see something like:
Database upgrade to version 1.32.3 successful.
Then start zm
service zoneminder start
you might want to run zmaudit.pl to delete non existing events on the new install
==Troubleshooting==
* zmupdate.pl if apt-get fails db upgrade during install of zoneminder.
* You might have to install zoneminder again, instead of an update. Backup DB, and nothing will be lost.
* if localhost/zm says 'page not found' check /etc/apache/conf-available/ which points to /usr/share/zoneminder/www and which may not have the correct permissions (needs apache / www-data user) with 0755 / chown root:www-data
* also check that you enabled the conf in apache: a2enconf zoneminder
* unable to connect to db driver missing, is an issue with multiple php versions - see forums. (a2dismod php7.0, a2enmod php7.3)
===Postinstall script Errors===
The /var/lib/dpkg/info/zoneminder.postinst script may fail due to lack of systemctl. The script can be edited similar to below to quiet the error messages (note: assumes an upgrade. Read the original script if you don't know what it's doing! Essentially, it's just stopping ZM, then running zmupdate.pl and changing possibly apache's zm config. )
<pre>
#! /bin/sh
set +e
if [ "$1" = "configure" ]; then
  . /etc/zm/zm.conf
  for CONFFILE in /etc/zm/conf.d/*.conf; do
    . "$CONFFILE"
  done
  # The logs can contain passwords, etc... so by setting group root, only www-data can read them, not people in the www-data group
  chown www-data:root /var/log/zm
  chown www-data:www-data /var/lib/zm
  if [ -z "$2" ]; then
    chown www-data:www-data /var/cache/zoneminder /var/cache/zoneminder/*
  fi
  if [ ! -e "/etc/apache2/mods-enabled/cgi.load" ] && [ "$(command -v a2enmod)" != "" ]; then
    echo "The cgi module is not enabled in apache2.  I am enabling it using a2enmod cgi."
    a2enmod cgi
  fi
  if [ ! -e "/etc/apache2/mods-enabled/rewrite.load" ] && [ "$(command -v a2enmod)" != "" ]; then
    echo "The rewrite module is not enabled in apache2.  I am enabling it using a2enmod rewrite."
    a2enmod rewrite
  fi
  if [ "$ZM_DB_HOST" = "localhost" ]; then
    if [ -e "/lib/systemd/system/mysql.service" ] || [ -e "/lib/systemd/system/mariadb.service" ] || [ -e "/etc/init.d/mysql" ]; then
      # Ensure zoneminder is stopped
      #deb-systemd-invoke stop zoneminder.service || exit $?
      service zoneminder stop
      #
      # Get mysql started if it isn't running
      #
      if [ -e "/lib/systemd/system/mariadb.service" ]; then
        DBSERVICE="mariadb.service"
      else
        DBSERVICE="mysql.service"
      fi
      echo "Detected db service is $DBSERVICE"
        zmupdate.pl --nointeractive
        zmupdate.pl --nointeractive -f
        # Add any new PTZ control configurations to the database (will not overwrite)
        zmcamtool.pl --import >/dev/null 2>&1
        echo "Done Updating; starting ZoneMinder."
      else
        echo 'NOTE: MySQL/MariaDB not running; please start mysql and run dpkg-reconfigure zoneminder when it is running.'
      fi
    else
      echo 'MySQL/MariaDB not found; assuming remote server.'
    fi
  else
    echo "Not doing database upgrade due to remote db server ($ZM_DB_HOST)."
  fi
#  deb-systemd-invoke restart zoneminder.service
  service zoneminder restart
</pre>
==1.34 Version Notes==
See: https://wiki.zoneminder.com/Using_a_dedicated_Hard_Drive
==1.34 source build==
git clone github.com/zoneminder/zoneminder
cd zoneminder
apt-get install python-sphinx
apt-get install libjpeg-dev
apt-get install javascript-common libnet-sftp-foreign-perl libdevice-serialport-perl \
libimage-info-perl libjson-maybexs-perl liburi-encode-perl libdatetime-perl \
libclass-std-fast-perl libsoap-wsdl-perl libio-socket-multicast-perl \
libsys-cpu-perl  libsys-meminfo-perl libnumber-bytes-human-perl \
libfile-slurp-perl  php-apcu php-apc policykit-1 zip
./utils/do_debian_package.sh --distro=beowulf -s=stable -t=binary
WIP
WIP
The basic catch is that the sysvinit script is not included, so there is a file here: [[Zoneminder_Init_Script]] That can be manually included.

Latest revision as of 00:26, 4 March 2023

Tested today with a migration from a fresh Raspbian Buster which was migrated to Beowulf. I did it a roundabout way, but users should be able to follow the same instructions for Ascii here: Devuan Ascii with Zoneminder 1.32.3 from ZM Repo, except substituting release-1.34 for release in the zmrepo apt sources list. Please refer to zmrepo.zoneminder.com/debian for more details.

Make sure to add in the /etc/init.d/zoneminder file from Zoneminder_Init_Script


Log: tested update from Devuan Jessie to Beowulf: 2020/06

This is a guide for a Sysvinit based Devuan / Debian system. Debian Stretch / Devuan Ascii and Zoneminder Stable 1.34 from the ZMRepo. 1.35 is unstable (odd number).

Requirements:

  • Debian 10 | buster /sysvinit
  • Devuan Beowulf
  • Zoneminder 1.34

Install

install mariadb, apache2, php based on: https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-lamp-on-debian-stretch/

apt-get install mariadb-server apache2 php7.3 libapache2-mod-php7.3

restart apache

service apache2 restart

Add zmrepo to /etc/apt/sources.list

deb https://zmrepo.zoneminder.com/debian/release-1.34/ buster/

NOTE: 1.34 is currently in release-1.34 folder on zmrepo. This is subject to change. Confirm it's there before installing.

NOTE: In order to make this guide, all the existing guides for Debian were parsed.

https://wiki.zoneminder.com/Debian_9_64-bit_with_Zoneminder_1.30.4_the_Easy_Way https://wiki.zoneminder.com/Debian_10_Buster_with_Zoneminder_1.34.x_from_ZM_Repo (these names are changed periodically, so refer to Debian) etc...

apt-get update
apt-get install apt-transport-https gnupg
wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add -
apt-get update
apt-get install zoneminder  vlc-plugin-base php7.3-gd
adduser www-data video
apt-get install zoneminder
a2enmod cgi
a2enmod rewrite
a2enconf zoneminder
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
mysqladmin -uroot -p reload

The zmupdate.pl call may fail during install of zoneminder. Run it manually to update the db.

# zmupdate.pl

Then apt should complete successfully. Some systemctl commands will fail, but these can be ignored for now.

may need to set timezone in /etc/php/7.3/apache2/php.ini (and In 1.34 in zm web console options)

e.g. date.timezone America/New_York EDIT: actually, set the timezone in zoneminder. Because upon update of php, the new php won't have the TZ configured properly.



service apache2 restart

At this point, you will not have an /etc/init.d/ file for zoneminder

You must copy one from an existing install, or from 1.29 or 1.30.4. I'm going to put the init script from 1.30.4 in Zoneminder_Init_Script


after copying that in, and chmod +x /etc/init.d/zoneminder

zoneminder should start:

# service zoneminder start
Starting ZoneMinder: 01/27/2020 12:27:42.776878 zmpkg[2722].INF [main:57] [Command: start]
01/27/2020 12:27:42.778627 zmpkg[2722].INF [main:305] [Sanity checking States table...]
01/27/2020 12:27:42.780839 zmpkg[2722].INF [main:97] [Command: start]
01/27/2020 12:27:44.231615 zmpkg[2722].INF [main:205] [Single server configuration detected. Starting up services.]
success

double check by reviewing

ps auxw | grep zm


Now, navigate to the Apache server which hosts ZM gui at http://serverip/zm

Review syslog for any error messages.

Upgrading DB

NOTE: this covers DB upgrades only. Not upgrade steps. See install above for general upgrade.

If you are importing an existing db, now is a good time. Stop zm, and import the db.

service zoneminder stop
mysqldump -u root -p zm > dump.sql  (export old db) 
mysql -uroot -p zm < dump.sql  (import old db)

After this is done, you need to update the db

# zmupdate.pl

run this at least twice, as it tends to error out. If it's already updated, nothing new will happen.

you should see something like: Database upgrade to version 1.32.3 successful.

Then start zm

service zoneminder start

you might want to run zmaudit.pl to delete non existing events on the new install


Troubleshooting

  • zmupdate.pl if apt-get fails db upgrade during install of zoneminder.
  • You might have to install zoneminder again, instead of an update. Backup DB, and nothing will be lost.
  • if localhost/zm says 'page not found' check /etc/apache/conf-available/ which points to /usr/share/zoneminder/www and which may not have the correct permissions (needs apache / www-data user) with 0755 / chown root:www-data
  • also check that you enabled the conf in apache: a2enconf zoneminder
  • unable to connect to db driver missing, is an issue with multiple php versions - see forums. (a2dismod php7.0, a2enmod php7.3)

Postinstall script Errors

The /var/lib/dpkg/info/zoneminder.postinst script may fail due to lack of systemctl. The script can be edited similar to below to quiet the error messages (note: assumes an upgrade. Read the original script if you don't know what it's doing! Essentially, it's just stopping ZM, then running zmupdate.pl and changing possibly apache's zm config. )

#! /bin/sh

set +e

if [ "$1" = "configure" ]; then

  . /etc/zm/zm.conf
  for CONFFILE in /etc/zm/conf.d/*.conf; do
    . "$CONFFILE"
  done

  # The logs can contain passwords, etc... so by setting group root, only www-data can read them, not people in the www-data group
  chown www-data:root /var/log/zm
  chown www-data:www-data /var/lib/zm
  if [ -z "$2" ]; then
    chown www-data:www-data /var/cache/zoneminder /var/cache/zoneminder/*
  fi
  if [ ! -e "/etc/apache2/mods-enabled/cgi.load" ] && [ "$(command -v a2enmod)" != "" ]; then
    echo "The cgi module is not enabled in apache2.  I am enabling it using a2enmod cgi."
    a2enmod cgi
  fi
  if [ ! -e "/etc/apache2/mods-enabled/rewrite.load" ] && [ "$(command -v a2enmod)" != "" ]; then
    echo "The rewrite module is not enabled in apache2.  I am enabling it using a2enmod rewrite."
    a2enmod rewrite
  fi

  if [ "$ZM_DB_HOST" = "localhost" ]; then

    if [ -e "/lib/systemd/system/mysql.service" ] || [ -e "/lib/systemd/system/mariadb.service" ] || [ -e "/etc/init.d/mysql" ]; then
      # Ensure zoneminder is stopped
      #deb-systemd-invoke stop zoneminder.service || exit $?
      service zoneminder stop

      #
      # Get mysql started if it isn't running
      #

      if [ -e "/lib/systemd/system/mariadb.service" ]; then
        DBSERVICE="mariadb.service"
      else
        DBSERVICE="mysql.service"
      fi
      echo "Detected db service is $DBSERVICE"

        zmupdate.pl --nointeractive
        zmupdate.pl --nointeractive -f

        # Add any new PTZ control configurations to the database (will not overwrite)
        zmcamtool.pl --import >/dev/null 2>&1
        echo "Done Updating; starting ZoneMinder."
      else
        echo 'NOTE: MySQL/MariaDB not running; please start mysql and run dpkg-reconfigure zoneminder when it is running.'
      fi
    else
      echo 'MySQL/MariaDB not found; assuming remote server.'
    fi

  else
    echo "Not doing database upgrade due to remote db server ($ZM_DB_HOST)."
  fi
#  deb-systemd-invoke restart zoneminder.service
  service zoneminder restart

1.34 Version Notes

See: https://wiki.zoneminder.com/Using_a_dedicated_Hard_Drive

1.34 source build

git clone github.com/zoneminder/zoneminder
cd zoneminder
apt-get install python-sphinx
apt-get install libjpeg-dev
apt-get install javascript-common libnet-sftp-foreign-perl libdevice-serialport-perl \
libimage-info-perl libjson-maybexs-perl liburi-encode-perl libdatetime-perl \
libclass-std-fast-perl libsoap-wsdl-perl libio-socket-multicast-perl \
libsys-cpu-perl  libsys-meminfo-perl libnumber-bytes-human-perl \
libfile-slurp-perl  php-apcu php-apc policykit-1 zip
./utils/do_debian_package.sh --distro=beowulf -s=stable -t=binary

WIP