Monitoramento de câmeras utilizando Zoneminder - PoP-GO

Transcrição

Monitoramento de câmeras utilizando Zoneminder - PoP-GO
Documentação do ZoneMinder-1.2.22 – Slackware-10.2
1. Introdução
O PoP-GO com a intenção de implementar uma solução para monitoramento em
tempo real de todas as suas dependências, resolve implantar o software ZoneMinder.
O ZoneMinder é uma solução Open Source Linux Video Camera Security, que
está sob a licença GPL.
O core do ZoneMinder é a captação e análise das imagens com uma gama de
parâmetros configuráveis que permite assegurar a eliminação de falso-positivos, e
de capturar tudo que seja necessário. O ZoneMinder permite definir "zonas" para
cada câmera, variando a sensibilidade e a funcionalidade nas análises; permitindo a
eliminação das regiões que não sejam necessárias análises minuciosas ou áreas que
sejam de suma importância para o monitoramento. O software permite capturar,
analisar, gravar e monitorar “qualquer câmera” conectada a uma máquina baseada
em Linux ou câmeras IP.
Alguns requisitos do ZoneMinder: PHP, Apache, MySQL, ffmpeg, libjpeg.a,
libpcre.a, netpbm, cambozola java applet e alguns módulos perl.
O presente documento visa descrever (how-to) a instalação do ZoneMinder,
abordando também a instalação dos requisitos.
2. Instalando o APACHE
O source do Apache-1.3.37 pode ser baixado da seguinte URL (Apache-1.3.37).
A compilação foi padrão. Recomendo o uso do apache.Slackbuild para instalação.
# ./configure \
--with-layout=Slackware \
--enable-module=most \
--enable-shared=max \
--manualdir=/var/www/htdocs/manual \
# make -j3
# checkinstall
Fazer as seguintes alterações no arquivo de configuração httpd.conf:
Em DirectoryIndex colocar:
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
Retire o comentário das linhas (final do arquivo):
Include /etc/apache/mod_php.conf
Include /etc/apache/mod_ssl.conf
Outros parâmetros de configuração não serão abordados neste documento, pois
este tem a intenção de se voltar para operação do ZoneMinder.
3. Instalando o PHP com módulo para suporte no Apache
O source do PHP-4.4.4 pode ser baixado do seguinte link (PHP-4.4.4). A
compilação foi padrão. Recomendo o uso do php.Slackbuild. É necessário ter o
módulo com suporte ao Apache, jpeg e MySQL.
# ./configure --prefix=/usr \
--sysconfdir=/etc \
--enable-discard-path \
--with-config-file-path=/etc/apache \
--enable-safe-mode \
--with-openssl \
--with-mhash \
--enable-bcmath \
--with-bz2 \
--with-pic \
--enable-calendar \
--enable-ctype \
--with-gdbm \
--with-db3 \
--with-imap-ssl=$IMAPLIBDIR \
--with-imap=$IMAPLIBDIR \
--enable-ftp \
--with-iconv \
--with-dom \
--with-exif \
--enable-exif \
--with-gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr \
--with-png \
--with-gmp \
--with-pcre-regex=/usr \
--with-mysql=shared,/usr \
--with-gettext=shared,/usr \
--with-expat-dir=/usr \
--with-xml \
--enable-wddx \
--with-mm=/usr \
--enable-trans-sid \
--enable-shmop \
--enable-sockets \
--with-regex=php \
--enable-yp \
--enable-memory-limit \
--with-tsrm-pthreads \
--enable-shared \
--disable-debug \
--enable-fastcgi \
--enable-force-cgi-redirect \
--disable-static \
--with-apxs=/usr/sbin/apxs \
--with-zlib=/usr
# make –j3
# checkinstall
Após a compilação, cria uma página de teste para ver se está tudo OK. Crie um
arquivo index.php, no seu DocumentRoot, com o seguinte conteúdo:
<? phpinfo(); ?>
Reinicie os serviços e acesse no seu browser a URL, se estiver OK, vão aparecer
às informações do seu sistema:
http://localhost/
4. Configurando o MySQL-4.1.21
Baixe o arquivo pré-compilado do seguinte link (MySQL-4.1.21) e instale. Após
isso faça o login com o usuário mysql:
# su mysql
$ mysql_install_db /*Instala a base de dados MySQL
$ exit
# mysqld_safe --user=mysql& /*Inicia o MySQL com usuário mysql
# mysql_secure_installation /* Realiza os ajustes necessários
Vão aparecer várias perguntas, como setar a senha de root, opção para remover
usuários anônimos do banco dados e base de dados de teste. Neste ponto prefiro que
deixe a base de teste, pois na hora da instalação do módulo perl DBD::Mysql, ele
fará um teste de conexão nesta tabela. Após isso a tabela e o usuário poderão ser
removidos. Caso seja removido agora não tem nenhum problema, basta se conectar
como root na instalação do módulo.
O arquivo my.cnf que eu usei foi a seguinte:
[mysql.server]
datadir=/var/lib/mysql
socket=/var/run/mysql/mysql.sock
[mysqladmin]
socket=/var/run/mysql/mysql.sock
[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysql/mysql.sock
language=/usr/share/mysql/english/
log=/var/log/mysql/mysqld.log
[mysql]
socket=/var/run/mysql/mysql.sock
Crie o diretório /var/log/mysql e dê permissão para o usuário mysql. Reinicie o
MySQL.
5. Compilando ffmpeg e netpbm
FFmpeg é uma solução completa para gravar, converter e fazer stream de áudio
e vídeo. O source pode ser encontrado no seguinte link (ffmpeg-0.4.9-pre1).
Netpbm é um kit de ferramentas para manipulação de imagens, incluindo a
conversão de imagens entre vários outros formatos. O source pode ser encontrado
no seguinte link (netpbm-10.26.31).
Compilando o ffmpeg:
# ./configure –enable-shared –enable-mp3lame
# make
# checkinstall
Compilando o netpbm:
#
#
#
#
./configure
make
make package
installnetpbm
Copie o diretório netpbm para onde achar melhor (/usr/local).
6. Instalando JAVA J2SDK, apache-ant e cambozola
Baixe o j2sdk1.4.2_12 no site http://java.sun.com/j2se/1.4.2/download.html e
instale. Crie um arquivo j2sdk.sh no diretório /etc/profile.d:
#!/bin/sh
export JAVA_HOME=/usr/lib/j2sdk /* Diretório de instalação
export MANPATH="$MANPATH:/usr/lib/j2sdk/man"
export PATH="$PATH:/usr/lib/j2sdk/bin:/usr/lib/j2sdk/jre/bin"
Baixe o apache-ant.
Descompacte-o e crie um arquivo ant.sh no diretório /etc/profile.d:
#!/bin/sh
ANT_HOME=/usr/local/ant /* Diretório de Instalação
PATH=$PATH:$ANT_HOME/bin
export ANT_HOME PATH
Baixe o cambozola no link (cambozola-0.68). Descompacte-o e instale:
# ant
Esse comando vai criar dois arquivos no diretório dist/:
cambozola-server.jar Æ Servidor de teste que mostra repetidamente algumas imagens
cambozola.jar Æ O cliente que deverá ser usado no diretório do Apache.
7. Instalando os módulos PERL
Recomendo utilizar o shell CPAN para instalação dos módulos necessários. Na
linha de comando digite:
# perl -MCPAN -e shell
Irá aparecer uma tela para que se configure o CPAN, na maioria das vezes o
automatic resolve.
Terminado o procedimento de configuração, basta digitar 'install nome_do_modulo',
ele já checa as dependências de cada módulo. Os módulos necessários para o
ZoneMinder podem ser verificados na execução do ./configure do ZoneMinder. Os
módulos são: Bundle::CPAN, Bundle::LWP, DBI, DBD::Mysql, Archive::Zip,
Mail::Mailer, Date::Manip, MIME::Entity, MIME::Lite, Device::SerialPort e
X10::ActiveHome.
Na instalação do módulo DBD::Mysql poderá aparecer uns erros de conexão com o
MySQL. Isso acontece porque o usuário, senha e a tabela podem ser diferentes do banco
de dados MySQL ou se você excluiu a tabela test na instalação. Caso dê erro na
instalação pelo CPAN, proceda com a instalação manualmente. Baixe o arquivo DBDmysql-3.0007.tar.gz, descompacte-o e instale.
# perl Makefile.PL --testdb=<db> --testuser=<user> -testpassword=<pwd>
# make
# make test
# make install
8. Instalando o ZoneMinder
Primeiro vamos criar as tabelas no MySQL. Para isto vamos realizar os seguintes
procedimentos no diretório do ZoneMinder:
$ ./configure --with-mysql=/usr/bin \
--with-webdir=/var/www/htdocs/zm \
--with-cgidir=/var/www/cgi-bin \
--with-webuser=nobody \
--with-webgroup=nobody \
--with-ffmpeg=/usr/lib \
--with-libarch=lib \
--enable-debug=yes \
--enable-crashtrace=yes \
CFLAGS=-g
-O3
-march=pentium4
CXXFLAGS=-g
ZM_DB_PASS=zmuser \
ZM_PATH_CONF=/etc
-O3
-march=pentium4
Acesse o diretório db/ no diretório do ZoneMinder e verifique se os arquivos *.sql
foram criados. Configurando as tabelas e setando as permissões.
# mysql –u root –p
mysql> source /…/db/zm_create.sql;
mysql> grant select, insert, update, delete on zm.* to ‘zmadmin’
identified by ‘zmadmin’;
mysql> grant select on zm.* to ‘zmuser’;
mysql> update user set host = ‘localhost’ where user like ‘zm%’;
mysql> flush privileges;
mysql> quit;
Algumas alterações precisam ser feitas nos arquivos fontes do ZoneMinder para
funcionar no Slackware. Faça as seguintes alterações:
Arquivo /opt/Zoneminder-1.2.22/scripts/zmpkg.pl
Linha 265:
$prefix = "su ".ZM_WEB_USER." --shell=/bin/sh --command='";i
Para
$prefix = "su ".ZM_WEB_USER." -c '$command'";i
Execute o ./configure novamente com as opções acima.
# make
# checkinstall
Outras alterações precisam ser realizadas. O ZoneMinder aloca memória virtual para
funcionamento dos monitors. O cálculo de memória virtual alocada se dá seguinte
maneira:
ring buffer size x image width x image height x 3 (for 24 bits images) + a bit of
overhead.
Para não ocorrer erros na alocação da memória virtual é necessário alterar alguns
parâmetros do sistema. Para ver as configurações atuais:
# sysctl –a
Verifique os valores do kernel.shmmax, kernel.shmall. Este valor não é suficiente
para a alocação. Coloque no seu rc.local as seguintes alterações:
#Seta alguns
/sbin/sysctl
/sbin/sysctl
/sbin/sysctl
/sbin/sysctl
parâmetros do sistema
-w kernel.shmmax="0x3000000"
-w kernel.shmall="0x3000000"
-w fs.file-max=65536
-w kernel.panic=10
Copie o cambozola.jar para o diretório web do ZoneMinder.
Pronto. Acesse pelo seu browser o front-end do ZoneMinder.
http://localhost/zm/
9. Configuração câmera TRENDnet TV-IP300
Algumas alterações são necessárias para o funcionamento desta câmera IP. São elas:
Æ Na configuração de um novo monitor, colocar em Remote Host Path: /cgibin/vídeo.jpg, Capture Width (pixels): 352 e Capture Height (pixels): 240.
Æ Em ADMIN:
Æ No guia PATHS:
• ZM_PATH_ZMS: /cgi-bin/zms
• ZM_PATH_LOGS: /var/log/zm (crie e dê as permissões
necessárias)
Æ No guia IMAGES:
• ZM_CAN_STREAM: auto
•
•
•
•
ZM_STREAM_METHOD: jpeg
ZM_OPT_CAMBOZOLA: yes
ZM_PATH_CAMBOZOLA: cambozola.jar
ZM_PATH_FFMPEG: /usr/bin/ffmpeg
Æ No guia NETWORK:
• ZM_OPT_REMOTE_CAMERAS: yes
• ZM_NETCAM_REGEXPS: yes
• ZM_HTTP_VERSION: 1.0
Maiores
informações
acesse
o
manual
do
ZoneMinder
(http://www.zoneminder.com/fileadmin/downloads/README.html) e o fórum de
discussão (http://www.zoneminder.com/forums/).
Equipe POP-GO