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