www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> Zoneminder
Установка системы видеонаблюдения Zoneminder на FreeBSD 7.0
Автор: densan.
Имеем
media# uname -vFreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008
root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
| Чуть позже ставил на 7.1 установка аналогичная
Ставим апач
media# cd /usr/ports/www/apache22
| оставляю все без изменеий
media# make showconfig
APR_FROM_PORTS=off "Use devel/apr as APR (beware!)"
THREADS=off "Enable threads support in APR"
MYSQL=off "Enable MySQL support for apr-dbd"
PGSQL=off "Enable PostgreSQL support for apr-dbd"
SQLITE=off "Enable SQLite support for apr-dbd"
IPV6=off "Enable IPv6 support"
BDB=off "Enable BerkeleyDB dbm"
AUTH_BASIC=on "Enable mod_auth_basic"
AUTH_DIGEST=on "Enable mod_auth_digest"
AUTHN_FILE=on "Enable mod_authn_file"
AUTHN_DBD=off "Enable mod_authn_dbd"
AUTHN_DBM=on "Enable mod_authn_dbm"
AUTHN_ANON=on "Enable mod_authn_anon"
AUTHN_DEFAULT=on "Enable mod_authn_default"
AUTHN_ALIAS=on "Enable mod_authn_alias"
AUTHZ_HOST=on "Enable mod_authz_host"
AUTHZ_GROUPFILE=on "Enable mod_authz_groupfile"
AUTHZ_USER=on "Enable mod_authz_user"
AUTHZ_DBM=on "Enable mod_authz_dbm"
AUTHZ_OWNER=on "Enable mod_authz_owner"
AUTHZ_DEFAULT=on "Enable mod_authz_default"
CACHE=on "Enable mod_cache"
DISK_CACHE=on "Enable mod_disk_cache"
FILE_CACHE=on "Enable mod_file_cache"
MEM_CACHE=off "Enable mod_mem_cache"
DAV=on "Enable mod_dav"
DAV_FS=on "Enable mod_dav_fs"
BUCKETEER=off "Enable mod_bucketeer"
CASE_FILTER=off "Enable mod_case_filter"
CASE_FILTER_IN=off "Enable mod_case_filter_in"
EXT_FILTER=off "Enable mod_ext_filter"
LOG_FORENSIC=off "Enable mod_log_forensic"
OPTIONAL_HOOK_EXPORT=off "Enable mod_optional_hook_export"
OPTIONAL_HOOK_IMPORT=off "Enable mod_optional_hook_import"
OPTIONAL_FN_IMPORT=off "Enable mod_optional_fn_import"
OPTIONAL_FN_EXPORT=off "Enable mod_optional_fn_export"
LDAP=off "Enable mod_ldap"
AUTHNZ_LDAP=off "Enable mod_authnz_ldap"
ACTIONS=on "Enable mod_actions"
ALIAS=on "Enable mod_alias"
ASIS=on "Enable mod_asis"
AUTOINDEX=on "Enable mod_autoindex"
CERN_META=on "Enable mod_cern_meta"
CGI=on "Enable mod_cgi"
CHARSET_LITE=on "Enable mod_charset_lite"
DBD=off "Enable mod_dbd"
DEFLATE=on "Enable mod_deflate"
DIR=on "Enable mod_dir"
DUMPIO=on "Enable mod_dumpio"
ENV=on "Enable mod_env"
EXPIRES=on "Enable mod_expires"
HEADERS=on "Enable mod_headers"
IMAGEMAP=on "Enable mod_imagemap"
INCLUDE=on "Enable mod_include"
INFO=on "Enable mod_info"
LOG_CONFIG=on "Enable mod_log_config"
LOGIO=on "Enable mod_logio"
MIME=on "Enable mod_mime"
MIME_MAGIC=on "Enable mod_mime_magic"
NEGOTIATION=on "Enable mod_negotiation"
REWRITE=on "Enable mod_rewrite"
SETENVIF=on "Enable mod_setenvif"
SPELING=on "Enable mod_speling"
STATUS=on "Enable mod_status"
UNIQUE_ID=on "Enable mod_unique_id"
USERDIR=on "Enable mod_userdir"
USERTRACK=on "Enable mod_usertrack"
VHOST_ALIAS=on "Enable mod_vhost_alias"
FILTER=on "Enable mod_filter"
VERSION=on "Enable mod_version"
PROXY=off "Enable mod_proxy"
PROXY_CONNECT=off "Enable mod_proxy_connect"
PROXY_FTP=off "Enable mod_proxy_ftp"
PROXY_HTTP=off "Enable mod_proxy_http"
PROXY_AJP=off "Enable mod_proxy_ajp"
PROXY_BALANCER=off "Enable mod_proxy_balancer"
SSL=on "Enable mod_ssl"
SUEXEC=off "Enable mod_suexec"
CGID=off "Enable mod_cgid"
===> Use 'make config' to modify these settings
media# make install clean
| Ставим php5
media# cd /usr/ports/lang/php5
| Я выбрал такой конфиг.
media# make showconfig
===> The following configuration options are available for php5-5.2.8:
CLI=on "Build CLI version"
CGI=on "Build CGI version"
APACHE=on "Build Apache module"
DEBUG=off "Enable debug"
SUHOSIN=on "Enable Suhosin protection system (not for jails)"
MULTIBYTE=off "Enable zend multibyte support"
IPV6=on "Enable ipv6 support"
MAILHEAD=off "Enable mail header patch"
REDIRECT=off "Enable force-cgi-redirect support (CGI only)"
DISCARD=off "Enable discard-path support (CGI only)"
FASTCGI=on "Enable fastcgi support (CGI only)"
PATHINFO=on "Enable path-info-check support (CGI only)"
media# make install clean
| в /usr/local/etc/apache22/httpd.conf добавляем строки
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
| Ставим mysql
media# cd /usr/ports/databases/mysql51-server
media# make install clean
| Ставим php5-extentions
media# cd /usr/ports/lang/php5-extensions
media# make install clean
| у меня такой конфиг
media# make showconfig
===> The following configuration options are available for php5-extensions-1.2:
BCMATH=off "bc style precision math functions"
BZ2=off "bzip2 library support"
CALENDAR=off "calendar conversion support"
CTYPE=on "ctype functions"
CURL=off "CURL support"
DBA=off "dba support"
DBASE=off "dBase library support"
DOM=on "DOM support"
EXIF=off "EXIF support"
FILEINFO=off "fileinfo support"
FILTER=on "input filter support"
FRIBIDI=off "FriBidi support"
FTP=off "FTP support"
GD=off "GD library support"
GETTEXT=off "gettext library support"
GMP=off "GNU MP support"
HASH=on "HASH Message Digest Framework"
ICONV=on "iconv support"
IMAP=off "IMAP support"
INTERBASE=off "Interbase 6 database support (Firebird)"
JSON=on "JavaScript Object Serialization support"
LDAP=off "OpenLDAP support"
MBSTRING=off "multibyte string support"
MCRYPT=on "Encryption support"
MHASH=on "Crypto-hashing support"
MING=off "ming shockwave flash support"
MSSQL=off "MS-SQL database support"
MYSQL=on "MySQL database support"
MYSQLI=off "MySQLi database support"
NCURSES=off "ncurses support (CLI only)"
ODBC=off "unixODBC support"
OPENSSL=off "OpenSSL support"
PCNTL=off "pcntl support (CLI only)"
PDF=off "PDFlib support (implies GD)"
PDO=on "PHP Data Objects Interface (PDO)"
PDO_SQLITE=on "PDO sqlite driver"
PGSQL=off "PostgreSQL database support"
POSIX=on "POSIX-like functions"
PSPELL=off "pspell support"
READLINE=off "readline support (CLI only)"
RECODE=off "recode support"
SESSION=on "session support"
SHMOP=off "shmop support"
SIMPLEXML=on "simplexml support"
SNMP=off "SNMP support"
SOAP=off "SOAP support"
SOCKETS=off "sockets support"
SPL=on "Standard PHP Library"
SQLITE=on "sqlite support"
SYBASE_CT=off "Sybase database support"
SYSVMSG=off "System V message support"
SYSVSEM=off "System V semaphore support"
SYSVSHM=off "System V shared memory support"
TIDY=off "TIDY support"
TOKENIZER=on "tokenizer support"
WDDX=off "WDDX support (implies XML)"
XML=on "XML support"
XMLREADER=on "XMLReader support"
XMLRPC=off "XMLRPC-EPI support"
XMLWRITER=on "XMLWriter support"
XSL=off "XSL support (Implies DOM)"
YAZ=off "YAZ support (ANSI/NISO Z39.50)"
ZIP=on "ZIP support"
ZLIB=off "ZLIB support"
===> Use 'make config' to modify these settings
| Создаем файл /usr/local/www/apache22/data/info.php такого содержания.
cat /usr/local/www/apache22/data/info.php
<?
phpinfo();
?>
| добавляем в /etc/rc.conf
apache22_enable="YES"
mysql_enable="YES"
| Стартуем апач
/usr/local/etc/rc.d/apache22 start
| проверяем работу апача с PHP. Входим на страницу http://IP-сервера/info.php. Должны увидеть страницу с информацией об установленом PHP.
Скачиваем Zoneminder, распаковываем и переносим в /usr/ports/multimedia/
media# cd /tmp/media
# fetch http://matrix.gatewaynet.com/panix/zoneminder.tar.gz
media# tar zxvf zoneminder.tar.gz
zoneminder/x
zoneminder/files/x
zoneminder/files/patch-configurex
zoneminder/files/zm_fbsd_camera.cppx
zoneminder/files/videodev.h
...
media# mv zoneminder /usr/ports/multimedia/
media# cd /usr/ports/multimedia/zoneminder/
| Правим Makefile
т.к. стоит Апач2 исправим mod_perl на mod_perl2, mysql50-server на mysql51-server, p5-DBD-mysql50 на p5-DBD-mysql51. Правим строку WEBBASE= ${LOCALBASE}/www/apache22
выбрал такой конфиг для ffmpeg (снял галки на счет аудиокодеков)
make showconfig
===> The following configuration options are available for ffmpeg-2008.07.27_7:
AMR_NB=off "AMR narrowband encoder"
AMR_WB=off "AMR wideband encoder"
FAAC=off "FAAC mp4/aac audio encoder"
FAAD=off "FAAD mp4/aac audio decoder"
GSM=off "gsm audio codec"
IPV6=off "IPV6 network support"
LAME=off "lame MP3 codec"
LIBA52=on "liba52 support"
OPTIMIZED_CFLAGS=off "Additional optimizations"
SDL=off "SDL support (build ffplay)"
THEORA=on "libtheora support (implies OGG)"
VORBIS=on "libvorbisenc support (implies OGG)"
X264=on "X.264 codec"
XVID=off "XVID codec"
===> Use 'make config' to modify these settings
| после установки ffmpeg вывалилась ошибка
aclocal-1.10: not found
WARNING: `aclocal-1.10' is missing on your system. You should only need it if
you modified `acinclude.m4' or `configure.in'. You might want
to install the `Automake' and `Perl' packages. Grab them from
any GNU archive site.
cd . && /bin/sh /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/missing --run automake-1.10 --gnu
automake-1.10: not found
WARNING: `automake-1.10' is missing on your system.
You should only need it if
you modified `Makefile.am', `acinclude.m4' or `configure.in'.
You might want to install the `Automake' and `Perl' packages.
Grab them from any GNU archive site.
cd . && /bin/sh /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/missing --run autoconf
aclocal.m4:14: error: this file was generated for autoconf 2.61.
You have another version of autoconf. If you want to use that,
you should regenerate the build system entirely.
aclocal.m4:14: the top level
autom4te-2.62: /usr/local/bin/gm4 failed with exit status: 63
*** Error code 1
Stop in /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3.
*** Error code 1
Stop in /usr/ports/multimedia/zoneminder.
| Проблема в том что порт был построен с использованием autoconf 2.61 и автор порта не хочет его переделывать. Предложили следующее решение. Скачать файлы aclocal.m4 и acinclude.m4 в каталог /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/src, добавить в Makefile строчки
m4
|
файл
|
скачан
|
размер
|
размещён
|
примечание
|
|
1008
|
10.9kb
|
2009-01-29
|
m4
|
|
MAKE_ARGS= ACLOCAL="${TRUE}" AUTOCONF="${TRUE}" AUTOMAKE="${TRUE}"
USE_AUTOTOOLS= autoconf:262:env
USE_AUTOTOOLS= aclocal:110 /usr/local/bin/autoheader:262
|
У кого-то прокатило и без этих файлов, только правкой Makefile.
и заново
опять ошибка
zm_mpeg.cpp: In destructor 'VideoStream::~VideoStream()':
zm_mpeg.cpp:281: error: cannot convert 'ByteIOContext**'
to 'ByteIOContext*' for argument '1' to 'int url_fclose(ByteIOContext*)'
*** Error code 1
| в /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/src/zm_mpeg.cpp на 281 и 283 строках вносим изменения:
за место url_fclose(&ofc->pb);
url_fclose(ofc->pb);
| media# make install
В этот раз у меня все прошло без ошибок.
добавляем в /etc/rc.conf zm_enable="YES".
Стартуем mysql, входим и создаем БД.
media# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
media# mysql -h localhost -u root -p
mysql: Команда не найдена.
media# rehash
media# mysql -h localhost -u root -p
Enter password:
mysql> source /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/db/zm_create.sql;
mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost identified by 'zmpass'; flush privileges;
mysql> quit
media# ee /usr/local/etc/apache22/httpd.conf
| добавляем
<VirtualHost *:80>
DocumentRoot /usr/local/www/apache22/data/zm
DirectoryIndex index.php
</VirtualHost>
| Теперь нужно пересобрать ядро с параметрами (эти параметры работали у меня с 3 камерами axis206)
options SHMMAXPGS=65536
options SHMMNI=384
options SHMSEG=256
| у меня после перезагрузки ZM не стартовал, т.к. не видел базу, пришлось в раскомментировать /usr/local/etc/rc.d/zm sleep 10
несколько правок.
Это чтобы работал экпорт видео.
media# cd /usr/local/bin/
media# fetch http://www.hamsterleymill.co.uk/zmvideo.patch
media# patch < zmvideo.patch
Hmm... Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** ./zmvideo.pl Mon Dec 29 02:01:13 2008
|--- ./zmvideo2.pl Mon Dec 29 01:53:19 2008
--------------------------
Patching file ./zmvideo.pl using Plan A...
Hunk #1 succeeded at 319.done
media#
|
zmvideo.patch
|
файл
|
скачан
|
размер
|
размещён
|
примечание
|
|
931
|
0.9kb
|
2009-03-17
|
zmvideo.patch
|
|
Это чтоб показывалось видео а не картинки в браузере.
media# pwd
/root
media# fetch http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
media# tar zxvf cambozola-latest.tar.gz
cambozola-0.70/
cambozola-0.70/bldsrc/
cambozola-0.70/bldsrc/com/
cambozola-0.70/bldsrc/com/charliemouse/
cambozola-0.70/bldsrc/com/charliemouse/embed/
...
media# cp cambozola-0.70/dist/cambozola.jar /usr/local/www/apache22/data/zm/
| перезапускаем апач
free# /usr/local/etc/rc.d/apache22 restart
| и пробуем войти http://ip-сервера
Нажимаем на кнопку Add New Monitor открывается окно
В Zoneminder уже есть несколько шаблонов для камер. Нажимаем Presets и выбираем камеру
я выбрал Axis IP, 640x480,jpeg. Заполняем поля
Пояснение по режимам: None (и так понятно), Monitor (только просмотр), Modetect (запись только движения что я использую), Record (постоянная запись), Mocord (тоже что и Record, но дополнительно выделяются те области где было замечено движение).
Если доступ к просмотру камеры ограничен по логину/паролю, то в Remote Host Name пишем login:password@IP.
Параметры Remote Image Colors, Capture Width (pixels), Capture Height (pixels) должны быть поставлены те, что на камере.Сохраняем. Делаем это для всех камер.
Теперь сделаем чтоб вход был по логину паролю.
Щелкаем по Options в ZM_OPT_USE_AUTH ставим галку. Нажимаем Save. Обновляем страницу, входим по логину/паролю admin/admin. Заходим в Options - появилась новая вкладка Users. Меняем пароль для админа, заводим при необходимости новых пользователей. Сохраняем.
Чтобы события новын были в списке событий первыми ставим WEB-ZM_WEB_EVENT_SORT_ORDER-desc.
Для просмотра видео-потока с IE ставим
При этом на компьютере должна быть установлена Java
По умолчанию ZM пишет события в каталог events в папке в моем случае /usr/local/www/apache22/data/zm. Я перенес этут папку на отдельный HDD, создал симлинк. Если вы планируете писать большое количество событий, то дабы избежать лимита на 32К подкаталогов на UFS (http://forum.lissyara.su/viewtopic.php?f=8&t=13701&p=126748#p126748) или используйте ZFS либо используйте Paths-ZM_USE_DEEP_STORAGE которая пока в ZM еще в стадии беты.
Т.к. видеонаблюдения я ставил в офисе, чтобы избежать ложных срабатываний посчитал нужным ограничить активные зоны - зоны, движение в которых записывается.
Для этого на главной странице на против нужной камеры в стобце Zone щелкаем на 1. Откроется окно в котором щелкаем на All и добавляя и передвигая точки контура делаем нужную вам активную зону
Сохраняем. При записи будут записываться посетители и не будут телодвижения секретаря руководителя и мелькания на экране монитора.
В данной статье описал всего-лишь первичную настройку Zoneminder.
Обсуждение.
размещено: 2009-01-29,
последнее обновление: 2009-03-17,
автор: densan
|
Комментарии пользователей [20 шт.]