Outils pour utilisateurs

Outils du site


serveur_zoneminder

ZoneMinder

Presentation

Lien: http://www.zoneminder.com/

  • Debian Lenny
  • i386
  • Release 1.24.2
:!: je n'arrive pas a compiler pour un environnement 64 bit ! (amd64)
Peut etre en usant de “–with-libarch=lib64” ca serait mieux ?

Installation

debian packages

On va compiler, ce qui necessite certains outils.

# aptitude install mysql-server-5.0

Definir un mot de passe root

# aptitude install php5 php5-mysql
# aptitude install apache2 libapache2-mod-auth-mysql

Attention, ne pas faire: aptitude install ffmpeg car on va compiler ffmpeg pour qu'il soit plus mieux.

Pour les compilations à venir:

# aptitude install build-essential
# aptitude install libmysqlclient15-dev libgnutls-dev libjpeg62-dev
# aptitude install libarchive-zip-perl libdate-manip-perl
# aptitude install liblwpx-paranoidagent-perl
# aptitude install libphp-serialization-perl

Ainsi que :

# aptitude install libpcre3-dev libbz2-dev

Seulement si on ne souhaite pas compiler “ffmpeg” (et tout particulierement –with-ffmpeg=/usr/local ) :

# aptitude install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev

ffmpeg

Il faut utiliser une version optimisé de FFMPEG. Sinon, ca rame parce qu'on utilise pas les capacités des processeurs modernes!

# aptitude install subversion
$ mkdir ffmpeg && cd ffmpeg
$ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
:!: Si la version est trop récente (et surtout si la compilation avec ZM ne passe pas), preferer cette version:
http://www.ffmpeg.org/releases/ffmpeg-0.5.1.tar.gz que je garde au chaud ici
$ cd ffmpeg
$ ./configure --prefix=/usr/local

ou:

$ ./configure --prefix=/usr/local --cpu=i686 --enable-swscale --enable-gpl
$ make
# make install

Compilation

dependances

configure: error: zm requires Sys::Mmap for mapped memory

Solution:

# perl -MCPAN -e shell
install Sys::Mmap

compilation

Recuperer les sources, par exemple:

$ mkdir tmp && cd tmp
$ wget http://www2.zoneminder.com/downloads/ZoneMinder-1.24.2.tar.gz

Je garde cette version de ZoneMinder au chaud ici.

Decompresser:

$ tar xvzf ZoneMinder-1.24.2.tar.gz

Compiler:

$ cd ZoneMinder-1.24.2
$ ./configure --prefix=/usr/local \
        --with-webdir=/var/www/zm \
        --with-cgidir=/usr/lib/cgi-bin \
        --with-webuser=www-data \
        --with-webgroup=www-data \
        --with-ffmpeg=/usr/local \
        --enable-mmap=yes \
        --disable-debug \
        --disable-crashtrace

Ou plutôt (parce que ca ne fonctionnait toujours pas…hummm)

./configure --prefix=/usr/local \
      --with-libarch=lib \
      --with-mysql=/usr \
      --with-webdir=/var/www/zm \
      --with-cgidir=/usr/lib/cgi-bin \
      --with-webuser=www-data \
      --with-webgroup=www-data \
      --with-ffmpeg=/usr/local \
      --enable-mmap=yes \
      --disable-debug \
      --disable-crashtrace \
      ZM_DB_HOST=localhost \
      ZM_DB_NAME=zm \
      ZM_DB_USER=zmuser \
      ZM_DB_PASS=zmpass \
      CFLAGS="-march=i686 -O2" \
      CXXFLAGS="-march=i686 -O2"

Où :

/var/www/zm l'emplacement du serveur
–with-ffmpeg=/usr/local parce qu'on a compilé notre version
ZM_DB_PASS VOTRE mot de passe
CFLAGS=“-march=i686 -O2” Option de compilation

Ensuite:

$ make

Et a ma grande surprise, ca compile … alors que je m'attendais a “patcher” ! http://www.zoneminder.com/forums/viewtopic.php?p=60971

Install

# make install

Configuration

zm.conf

Aprés chaque make install , un fichier de conf appararait là: (sauf option contraire)

 /usr/local/etc/zm.conf
:!: le sauvegarder avant de faire un nouvel make install

L'editer, au moins pour choisir un mot de passe:

...
# ZoneMinder database hostname or ip address
ZM_DB_HOST=localhost

# ZoneMinder database name
ZM_DB_NAME=zm

# ZoneMinder database user
ZM_DB_USER=zmuser

# ZoneMinder database password
ZM_DB_PASS=<MOT_DE_PASSE>

database

A partir du repertoire où on a compilé les sources de ZoneMinder, on créé la base et ses tables comme cela:

$ mysql -u root -p < db/zm_create.sql

Créer le user (“zmuser” par exemple) qui sera autorisé a accéder a cette base:

$ mysql -u root -p
mysql> grant all on zm.* to zmuser@"localhost" identified by "<MOT_DE_PASSE>";

events

Il peut y avoir beaucoup d'images a sauvegarder.

Il est encore temps d'utiliser un “filer” ou un “nas” en réseau:

Verifier que le répertoire /var/www/zm/events est vide.

Le faire pointer sur le partage nfs .

# cd /var/www/zm
# mv events events-old
# mkdir /mnt/<nfs>/events
# ln -s /mnt/<nfs>/events .  

(pour exemple)

script pour init.d

Modifier le fichier ./scripts/zm pour qu'il fonctionne sous lenny. Par exemple:

# cp ./scripts/zm /etc/init.d/.

Técharger le script ici .

Et puis:

$ unzip zm.zip
$ su
# chmod a+x zm
# chown root: zm
# mv zm /etc/init.d/.

Créer repertoire:

# mkdir /var/lock/subsys

Test 1:

# /etc/init.d/zm

Test 2:

# /etc/init.d/zm status
ZoneMinder is stopped

Test 3:

# /etc/init.d/zm start
Starting ZoneMinder: Success

Test 4:

/etc/init.d/zm status
ZoneMinder is running

Le répertoire /tmp se peuple des logs de “zm”…

Et enfin:

# update-rc.d zm defaults

sysctl.conf

Lien: http://www.zoneminder.com/forums/viewtopic.php?t=9692

ZoneMinder a besoin de partager beaucoup de mémoire…

Pour eviter des messages d'erreurs comme ça dans /var/log/syslog :

... zm zmc_m1[2032]: ERR [Got unexpected memory map file size 9217192, expected 36865192]

Dans sysctl.conf :

# TJ --------------
# pour zm. Source: 
#kernel.shmmax = 256000000
kernel.shmmax = 25600000
###kernel.shmall = 62500

Et puis, aprés sauvegarde.

# sysctl -p

Redemarrer ZoneMinder: Les erreurs disparaissent…

Apache

virtualhost

“zm” est le seul service sous Apache…

Aprés avoir désactiver le site par defaut:

# a2dissite 000-default

Voici la conf de mon zm:

<VirtualHost *:80>
      ServerAdmin root@localhost
      ServerName zm.thierry-jaouen.local
      ServerAlias zm video

      DocumentRoot /var/www/zm

      <Directory />
              Options FollowSymLinks
              AllowOverride None

              Order Deny,Allow
              Deny From All
      </Directory>

      <Directory /var/www/zm>
              Options -Indexes FollowSymLinks -MultiViews
              AllowOverride None
      </Directory>

      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
      <Directory "/usr/lib/cgi-bin">
              AllowOverride None
              Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
              Order allow,deny
              Allow from all
      </Directory>

      <Location />
              Order Deny,Allow
              Deny From All
              Allow From 127. 192.168.
      </Location>

      ErrorLog /var/log/apache2/error.log

      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      CustomLog /var/log/apache2/access.log combined

      ServerSignature On
</VirtualHost>

Activée par :

# a2ensite 110-zoneminder
# apache2ctl graceful

Service

Il n'y a pas de mot de passe demandé par defaut.

Dans: Options > System

OPT_USE_AUTH       enable (cocher)

Ensuite, le compte par défaut pour administrer:

login: admin
password: admin

A changer trés vite bien sûr.

TV-IP422

de chez Trendnet…

Pas simple avec ZoneMinder.

jpg

:!: A eviter, car lent

Source:

Remote Host Name <User>:<Password>@<Adresse_IP>
Remote Host Port 80
Remote Host Path /cgi/jpg/image.cgi

mjpg

Source:

Remote Host Name <User>:<Password>@<Adresse_IP>
Remote Host Port 80
Remote Host Path /cgi/mjpg/mjpg.cgi

Et non pas /mjpeg.cgi ⇒ MIME pourri ne fonctionnant pas avec ZM.

mp4

ca marche ?

PTZ

Une camera a la même caractéristique, et voici quelques fonctions interessantes possibles: http://www.zoneminder.com/forums/viewtopic.php?t=12238

SkyIPCam7xx comme module pour controler la caméra.

Lien: http://www.zoneminder.com/forums/viewtopic.php?t=12271

# cd /usr/local/share/perl/5.10.0/ZoneMinder/Control
# wget http://www.praecogito.com/~brudy/setsnest/zoneminder/SkyIPCam7xx.pm

Etc…

:!: Sauf erreur: il n'y a que le compte admin qui peut l'utiliser ?

Bugs

... zm zmwatch[1714]: ERR [Can't open memory map file '/dev/shm/.zm.mmap.1': Too many open files in system]
$ cat /proc/sys/fs/file-max
20925
$cat /proc/sys/fs/file-nr
20934     0       20925

Oups?

Un lien pour aider: http://www.netadmintools.com/art295.html

serveur_zoneminder.txt · Dernière modification : 2010/11/05 21:10 de thierry