Debian 6 Squeeze 64-bit with ZoneMinder 1.25.0 Preview, FFmpeg, libjpeg-turbo, Webmin, Cambozola(Spanish Diciembre 2011)

From ZoneMinder

Jump to: navigation, search

Basado en la guia para Ubuntu 11.04 con Zoneminder 1.25.0 ACTUALIZADO: 15 de Marzo 2012

#Descargar e instalar Debian Squeeze (estable) NetInstall 64-bits (http://www.debian.org/CD/netinst/) No es necesario descargar la imagen de CD completa. Netinst pesa un poco mas de 100 MB
#En la seleccion de software, solo instalar OpenSSH, y el Servidor de Correo (Postfix).
#Para el servidor de correo, puedes usar "Internet Site".
#Despues de instalar, iniciar sesión y establecer IP estatica. La IP es de acuerdo a tu red

###############
#Volverse root#
###############

su

#Coloca la contraseña ingresada durante la instalación.

############################
#Establecer la IP estatica#
############################

nano /etc/network/interfaces

####################################
####################################
  
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

####################################
####################################

#Presionar Ctrl + O para guardar y Ctrl + X para salir de nano. 

#Reiniciar la red

/etc/init.d/networking restart

#Con IP estatica y conexión a Internet ya se puede usar SSH desde otra computadora Linux de la red y conectarte a tu nuevo sistema Debian.

#Se puede Copiar/Pegar los siguientes comandos en la consola o si se prefiere escribirlos. Los comandos multiples sin lineas vacias en medio se pueden copiar y pegar juntas. No pegar lineas que inician con #

####################################
#Guardar logs del arranque Debian#
####################################

#Es util si por alguna razon Zoneminder no se inicia bien.

nano /etc/default/bootlogd

#Cambiamos el valor del archivo a Yes quedando asi:

BOOTLOGD_ENABLE=Yes

# Presionar Ctrl + O para guardar y Ctrl + X para salir de nano
# La proxima vez que se reinicie el sistema podemos buscar en /var/log/boot para conocer los detalles del arranque de Debian.

#########################
#Agregar un repositorio#
#########################

#Util para no tener errores en futuras compilaciones necesarias. 
#El paquete debian-multimedia-keyring maneja llaves del repositorio

apt-get install debian-multimedia-keyring

#Se edita el archivo sources.list para agregar el repositorio

nano /etc/apt/sources.list

#Se agrega el repositorio en la ultima linea del archivo sources.list

deb http://www.debian-multimedia.org squeeze main

#Presionar Ctrl + O para guardar y Ctrl + X para salir de nano

########################
#Actualizar el sistema#
########################

apt-get update

apt-get upgrade

##############################
#Instalar paquetes Multimedia#
##############################

#El paquete obligatorio es libfaac-dev pero se pueden instalar los otros para asegurar el funcionamiento.
#Se indica SI al instalador con una S

apt-get install libfaac-dev
apt-get install libmp3lame-dev
apt-get install libogg-dev
apt-get install libtheora-dev
apt-get install libvorbis-dev
apt-get install libx264-dev
apt-get install libxvidcore4-dev

##############################
#Minimo/Maximo Memoria Kernel#
##############################
#Si se presenta un error como: ERR [Got unexpected memory map file size 1524, expected 9217524] entonces consultar el wiki de Zoneminder.
#www.zoneminder.com/wiki/index.php/FAQ#What_does_a_.27Can.27t_shmget:_Invalid_argument.27_error_in_my_logs_mean.3F_and_my_cameras_won.27t_display_video_at_higher_resolutions
#Se edita el archivo sysctl.conf

nano /etc/sysctl.conf

#Se agrega al final del archivo lo siguiente dejando una linea en blanco de ultimo

kernel.shmall = 167772160
kernel.shmmax = 167772160

#Se reinicia el sistema

reboot

##############################
#Instalar paquetes necesarios#
##############################

#No olvidar volverse root nuevamente con: su

aptitude install acpid build-essential linux-headers-`uname -r` automake perl libauthen-pam-perl \
apache2 libpam-runtime libio-pty-perl libmysqlclient-dev php5 php5-cli libapache2-mod-php5 php5-mysql \
libarchive-zip-perl libdate-manip-perl libdevice-serialport-perl libjpeg62 libmime-perl libstdc++6 libwww-perl \
zlib1g zip unzip patch ntp openssl libpcre3-dev libssl-dev libjpeg-progs libcurl4-gnutls-dev munin munin-node libmime-lite-perl \
netpbm libbz2-dev subversion yasm libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions git-core mysql-server mysql-client

#############################
#Descargar e Instalar Webmin#
#############################

wget http://downloads.sourceforge.net/project/webadmin/webmin/1.570/webmin_1.570_all.deb?use_mirror=voxel

mv webmin_1.570_all.deb\?use_mirror=voxel webmin_1.570_all.deb && \
dpkg -i webmin_1.570_all.deb

############################################
#Descargar e instalar libjpeg-turbo# (AMD64)
############################################

wget http://downloads.sourceforge.net/project/libjpeg-turbo/1.1.1/libjpeg-turbo_1.1.1_amd64.deb?use_mirror=voxel

mv libjpeg-turbo_1.1.1_amd64.deb?use_mirror=voxel libjpeg-turbo_1.1.1_amd64.deb && \
dpkg -i libjpeg-turbo_1.1.1_amd64.deb

#Se crean enlaces

ln -s /opt/libjpeg-turbo/lib/libjpeg.a /usr/lib/libjpeg.a && \
ln -s /opt/libjpeg-turbo/include/jconfig.h /usr/include/jconfig.h && \
ln -s /opt/libjpeg-turbo/include/jerror.h /usr/include/jerror.h && \
ln -s /opt/libjpeg-turbo/include/jmorecfg.h /usr/include/jmorecfg.h && \
ln -s /opt/libjpeg-turbo/include/jpeglib.h /usr/include/jpeglib.h

###########################
#Configurar rutas para Lib#
##########################

echo "/opt/libjpeg-turbo/lib" > /etc/ld.so.conf.d/libjpeg-turbo.conf && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/ffmpeg.conf && \
echo "LD_LIBRARY_PATH=/usr/local/lib:/opt/libjpeg-turbo/lib:$LD_LIBRARY_PATH" >> /etc/bash.bashrc && \
echo "export LD_LIBRARY_PATH" >> /etc/bash.bashrc

ldconfig

##########################
#Instalar modulos de Perl#
##########################

#Ejecutar linea por linea y esperar a que descargue los modulos de Perl 

perl -MCPAN -e shell

install CPAN

exit

perl -MCPAN -e shell

install YAML PHP::Serialization Module::Load X10::ActiveHome

exit

LC_ALL=C perl -MCPAN -e shell

install Sys::Mmap

install DBI

install DBD::mysql

exit

#################
#Instalar FFmpeg#
#################
#Version de FFMPEG 0.10

cd /usr/src && wget http://ffmpeg.org/releases/ffmpeg-0.10.tar.gz

tar -xzvf ffmpeg-0.10.tar.gz

mv ffmpeg-0.10 ffmpeg

#Preparar y compilar FFmpeg

cd /usr/src/ffmpeg/ && ./configure --enable-gpl --enable-shared --enable-pthreads --enable-libx264 --enable-libfaac --enable-nonfree --enable-x11grab --enable-version3

make

make install

make install-libs

cd /lib && ln -s /usr/local/lib/libswscale.so.0 && \
ln -s /usr/local/lib/libavformat.so.52 && \
ln -s /usr/local/lib/libavcodec.so.52 && \
ln -s /usr/local/lib/libavutil.so.50 && \
ln -s /usr/local/lib/libavdevice.so.52

ldconfig

#####################
##Instalar Zoneminder#
#####################

cd /usr/src 

wget http://www.zoneminder.com/downloads/ZoneMinder-1.25.0.tar.gz

tar -xzvf ZoneMinder-1.25.0.tar.gz

mv ZoneMinder-1.25.0 zm

#Con las siguientes lineas se dan los parametros para el archivo de configuracion de Zoneminder
#Cuidado con los datos en: ZM_DB_HOST=localhost ZM_DB_NAME=zm ZM_DB_USER=zmuser ZM_DB_PASS=zmpass 
#Esos datos son necesarios para la comunicacion de ZM con Mysql 

cd /usr/src/zm && \ 
./configure --with-webdir=/var/www/zm --with-cgidir=/usr/lib/cgi-bin \
ZM_DB_HOST=localhost ZM_DB_NAME=zm ZM_DB_USER=zmuser \
ZM_DB_PASS=zmpass ZM_SSL_LIB=openssl --enable-debug=no \
--with-webgroup=www-data --with-webuser=www-data --enable-mmap=yes CPPFLAGS="-D__STDC_CONSTANT_MACROS ${CPPFLAGS}"

autoconf

aclocal

automake

make

#Se conecta a Mysql para crear la BD necesaria para Zoneminder.

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

#La contraseña solicitada es la que se ingreso para root de Mysql durante la instalación de paquetes. No es contraseña del sistema.

mysql -u root -p

#A continuacion usar los datos ingresados arriba para el archivo de configuracion de Zoneminder.

grant select,insert,update,delete on zm.* to 'zmuser'@localhost identified by 'zmpass';

quit

mysqladmin -p reload

#Se termina de compilar y se instala ZM

make install

####################
#Instalar Cambozola#
####################

cd /usr/src && wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz

tar -xzvf cambozola-latest.tar.gz

#Cambiar las xx con el numero de version descargada de cambozola

cp cambozola-0.xx/dist/cambozola.jar /var/www/zm

##########################################
##Crear el script que iniciará ZoneMinder#
##########################################

nano -w /etc/init.d/zm

#Copiar todo lo que se encuentra entre las lineas de abajo y pegarlo en el archivo zm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#!/bin/sh
### BEGIN INIT INFO
# Provides:          ZM
# Required-Start:    $network mysql $local_fs 
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: <Enter a short description of the sortware>
# Description:       <Enter a long description of the software>
#                    <...>
#                    <...>
### END INIT INFO

prog=ZoneMinder
ZM_PATH_BIN="/usr/local/bin"
command="$ZM_PATH_BIN/zmpkg.pl"

start() {
        echo -n "Starting $prog: "
        $command start
        RETVAL=$?
        [ $RETVAL = 0 ] && echo success
        [ $RETVAL != 0 ] && echo failure
        return $RETVAL
}
stop() {
        echo -n "Stopping $prog: "
        $command stop
        RETVAL=$?
        [ $RETVAL = 0 ] && echo success
        [ $RETVAL != 0 ] && echo failure
}
status() {
        result=`$command status`
        if [ "$result" = "running" ]; then
                echo "ZoneMinder is running"
                RETVAL=0
        else
                echo "ZoneMinder is stopped"
                RETVAL=1
        fi
}

case "$1" in
'start')
        start
        ;;
'stop')
        stop
        ;;
'restart')
        stop
        start
        ;;
'status')
        status
        ;;
*)
        echo "Usage: $0 { start | stop | restart | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#Presionar Ctrl + O para guardar y Ctrl + X para salir de nano

#Se dan permisos de ejecución al archivo

chmod 755 /etc/init.d/zm

#Se asigna un usuario especifico al directorio /tmp/zm

chown www-data:www-data -R /tmp/zm

###########################
#Inicio de Zoneminder#
###########################
#Si no existieron errores en la compilacion se puede iniciar ZM para ver si todo funciona correctamente

/etc/init.d/zm start

#En Firefox, ir a http://Tu_IP_Zoneminder/zm y aparecerá la interfaz de ZM

###########################
#Auto-Inicio de Zoneminder#
###########################

#En Firefox, ir a https://Tu_IP_ZoneMinder:10000 para ver la interfaz de Webmin. (Usar el usuario root y contraseña de Debian)

#En el menu de la izquierda, ir a "System" > "Bootup and Shutdown". Buscar y seleccionar zm y hacer click en "StartNow and On Boot"

#################################
#Extras (No necesarios para ZM )#
#################################

#Si se desea ingresar directamente a ZM con solo poner IP o dominio hacer lo siguiente en Webmin. 
#En el menu de la izquierda, ir a "Servers" > "Apache Webserver" Hacer click en "Virtual Server". En "Document Root" se debe cambiar de /var/www a /var/www/zm y luego click en Save.
#Por ultimo, en la parte superior derecha hacer click en "Apply changes"
#En el mismo menu de Webmin es posible cambiar el puerto predeterminado (80). Al cambiarlo tambien se debe editar el archivo /etc/apache2/ports.conf y colocar el nuevo puerto.

######################
# Pequeños Problemas #
######################

#Si se agrega un nuevo monitor o se modifica un existente y se quiere usar la funcion Probe muestra un error: Unable to probe network cameras, status is '127'
#Para solucionar el error editamos como root el archivo /skins/classic/views/monitorprobe.php y buscamos la linea $command = "arp -a";
#Esa linea se sustituye con: $command = "/usr/sbin/arp -a";
#Ya debe funcionar Probe.