quinta-feira, 26 de dezembro de 2013

ZoneMinder no CentOS 6

Novo método!


ATENÇÃO. ESSE POST ESTÁ SUPERADO. AGORA O ZONEMINDER PODE SER INSTALADO DE FORMA MUITO MAIS FÁCIL COM O REPOSITÓRIO PRÓPRIO PARA O CentOS. VEJA ESSE POST.

Sobre o ZoneMinder


Nesse post foi demonstrado como instalar o ZoneMinder no Ubuntu Server. Se quiser informações sobre a instalação das câmeras IP e sobre o que é o ZoneMinder, abra o link já referido.

Instalando no CentOS


Segue agora o passo a passo para instalar o poderoso sistema de vigilância no CentOS 6 (Versão 6.5, arquitetura x86_64).

OBS: Todos os comandos aqui descritos foram executados como root.

Baixe nesse link ou em outro link da lista pública de espelhos a versão mínima do CentOS 6.5 (arquivo CentOS-6.5-x86_64-minimal.iso ou o torrent equivalente).

Instale o CentOS.

Após o primeiro boot, habilite a interface de rede e defina o IP da máquina.
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Para IP dinâmico, simplesmente altere a opção ONBOOT conforme abaixo e reinicie o sistema:
ONBOOT="yes"
Para IP estático, faça as alterações necessárias para ficar assim:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=208.67.222.222
Para evitar lentidão ao conectar via ssh:
nano /etc/ssh/sshd_config
E deixe as seguintes opções conforme abaixo:
UseDNS no
GSSAPIAuthentication no
Reinicie os serviços de rede e do servidor ssh:
service network restart
service sshd restart
Atualize o sistema
yum update -y
Instale o repositório RepoForge (antigo RPMForge):
yum install wget


wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm


yum install rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Instale o repositório EPEL
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Verifique se os repositórios foram corretamente instalados:
yum repolist
Instale as dependências necessárias:
wget --output-document=perl-X10-0.03-1.noarch.rpm http://bauerhaus.dyndns.org/filebrowser/download/2500

wget --output-document=perl-Astro-SunTime-0.01-1.noarch.rpm http://bauerhaus.dyndns.org/filebrowser/download/2501

wget --output-document=perl-Sys-Mmap-0.14-2.el6.x86_64.rpm http://bauerhaus.dyndns.org/filebrowser/download/2750

yum install perl-Astro-SunTime-0.01-1.noarch.rpm perl-X10-0.03-1.noarch.rpm perl-Sys-Mmap-0.14-2.el6.x86_64.rpm
Desabilite o SELINUX
setenforce 0

nano /etc/selinux/config

SELINUX=disabled
Faça o download do pacote zoneminder (essa versão já inclui bugfixes e as melhorias de performance conforme descritas aqui)
wget --output-document=zoneminder-1.26.5-1.el6.x86_64.rpm http://bauerhaus.dyndns.org/filebrowser/download/2745

yum install zoneminder-1.26.5-1.el6.x86_64.rpm
Proteja o servidor mysql definindo senha do usuário root e removendo tabelas de teste:
service mysqld start
/usr/bin/mysql_secure_installation
chkconfig mysqld on
Crie o banco de dados do ZoneMinder (use o password de root definido no item anterior):
mysql -uroot -p
mysql> create database zm;
mysql> grant select,insert,update,delete,alter on zm.* to 'zmuser'@localhost identified by 'zmpass';
mysql> exit;

mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysqladmin -uroot -p reload
(OBS: Se você escolheu outros usuário e senha para o bando de dados zm no item anterior, então edite o arquivo /etc/zm.conf e faça os ajustes em ZM_DB_USER e ZM_DB_PASS)

Ajuste o timezone da sua localidade nas configurações do php, exemplo:
nano /etc/php.ini
date.timezone = America/Sao_Paulo
Habilite a interface web do ZoneMinder (ela vem desabilitada por padrão):
nano /etc/httpd/conf.d/zoneminder.conf
Apague ou comente (com um #) a linha "Deny from all # DELETE THIS LINE".

Alguns ajustes para evitar mensagens de erro do apache (altere conforme suas configurações):
echo "ServerName localhost" > /etc/httpd/conf.d/fqdn.conf
Inicie o servidor web (apache) e configure-o para iniciar automaticamente a cada boot:
service httpd start
chkconfig httpd on
Abra as portas necessárias no firewall (iptables) do CentOS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables save
iptables -L -v
Ou, se quiser fazer por interface gráfica:
yum install system-config-firewall
system-config-firewall
# Personalizar
# Marque as opções
WWW (HTTP)
WWW Seguro (HTTPS) (caso você queira habilitar acesso criptografado)
Fechar
Ok

Reinicie o sistema
reboot
ou
init 6
No seu navegador, aponte para http://<ip da máquina>/zm

Se quiser habilitar SSL (navagação segura):
yum install mod_ssl openssl
Gere a nova chave (auto-assinada) e novo certificado:
openssl genrsa -out ca.key 1024
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 730 -in ca.csr -signkey ca.key -out ca.crt
Mova para os lugares corretos
mv -f ca.crt /etc/pki/tls/certs/localhost.crt
mv -f ca.key /etc/pki/tls/private/localhost.key
Reinicie o servidor apache (web)
service httpd restart
No seu navegador, aponte para https://<ip da máquina>/zm

ALGUMAS DICAS DE PERFORMANCE


O servidor ZoneMinder não pode ficar com um "load" muito alto. Se isso ocorrer, você terá instabilidade e perderá alguns "frames" de imagens.

A seguir algumas dicas para tentar melhorar a performance.

1. Para sistemas de arquivos Ext4, adicione as seguintes opções no /etc/fstab:
noatime,nodiratime,commit=120,data=writeback

Exemplo
UUID=ba4acd10-ae6d-465c-82fe-9752017480ee /var/lib/zoneminder     ext4    defaults,noatime,nodiratime,commit=120,data=writeback        0 2
2. Habilite nas opções do ZoneMinder o CPU_EXTENSIONS, para obter vantagem das extensões SSE2/SSE3 do processador.

3. Habilite FAST_IMAGE_BLENDS. Esse tipo de blend é extremamente rápido e não envolve multiplicação ou divisão, o que pode impactar a performance.

4. Desabilite COLOUR_JPEG_FILES a não ser que realmente precise disso. Essa opção converte imagens em grayscale para cor antes de armazená-las como jpegs. Isso impacta a performance e usa mais espaço no seu disco, então o melhor é deixar desabilitado.

5. Desabilite CREATE_ANALYSIS_IMAGES se você usa motion detection com Blob, mas não precisa das imagens de análise.

6. Embora óbvio, tenha certeza que desabilitou EXTRA_DEBUG e RECORD_DIAG_IMAGES.

7. Para câmeras locais (não IP): Habilite ZM_V4L_MULTI_BUFFER se puder. Tente fazer correspondência entre a paleta de caputra (Capture Palette) e o colorspace alvo (Target Colorspace), para evitar a necessidade de conversão de formato.

8. Se estiver usando Motion Detection (Modect) para as câmeras, quanto menos zonas, mais rápido será o sistema. Antes de ficar criando zonas, pense se realmente você tem necessidade de mais de uma zona.

9. Experimente usar a opção 8 bit grayscale nas câmeras (Target Colorspace), em vez de cores 24 ou 32 bits. Além de as imagens ficarem menores, o processamento e análise delas será mais rápido. Você realmente precisa registrar imagens coloridas? Faça opção consciente.

10. Quantos quadros por segundo (frames per second - FPS) você realmente precisa nas câmeras? Pense nisso. Não há qualquer razão para caputar o vídeo a 20 fps se você não tem qualquer necessidade específica para isso. 5 fps são suficientes para a maioria dos casos e produz bons vídeos.

11. Use a libjpeg-turbo. A instalação pelo método descrito neste post se encarregará disso.

12. Ajuste as opções "Reference Image Blend %ge" e "Alarm Reference Image Blend %ge" de cada monitor apropriadamente. Quanto à primeira, use 6.25% para câmeras internas e 12.5% para externas. Quando à segunda, experimente deixar todas as câmeras em 6.25%. Trata-se de nova funcionalidade da versão do ZoneMinder 1.26.5. Antes de ajustar essa opção alguns eventos estavam ficando quase infinitos (disparava o alarme do modect e não parava mais de gravar).

ATENÇÃO


As opções Maximum FPS e Alarm Maximum FPS são apenas para câmeras analógicas. Não use essas opções para câmeras remotas IP, caso contrário você terá falhas na visualização "ao vivo" e durante as gravações dos eventos. A implementação para câmeras remotas ainda não foi realizada.

Nenhum comentário:

Postar um comentário