ZoneMinder: различия между версиями

Материал из Webko Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Категория:Видеонаблюдение»)
 
 
Строка 1: Строка 1:
 
[[Категория:Видеонаблюдение]]
 
[[Категория:Видеонаблюдение]]
 +
ZoneMinder - свободное программное обеспечение, для организации видеонаблюдения под лицензией GNU GPL. Официальный сайт - http://www.zoneminder.com/
 +
 +
==Базовая установка CentOS==
 +
 +
Версия 6.6, х64, minimal
 +
 +
cd
 +
Перед началом необходимо добавить репозитории:
 +
 +
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
 +
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
 +
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
 +
После установки необходимо включить «remi»: отредактировать файл /etc/yum.repos.d/remi.repo, поменяв с enable=0 на enable=1 в разделах [remi] и [remi-php55]
 +
 +
wget http://dl.atrpms.net/el6.2-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm
 +
rpm -ihv atrpms-repo-6-7.el6.x86_64.rpm
 +
и еще один создаем сами для mariadb: Этот репозиторий взят с сайта postgre https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi
 +
 +
cat << EOT > /etc/yum.repos.d/mariadb.repo
 +
# MariaDB 10.0 CentOS repository list - created 2015-04-16 11:23 UTC
 +
# http://mariadb.org/mariadb/repositories/
 +
[mariadb]
 +
name = MariaDB
 +
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
 +
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
 +
gpgcheck=1
 +
EOT
 +
Далее, обновить.
 +
 +
yum update -y
 +
 +
==Отключение сервисов==
 +
Необходимо отключить SELinux. Для этого в файле /etc/selinux/config заменить
 +
 +
SELINUX=enforced
 +
на
 +
 +
SELINUX=disabled
 +
Необходимо отключить IPTables:
 +
 +
chkconfig iptables off
 +
и
 +
 +
chkconfig ip6tables off
 +
После чего перезагрузить сервер.
 +
 +
==Установка дополнительного ПО==
 +
 +
yum install man man-pages jwhois bind-utils mc wget which tcpdump traceroute ntp vim telnet net-snmp net-snmp-utils mlocate unzip htop sysstat gd dos2unix bison glib2-devel perl-CPAN redhat-rpm-config rpm-build
 +
 +
==Установка OpenSSL==
 +
 +
yum install openssl-devel openssl-perl openssl-static
 +
 +
==Установка и настройка MySQL / MariaDB==
 +
 +
yum install MariaDB-client MariaDB-devel MariaDB-server
 +
 +
Шаблон конфигурации
 +
 +
<source lang="bash">
 +
[client]
 +
port            = 3306
 +
socket          = /var/lib/mysql/mysql.sock
 +
 +
#
 +
# The MariaDB server
 +
#
 +
[mysqld]
 +
 +
user=mysql
 +
datadir=/var/lib/mysql
 +
socket=/var/lib/mysql/mysql.sock
 +
symbolic-links=0
 +
bind-address = 127.0.0.1
 +
 +
port            = 3306
 +
socket          = /var/lib/mysql/mysql.sock
 +
back_log = 50
 +
#skip-networking
 +
max_connections = 100
 +
max_connect_errors = 10
 +
table_open_cache = 2048
 +
#external-locking
 +
max_allowed_packet = 16M
 +
binlog_cache_size = 1M
 +
max_heap_table_size = 64M
 +
read_buffer_size = 2M
 +
read_rnd_buffer_size = 16M
 +
sort_buffer_size = 8M
 +
join_buffer_size = 8M
 +
thread_cache_size = 8
 +
thread_concurrency = 8
 +
query_cache_size = 64M
 +
query_cache_limit = 2M
 +
ft_min_word_len = 4
 +
#memlock
 +
default-storage-engine = INNODB
 +
thread_stack = 240K
 +
transaction_isolation = REPEATABLE-READ
 +
tmp_table_size = 64M
 +
#log-bin=mysql-bin
 +
#binlog_format=mixed
 +
#log_slave_updates
 +
#log
 +
#log_warnings
 +
slow_query_log
 +
long_query_time = 2
 +
tmpdir = /tmp
 +
 +
#*** MyISAM Specific options
 +
 +
key_buffer_size = 32M
 +
bulk_insert_buffer_size = 64M
 +
myisam_sort_buffer_size = 128M
 +
myisam_max_sort_file_size = 10G
 +
myisam_repair_threads = 1
 +
myisam_recover
 +
 +
# *** INNODB Specific options ***
 +
 +
#skip-innodb
 +
#innodb_additional_mem_pool_size = 16M
 +
innodb_buffer_pool_size = 2G
 +
innodb_data_file_path = ibdata1:10M:autoextend
 +
#innodb_data_home_dir = <directory>
 +
innodb_write_io_threads = 8
 +
innodb_read_io_threads = 8
 +
#innodb_force_recovery=1
 +
innodb_thread_concurrency = 16
 +
innodb_flush_log_at_trx_commit = 1
 +
#innodb_fast_shutdown
 +
innodb_log_buffer_size = 8M
 +
innodb_log_file_size = 256M
 +
innodb_log_files_in_group = 3
 +
#innodb_log_group_home_dir
 +
innodb_max_dirty_pages_pct = 90
 +
#innodb_flush_method=O_DSYNC
 +
innodb_lock_wait_timeout = 120
 +
 +
[mysqldump]
 +
quick
 +
max_allowed_packet = 16M
 +
 +
[mysql]
 +
no-auto-rehash
 +
 +
[myisamchk]
 +
key_buffer_size = 512M
 +
sort_buffer_size = 512M
 +
read_buffer = 8M
 +
write_buffer = 8M
 +
 +
[mysqlhotcopy]
 +
interactive-timeout
 +
 +
[mysqld_safe]
 +
open-files-limit = 8192
 +
 +
log-error=/var/log/mysqld.log
 +
pid-file=/var/run/mysqld/mysqld.pid
 +
!includedir /etc/my.cnf.d
 +
</source>
 +
 +
Запускаем сервис
 +
 +
service mysql start
 +
Настраиваем:
 +
 +
/usr/bin/mysql_secure_installation
 +
Включаем в автозагрузку
 +
 +
chkconfig mysql on
 +
 +
==Установка ImageMagick==
 +
 +
yum install ImageMagick ImageMagick-c++ ImageMagick-devel ImageMagick-perl
 +
 +
==Установка Apache==
 +
 +
yum install httpd httpd-devel mod_ssl
 +
 +
Поправил конфигурационный файл /etc/httpd/conf/httpd.conf
 +
 +
<source lang="bash">
 +
### Section 1: Global Environment
 +
#
 +
TraceEnable Off
 +
ServerTokens Prod
 +
ServerRoot "/etc/httpd"
 +
PidFile run/httpd.pid
 +
Timeout 300
 +
KeepAlive On
 +
MaxKeepAliveRequests 100
 +
KeepAliveTimeout 15
 +
 +
##
 +
## Server-Pool Size Regulation (MPM specific)
 +
##
 +
 +
<IfModule prefork.c>
 +
StartServers      8
 +
MinSpareServers    5
 +
MaxSpareServers  20
 +
ServerLimit      256
 +
MaxClients      256
 +
MaxRequestsPerChild  4000
 +
</IfModule>
 +
 +
<IfModule worker.c>
 +
StartServers        4
 +
MaxClients        300
 +
MinSpareThreads    25
 +
MaxSpareThreads    75
 +
ThreadsPerChild    25
 +
MaxRequestsPerChild  0
 +
</IfModule>
 +
 +
Listen 80
 +
 +
#
 +
# Dynamic Shared Object (DSO) Support
 +
#
 +
 +
LoadModule auth_basic_module modules/mod_auth_basic.so
 +
LoadModule auth_digest_module modules/mod_auth_digest.so
 +
LoadModule authn_file_module modules/mod_authn_file.so
 +
LoadModule authn_alias_module modules/mod_authn_alias.so
 +
LoadModule authn_anon_module modules/mod_authn_anon.so
 +
LoadModule authn_dbm_module modules/mod_authn_dbm.so
 +
LoadModule authn_default_module modules/mod_authn_default.so
 +
LoadModule authz_host_module modules/mod_authz_host.so
 +
LoadModule authz_user_module modules/mod_authz_user.so
 +
LoadModule authz_owner_module modules/mod_authz_owner.so
 +
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
 +
LoadModule authz_dbm_module modules/mod_authz_dbm.so
 +
LoadModule authz_default_module modules/mod_authz_default.so
 +
LoadModule ldap_module modules/mod_ldap.so
 +
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
 +
LoadModule include_module modules/mod_include.so
 +
LoadModule log_config_module modules/mod_log_config.so
 +
LoadModule logio_module modules/mod_logio.so
 +
LoadModule env_module modules/mod_env.so
 +
LoadModule ext_filter_module modules/mod_ext_filter.so
 +
LoadModule mime_magic_module modules/mod_mime_magic.so
 +
LoadModule expires_module modules/mod_expires.so
 +
LoadModule deflate_module modules/mod_deflate.so
 +
LoadModule headers_module modules/mod_headers.so
 +
LoadModule usertrack_module modules/mod_usertrack.so
 +
LoadModule setenvif_module modules/mod_setenvif.so
 +
LoadModule mime_module modules/mod_mime.so
 +
LoadModule dav_module modules/mod_dav.so
 +
LoadModule status_module modules/mod_status.so
 +
LoadModule autoindex_module modules/mod_autoindex.so
 +
LoadModule info_module modules/mod_info.so
 +
LoadModule dav_fs_module modules/mod_dav_fs.so
 +
LoadModule vhost_alias_module modules/mod_vhost_alias.so
 +
LoadModule negotiation_module modules/mod_negotiation.so
 +
LoadModule dir_module modules/mod_dir.so
 +
LoadModule actions_module modules/mod_actions.so
 +
LoadModule speling_module modules/mod_speling.so
 +
LoadModule userdir_module modules/mod_userdir.so
 +
LoadModule alias_module modules/mod_alias.so
 +
LoadModule substitute_module modules/mod_substitute.so
 +
LoadModule rewrite_module modules/mod_rewrite.so
 +
LoadModule proxy_module modules/mod_proxy.so
 +
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
 +
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
 +
LoadModule proxy_http_module modules/mod_proxy_http.so
 +
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
 +
LoadModule proxy_connect_module modules/mod_proxy_connect.so
 +
LoadModule cache_module modules/mod_cache.so
 +
LoadModule suexec_module modules/mod_suexec.so
 +
LoadModule disk_cache_module modules/mod_disk_cache.so
 +
LoadModule cgi_module modules/mod_cgi.so
 +
LoadModule version_module modules/mod_version.so
 +
 +
#
 +
# Load config files from the config directory "/etc/httpd/conf.d".
 +
#
 +
Include conf.d/*.conf
 +
 +
User apache
 +
Group apache
 +
 +
### Section 2: 'Main' server configuration
 +
#
 +
 +
ServerAdmin root@localhost
 +
ServerName zm.pnv152.ru:80
 +
UseCanonicalName Off
 +
DocumentRoot "/var/www/html"
 +
 +
<Directory />
 +
    Options FollowSymLinks
 +
    Order deny,allow
 +
    AllowOverride All
 +
    Allow from all
 +
</Directory>
 +
 +
<Directory "/var/www/html">
 +
    Options FollowSymLinks
 +
    AllowOverride All
 +
    Order allow,deny
 +
    Allow from all
 +
</Directory>
 +
 +
<IfModule mod_userdir.c>
 +
    UserDir disabled
 +
</IfModule>
 +
 +
DirectoryIndex index.html index.html.var
 +
AccessFileName .htaccess
 +
 +
<Files ~ "^\.ht">
 +
    Order allow,deny
 +
    Deny from all
 +
    Satisfy All
 +
</Files>
 +
 +
TypesConfig /etc/mime.types
 +
 +
DefaultType text/plain
 +
 +
<IfModule mod_mime_magic.c>
 +
#  MIMEMagicFile /usr/share/magic.mime
 +
    MIMEMagicFile conf/magic
 +
</IfModule>
 +
 +
HostnameLookups Off
 +
EnableMMAP off
 +
EnableSendfile off
 +
ErrorLog logs/error_log
 +
LogLevel warn
 +
 +
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
 +
LogFormat "%h %l %u %t \"%r\" %>s %b" common
 +
LogFormat "%{Referer}i -> %U" referer
 +
LogFormat "%{User-agent}i" agent
 +
CustomLog logs/access_log common
 +
CustomLog logs/referer_log referer
 +
CustomLog logs/agent_log agent
 +
CustomLog logs/access_log combined
 +
ServerSignature Off
 +
 +
Alias /icons/ "/var/www/icons/"
 +
 +
<Directory "/var/www/icons">
 +
    Options Indexes MultiViews FollowSymLinks
 +
    AllowOverride None
 +
    Order allow,deny
 +
    Allow from all
 +
</Directory>
 +
 +
<IfModule mod_dav_fs.c>
 +
    DAVLockDB /var/lib/dav/lockdb
 +
</IfModule>
 +
 +
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
 +
 +
<Directory "/var/www/cgi-bin">
 +
    AllowOverride None
 +
    Options None
 +
    Order allow,deny
 +
    Allow from all
 +
</Directory>
 +
 +
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
 +
 +
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
 +
 +
AddIconByType (TXT,/icons/text.gif) text/*
 +
AddIconByType (IMG,/icons/image2.gif) image/*
 +
AddIconByType (SND,/icons/sound2.gif) audio/*
 +
AddIconByType (VID,/icons/movie.gif) video/*
 +
 +
AddIcon /icons/binary.gif .bin .exe
 +
AddIcon /icons/binhex.gif .hqx
 +
AddIcon /icons/tar.gif .tar
 +
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
 +
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
 +
AddIcon /icons/a.gif .ps .ai .eps
 +
AddIcon /icons/layout.gif .html .shtml .htm .pdf
 +
AddIcon /icons/text.gif .txt
 +
AddIcon /icons/c.gif .c
 +
AddIcon /icons/p.gif .pl .py
 +
AddIcon /icons/f.gif .for
 +
AddIcon /icons/dvi.gif .dvi
 +
AddIcon /icons/uuencoded.gif .uu
 +
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
 +
AddIcon /icons/tex.gif .tex
 +
AddIcon /icons/bomb.gif core
 +
 +
AddIcon /icons/back.gif ..
 +
AddIcon /icons/hand.right.gif README
 +
AddIcon /icons/folder.gif ^^DIRECTORY^^
 +
AddIcon /icons/blank.gif ^^BLANKICON^^
 +
 +
DefaultIcon /icons/unknown.gif
 +
 +
AddDescription "GZIP compressed document" .gz
 +
AddDescription "tar archive" .tar
 +
AddDescription "GZIP compressed tar archive" .tgz
 +
 +
ReadmeName README.html
 +
HeaderName HEADER.html
 +
 +
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
 +
 +
DefaultLanguage ru
 +
 +
AddLanguage ca .ca
 +
AddLanguage cs .cz .cs
 +
AddLanguage da .dk
 +
AddLanguage de .de
 +
AddLanguage el .el
 +
AddLanguage en .en
 +
AddLanguage eo .eo
 +
AddLanguage es .es
 +
AddLanguage et .et
 +
AddLanguage fr .fr
 +
AddLanguage he .he
 +
AddLanguage hr .hr
 +
AddLanguage it .it
 +
AddLanguage ja .ja
 +
AddLanguage ko .ko
 +
AddLanguage ltz .ltz
 +
AddLanguage nl .nl
 +
AddLanguage nn .nn
 +
AddLanguage no .no
 +
AddLanguage pl .po
 +
AddLanguage pt .pt
 +
AddLanguage pt-BR .pt-br
 +
AddLanguage ru .ru
 +
AddLanguage sv .sv
 +
AddLanguage zh-CN .zh-cn
 +
AddLanguage zh-TW .zh-tw
 +
 +
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
 +
 +
ForceLanguagePriority Prefer Fallback
 +
 +
AddDefaultCharset UTF-8
 +
 +
AddType application/x-tar .tgz
 +
AddEncoding x-compress .Z
 +
AddEncoding x-gzip .gz .tgz
 +
AddType application/x-compress .Z
 +
AddType application/x-gzip .gz .tgz
 +
AddType application/x-x509-ca-cert .crt
 +
AddType application/x-pkcs7-crl    .crl
 +
AddHandler cgi-script .cgi
 +
AddHandler send-as-is asis
 +
AddHandler type-map var
 +
AddType text/html .shtml
 +
AddOutputFilter INCLUDES .shtml
 +
 +
Alias /error/ "/var/www/error/"
 +
 +
<IfModule mod_negotiation.c>
 +
<IfModule mod_include.c>
 +
    <Directory "/var/www/error">
 +
        AllowOverride None
 +
        Options IncludesNoExec
 +
        AddOutputFilter Includes html
 +
        AddHandler type-map var
 +
        Order allow,deny
 +
        Allow from all
 +
        LanguagePriority en es de fr
 +
        ForceLanguagePriority Prefer Fallback
 +
    </Directory>
 +
</IfModule>
 +
</IfModule>
 +
 +
BrowserMatch "Mozilla/2" nokeepalive
 +
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
 +
BrowserMatch "RealPlayer 4\.0" force-response-1.0
 +
BrowserMatch "Java/1\.0" force-response-1.0
 +
BrowserMatch "JDK/1\.0" force-response-1.0
 +
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
 +
BrowserMatch "MS FrontPage" redirect-carefully
 +
BrowserMatch "^WebDrive" redirect-carefully
 +
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
 +
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
 +
BrowserMatch "^XML Spy" redirect-carefully
 +
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
 +
</source>
 +
 +
==Установка поддержки шрифтов TrueType==
 +
 +
cd
 +
yum install ttmkfdir cabextract libmspack
 +
yum install chkfontpath
 +
 +
wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec
 +
 +
Требуется изменить ссылку на целевые файлы в файле msttcorefonts-2.0-1.spec.
 +
<source lang="bash">
 +
function set_mirror {
 +
        local r m
 +
        r=`expr $RANDOM % $mirror_count + 1`
 +
        m=`echo $mirrors |cut -d+ -f$r`
 +
        mirror="http://${m}.dl.sourceforge.net/sourceforge/corefonts/"
 +
}
 +
</source>
 +
Ссылка должна выглядеть следующим образом:
 +
 +
mirror="http://${m}.dl.sourceforge.net/project/corefonts/the%20fonts/final/"
 +
 +
rpmbuild -bb msttcorefonts-2.0-1.spec
 +
 +
Сборка RPM пакета у меня обрывалась пару раз из-за обрыва связи с сервером исходных файлов. Например, так
 +
<source lang="bash">
 +
...
 +
+ m=umn
 +
+ mirror=http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/
 +
+ for f in '$download_files'
 +
+ check_file andale32.exe
 +
+ matches=
 +
+ '[' '!' -r andale32.exe ']'
 +
+ echo 'andale32.exe does not exist'
 +
andale32.exe does not exist
 +
+ return
 +
+ '[' '!' ']'
 +
+ download http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/ andale32.exe
 +
+ wget --timeout=5 -O andale32.exe http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
 +
--2013-07-06 00:22:34--  http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
 +
Resolving umn.dl.sourceforge.net... failed: Name or service not known.
 +
wget: unable to resolve host address `umn.dl.sourceforge.net'
 +
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)
 +
 +
Ошибки сборки пакетов:
 +
    line 19: buildprereq is deprecated: BuildPrereq: /usr/bin/ttmkfdir
 +
    line 20: buildprereq is deprecated: BuildPrereq: wget
 +
    line 21: buildprereq is deprecated: BuildPrereq: cabextract
 +
    line 22: prereq is deprecated: Prereq: /usr/sbin/chkfontpath
 +
    Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)
 +
</source>
 +
Если у вас возникнет такая же ситуация, просто повторите операцию сборки до тех пор, пока пакет не будет собран. При успешном выполнении, в консоли будет показан путь, куда был записан пакет. В моём случае:
 +
<source lang="bash">
 +
...
 +
Записан: /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
 +
</source>
 +
 +
Устанавливаем
 +
 +
rpm -ivh /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
 +
cd /usr/share/fonts/msttcorefonts
 +
mkfontscale
 +
mkfontdir
 +
mkdir -p /usr/share/fonts/default/TrueType
 +
cd /usr/share/fonts/default/TrueType
 +
find /usr/share/fonts/msttcorefonts/ -exec ln -s {} \;
 +
 +
==Установка и настройка PHP==
 +
Ставим php 5.5 (Если есть желание установить 5.6, то необходимо в remi.repo включить [remi-php56])
 +
 +
yum install php php-cli php-gd php-common php-devel php-mbstring php-snmp php-soap php-xml php-xmlrpc php-mcrypt php-mysqlnd php-pdo php-pear php-process
 +
Корректируем конфиг:
 +
 +
vim /etc/php.ini
 +
В этом файле нам необходимо найти указанную ниже строку и заменить Off на On
 +
 +
short_open_tag = On
 +
Кроме того, надо прописать timezone
 +
 +
date.timezone = Europe/Moscow
 +
Запускаем сервис httpd:
 +
 +
service httpd start
 +
Добавляем в автозагрузку
 +
 +
chkconfig httpd on
 +
 +
 +
== Установка дополнительных библиотек ==
 +
 +
'''yum install''' pcre-devel netpbm* polkit-devel gcc-c++ git subversion yasm
 +
 +
== Установка FFMPEG ==
 +
 +
'''yum install''' libavc1394-devel libavc1394 libavcodec55 libavdevice55 libavfilter4 libavformat55 libavutil52 libpostproc52 libswresample0 libswscale2 cdparanoia-libs dirac-libs <br> gstreamer-plugins-base iso-codes libavcodec52 libavformat52 libavutil50 libgudev1 liboil libswscale0 libvisual libx264_136 orc schroedinger
 +
yum install ffmpeg ffmpeg-devel php-ffmpeg
 +
 +
== Установка PERL-модулей ==
 +
 +
'''yum install''' perl-Crypt-OpenSSL-* perl-Net-SSLeay perl-Date-Manip perl-LWP-UserAgent-Determined perl-Sys-Mmap perl-Device-SerialPort perl-Archive-Tar perl-MIME-Lite perl-MIME-tools <br> perl-Net-SMTP-* perl-Net-FTP-AutoReconnect perl-Archive-Zip perl-Module-Load perl-Time-HiRes perl-PHP-Serialization perl-YAML perl-DBD-MySQL
 +
cd
 +
cpan –i LWP
 +
 +
==Установка JAVA==
 +
Выбираем пакет нужной версии:
 +
 +
'''yum search''' java-1.
 +
Вывод
 +
 +
 +
java-1.5.0-gcj.x86_64 : JPackage runtime compatibility layer for GCJ
 +
java-1.5.0-gcj-devel.x86_64 : JPackage development compatibility layer for GCJ
 +
java-1.5.0-gcj-javadoc.x86_64 : API documentation for libgcj
 +
java-1.5.0-gcj-src.x86_64 : Source files for libgcj
 +
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
 +
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
 +
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
 +
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
 +
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
 +
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
 +
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
 +
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
 +
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
 +
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
 +
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
 +
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
 +
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
 +
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
 +
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
 +
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
 +
Установка:
 +
 +
'''yum install''' java-1.8.0-openjdk*
 +
И проверяем с чем система работает:
 +
 +
java -version
 +
Вывод:
 +
 +
openjdk version "1.8.0_45"
 +
OpenJDK Runtime Environment (build 1.8.0_45-b13)
 +
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
 +
 +
 +
== Проверяем работу связки apache + php ==
 +
 +
Создадим файл
 +
 +
cat << EOT > /var/www/html/testphp.php
 +
<?php
 +
phpinfo();
 +
?>
 +
EOT
 +
Смотрим на содержимое через браузер. В моем случае http://zm.pnv152.ru/testphp.php
 +
 +
После изучения этой информации - удаляем файл, т.к. он доступен в настоящий момент всем.
 +
 +
rm -f /var/www/html/testphp.php
 +
 +
== Установка ZoneMinder 1.28.1 ==
 +
Скачиваем http://www.zoneminder.com/downloads
 +
 +
cd
 +
wget https://github.com/ZoneMinder/ZoneMinder/archive/v1.28.1.tar.gz
 +
tar zxvf v1.28.1.tar.gz
 +
cd ./ZoneMinder-1.28.1
 +
Запускаем файл:
 +
 +
./bootstrap.sh
 +
 +
<source lang="bash">
 +
./configure --with-webdir=/var/www/html/ --with-cgidir=/var/www/cgi-bin/ ZM_DB_PASS=YOUR_ZM_MYSQL_PASSWORD CPPFLAGS="-D__STDC_CONSTANT_MACROS" --with-libarch=lib64 --with-mysql=/usr/lib64/mysql \
 +
--with-extralibs="-L/usr/lib64 -L/usr/lib64/mysql -lmp3lame" ZM_SSL_LIB=openssl --with-ffmpeg=/usr/share/ffmpeg --disable-debug --disable-mmap --with-webuser=apache --with-webgroup=apache \
 +
--with-mariadb= --with-webhost=zm.pnv152.ru
 +
</source>
 +
,'''где «YOUR_ZM_MYSQL_PASSWORD» ваш пароль к будущей базе ZoneMinder'''
 +
 +
После успешного завершения выполняем make:
 +
 +
make
 +
На данном этапе мы должны создать базу для ZoneMinder и импортировать в нее данные по умолчанию
 +
<source lang="sql">
 +
mysql -uroot -pmy_password
 +
create database zm;
 +
exit;
 +
</source>
 +
mysql -uroot -pmy_password zm < ./db/zm_create.sql
 +
И зададим привилегии к базе:
 +
<source lang="sql">
 +
mysql -uroot -pmy_password
 +
grant all on zm.* to 'zmuser'@localhost identified by 'YOUR_ZM_MYSQL_PASSWORD';
 +
flush privileges;
 +
exit;
 +
</source>
 +
И, наконец, нам остался «make install»:
 +
make install
 +
 +
== Несколько модификаций ==
 +
 +
Открываем файл для редактирования /var/www/html/includes/database.php и добавляем строку:
 +
 +
error_reporting(E_ALL ^ E_DEPRECATED);
 +
т.к. в логах apache предупреждение об устаревшей функции
 +
 +
Далее, добавляем в автозагрузку наш ZoneMinder
 +
 +
cp ./scripts/zm /etc/init.d/
 +
chmod 755 /etc/init.d/zm
 +
Для совместимости:
 +
 +
dos2unix /etc/init.d/zm
 +
chkconfig --add zm
 +
Необходимо внести изменения в sysctl.conf для ZM:
 +
 +
# Controls the maximum shared segment size, in bytes
 +
#kernel.shmmax = 68719476736
 +
kernel.shmmax = 137438953472
 +
И можно еще на всякий случай:
 +
 +
# Reboot 5 seconds after panic
 +
kernel.panic = 5
 +
 +
# Panic if a hung task was found
 +
kernel.hung_task_panic = 1
 +
Далее, прописать хостнэйм нашей машины в файле /etc/hosts
 +
 +
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
 +
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
 +
192.168.0.1 zm.pnv152.ru
 +
 +
== Установка cambozola ==
 +
 +
Необходимо с сайта http://www.charliemouse.com/code/cambozola/ скопировать *.tar.gz. Затем содержимое каталога dist необходимо скопировать в корень ZM (/var/www/html/). Забегая вперед - уже в web-интерфейсе в опциях на вкладке Images отметить галочкой OPT_CAMBOZOLA.
 +
 +
cd
 +
wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
 +
tar zxvf cambozola-latest.tar.gz
 +
cp /root/cambozola-0.936/dist/* /var/www/html
 +
chown -R apache:apache /var/www
 +
reboot
 +
 +
Теперь просто откройте свой браузер и перейдите по ссылке: http://ip-of-your-zm-server. Если все было сделано правильно, то вы увидите ZoneMinder Console
 +
 +
 +
== Заключение ==
 +
 +
В итоге мы должны увидеть список камер оранжевого цвета, если выставлена функция «Монитор» или зеленого цвета, если функция «Запись». Если адрес камеры имеет красный цвет - профиль камеры настроен не корректно и камера не будет воспроизводить изображение в ZM.
 +
 +
Если все сделали правильно,а камера все равно не видится - вам поможет /etc/init.d/zm restart
 +
 +
При возникновении желания писать видео с камер в другое место нежели по умолчанию - events, то необходимо либо каталог создавать в $WEB_DIR либо делать ссылку (ln -s) на каталог в $WEB_DIR. Я поступил проще - примонтировал дополнительный раздел в каталог events
 +
 +
Для работы с локальными вебкамерами нужно добавить пользователя http в групу video
 +
usermod -G httpd video
 +
reboot

Текущая версия на 10:49, 29 августа 2015

ZoneMinder - свободное программное обеспечение, для организации видеонаблюдения под лицензией GNU GPL. Официальный сайт - http://www.zoneminder.com/

Базовая установка CentOS

Версия 6.6, х64, minimal

cd

Перед началом необходимо добавить репозитории:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

После установки необходимо включить «remi»: отредактировать файл /etc/yum.repos.d/remi.repo, поменяв с enable=0 на enable=1 в разделах [remi] и [remi-php55]

wget http://dl.atrpms.net/el6.2-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm
rpm -ihv atrpms-repo-6-7.el6.x86_64.rpm

и еще один создаем сами для mariadb: Этот репозиторий взят с сайта postgre https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi

cat << EOT > /etc/yum.repos.d/mariadb.repo
# MariaDB 10.0 CentOS repository list - created 2015-04-16 11:23 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOT

Далее, обновить.

yum update -y

Отключение сервисов

Необходимо отключить SELinux. Для этого в файле /etc/selinux/config заменить

SELINUX=enforced

на

SELINUX=disabled

Необходимо отключить IPTables:

chkconfig iptables off

и

chkconfig ip6tables off

После чего перезагрузить сервер.

Установка дополнительного ПО

yum install man man-pages jwhois bind-utils mc wget which tcpdump traceroute ntp vim telnet net-snmp net-snmp-utils mlocate unzip htop sysstat gd dos2unix bison glib2-devel perl-CPAN redhat-rpm-config rpm-build 

Установка OpenSSL

yum install openssl-devel openssl-perl openssl-static

Установка и настройка MySQL / MariaDB

yum install MariaDB-client MariaDB-devel MariaDB-server

Шаблон конфигурации

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock

#
# The MariaDB server
#
[mysqld]

user=mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
bind-address = 127.0.0.1

port            = 3306
socket          = /var/lib/mysql/mysql.sock
back_log = 50
#skip-networking
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
#external-locking
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
#memlock
default-storage-engine = INNODB
thread_stack = 240K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
#log-bin=mysql-bin
#binlog_format=mixed
#log_slave_updates
#log
#log_warnings
slow_query_log
long_query_time = 2
tmpdir = /tmp

#*** MyISAM Specific options

key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

# *** INNODB Specific options ***

#skip-innodb
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:10M:autoextend
#innodb_data_home_dir = <directory>
innodb_write_io_threads = 8
innodb_read_io_threads = 8
#innodb_force_recovery=1
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
#innodb_fast_shutdown
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
#innodb_log_group_home_dir
innodb_max_dirty_pages_pct = 90
#innodb_flush_method=O_DSYNC
innodb_lock_wait_timeout = 120

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
open-files-limit = 8192

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
!includedir /etc/my.cnf.d

Запускаем сервис

service mysql start

Настраиваем:

/usr/bin/mysql_secure_installation

Включаем в автозагрузку

chkconfig mysql on

Установка ImageMagick

yum install ImageMagick ImageMagick-c++ ImageMagick-devel ImageMagick-perl

Установка Apache

yum install httpd httpd-devel mod_ssl

Поправил конфигурационный файл /etc/httpd/conf/httpd.conf

### Section 1: Global Environment
#
TraceEnable Off
ServerTokens Prod
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

Listen 80

#
# Dynamic Shared Object (DSO) Support
#

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

User apache
Group apache

### Section 2: 'Main' server configuration
#

ServerAdmin root@localhost
ServerName zm.pnv152.ru:80
UseCanonicalName Off
DocumentRoot "/var/www/html"

<Directory />
    Options FollowSymLinks
    Order deny,allow
    AllowOverride All
    Allow from all
</Directory>

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_userdir.c>
    UserDir disabled
</IfModule>

DirectoryIndex index.html index.html.var
AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
#   MIMEMagicFile /usr/share/magic.mime
    MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off
EnableMMAP off
EnableSendfile off
ErrorLog logs/error_log
LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log common
CustomLog logs/referer_log referer
CustomLog logs/agent_log agent
CustomLog logs/access_log combined
ServerSignature Off

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_dav_fs.c>
    DAVLockDB /var/lib/dav/lockdb
</IfModule>

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

DefaultLanguage ru

AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

ForceLanguagePriority Prefer Fallback

AddDefaultCharset UTF-8

AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
AddHandler cgi-script .cgi
AddHandler send-as-is asis
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Alias /error/ "/var/www/error/"

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
    <Directory "/var/www/error">
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
    </Directory>
</IfModule>
</IfModule>

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

Установка поддержки шрифтов TrueType

cd
yum install ttmkfdir cabextract libmspack
yum install chkfontpath
wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec

Требуется изменить ссылку на целевые файлы в файле msttcorefonts-2.0-1.spec.

function set_mirror {
        local r m
        r=`expr $RANDOM % $mirror_count + 1`
        m=`echo $mirrors |cut -d+ -f$r`
        mirror="http://${m}.dl.sourceforge.net/sourceforge/corefonts/"
}

Ссылка должна выглядеть следующим образом:

mirror="http://${m}.dl.sourceforge.net/project/corefonts/the%20fonts/final/"
rpmbuild -bb msttcorefonts-2.0-1.spec

Сборка RPM пакета у меня обрывалась пару раз из-за обрыва связи с сервером исходных файлов. Например, так

...
+ m=umn
+ mirror=http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/
+ for f in '$download_files'
+ check_file andale32.exe
+ matches=
+ '[' '!' -r andale32.exe ']'
+ echo 'andale32.exe does not exist'
andale32.exe does not exist
+ return
+ '[' '!' ']'
+ download http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/ andale32.exe
+ wget --timeout=5 -O andale32.exe http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
--2013-07-06 00:22:34--  http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
Resolving umn.dl.sourceforge.net... failed: Name or service not known.
wget: unable to resolve host address `umn.dl.sourceforge.net'
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)

Ошибки сборки пакетов:
    line 19: buildprereq is deprecated: BuildPrereq: /usr/bin/ttmkfdir
    line 20: buildprereq is deprecated: BuildPrereq: wget
    line 21: buildprereq is deprecated: BuildPrereq: cabextract
    line 22: prereq is deprecated: Prereq: /usr/sbin/chkfontpath
    Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)

Если у вас возникнет такая же ситуация, просто повторите операцию сборки до тех пор, пока пакет не будет собран. При успешном выполнении, в консоли будет показан путь, куда был записан пакет. В моём случае:

...
Записан: /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm

Устанавливаем

rpm -ivh /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
cd /usr/share/fonts/msttcorefonts
mkfontscale
mkfontdir
mkdir -p /usr/share/fonts/default/TrueType
cd /usr/share/fonts/default/TrueType
find /usr/share/fonts/msttcorefonts/ -exec ln -s {} \;

Установка и настройка PHP

Ставим php 5.5 (Если есть желание установить 5.6, то необходимо в remi.repo включить [remi-php56])

yum install php php-cli php-gd php-common php-devel php-mbstring php-snmp php-soap php-xml php-xmlrpc php-mcrypt php-mysqlnd php-pdo php-pear php-process

Корректируем конфиг:

vim /etc/php.ini

В этом файле нам необходимо найти указанную ниже строку и заменить Off на On

short_open_tag = On

Кроме того, надо прописать timezone

date.timezone = Europe/Moscow

Запускаем сервис httpd:

service httpd start

Добавляем в автозагрузку

chkconfig httpd on


Установка дополнительных библиотек

yum install pcre-devel netpbm* polkit-devel gcc-c++ git subversion yasm

Установка FFMPEG

yum install libavc1394-devel libavc1394 libavcodec55 libavdevice55 libavfilter4 libavformat55 libavutil52 libpostproc52 libswresample0 libswscale2 cdparanoia-libs dirac-libs 
gstreamer-plugins-base iso-codes libavcodec52 libavformat52 libavutil50 libgudev1 liboil libswscale0 libvisual libx264_136 orc schroedinger

yum install ffmpeg ffmpeg-devel php-ffmpeg

Установка PERL-модулей

yum install perl-Crypt-OpenSSL-* perl-Net-SSLeay perl-Date-Manip perl-LWP-UserAgent-Determined perl-Sys-Mmap perl-Device-SerialPort perl-Archive-Tar perl-MIME-Lite perl-MIME-tools 
perl-Net-SMTP-* perl-Net-FTP-AutoReconnect perl-Archive-Zip perl-Module-Load perl-Time-HiRes perl-PHP-Serialization perl-YAML perl-DBD-MySQL cd cpan –i LWP

Установка JAVA

Выбираем пакет нужной версии:

yum search java-1.

Вывод


java-1.5.0-gcj.x86_64 : JPackage runtime compatibility layer for GCJ
java-1.5.0-gcj-devel.x86_64 : JPackage development compatibility layer for GCJ
java-1.5.0-gcj-javadoc.x86_64 : API documentation for libgcj
java-1.5.0-gcj-src.x86_64 : Source files for libgcj
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle

Установка:

yum install java-1.8.0-openjdk*

И проверяем с чем система работает:

java -version

Вывод:

openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b13)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)


Проверяем работу связки apache + php

Создадим файл

cat << EOT > /var/www/html/testphp.php
<?php
phpinfo();
?>
EOT

Смотрим на содержимое через браузер. В моем случае http://zm.pnv152.ru/testphp.php

После изучения этой информации - удаляем файл, т.к. он доступен в настоящий момент всем.

rm -f /var/www/html/testphp.php

Установка ZoneMinder 1.28.1

Скачиваем http://www.zoneminder.com/downloads

cd
wget https://github.com/ZoneMinder/ZoneMinder/archive/v1.28.1.tar.gz
tar zxvf v1.28.1.tar.gz
cd ./ZoneMinder-1.28.1

Запускаем файл:

./bootstrap.sh
./configure --with-webdir=/var/www/html/ --with-cgidir=/var/www/cgi-bin/ ZM_DB_PASS=YOUR_ZM_MYSQL_PASSWORD CPPFLAGS="-D__STDC_CONSTANT_MACROS" --with-libarch=lib64 --with-mysql=/usr/lib64/mysql \
--with-extralibs="-L/usr/lib64 -L/usr/lib64/mysql -lmp3lame" ZM_SSL_LIB=openssl --with-ffmpeg=/usr/share/ffmpeg --disable-debug --disable-mmap --with-webuser=apache --with-webgroup=apache \
--with-mariadb= --with-webhost=zm.pnv152.ru

,где «YOUR_ZM_MYSQL_PASSWORD» ваш пароль к будущей базе ZoneMinder

После успешного завершения выполняем make:

make

На данном этапе мы должны создать базу для ZoneMinder и импортировать в нее данные по умолчанию

mysql -uroot -pmy_password
create database zm;
exit;
mysql -uroot -pmy_password zm < ./db/zm_create.sql

И зададим привилегии к базе:

mysql -uroot -pmy_password
grant all on zm.* to 'zmuser'@localhost identified by 'YOUR_ZM_MYSQL_PASSWORD';
flush privileges;
exit;

И, наконец, нам остался «make install»:

make install

Несколько модификаций

Открываем файл для редактирования /var/www/html/includes/database.php и добавляем строку:

error_reporting(E_ALL ^ E_DEPRECATED);

т.к. в логах apache предупреждение об устаревшей функции

Далее, добавляем в автозагрузку наш ZoneMinder

cp ./scripts/zm /etc/init.d/
chmod 755 /etc/init.d/zm

Для совместимости:

dos2unix /etc/init.d/zm
chkconfig --add zm

Необходимо внести изменения в sysctl.conf для ZM:

# Controls the maximum shared segment size, in bytes
#kernel.shmmax = 68719476736
kernel.shmmax = 137438953472
И можно еще на всякий случай:

# Reboot 5 seconds after panic
kernel.panic = 5

# Panic if a hung task was found
kernel.hung_task_panic = 1

Далее, прописать хостнэйм нашей машины в файле /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.1 zm.pnv152.ru

Установка cambozola

Необходимо с сайта http://www.charliemouse.com/code/cambozola/ скопировать *.tar.gz. Затем содержимое каталога dist необходимо скопировать в корень ZM (/var/www/html/). Забегая вперед - уже в web-интерфейсе в опциях на вкладке Images отметить галочкой OPT_CAMBOZOLA.

cd
wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
tar zxvf cambozola-latest.tar.gz
cp /root/cambozola-0.936/dist/* /var/www/html
chown -R apache:apache /var/www
reboot

Теперь просто откройте свой браузер и перейдите по ссылке: http://ip-of-your-zm-server. Если все было сделано правильно, то вы увидите ZoneMinder Console


Заключение

В итоге мы должны увидеть список камер оранжевого цвета, если выставлена функция «Монитор» или зеленого цвета, если функция «Запись». Если адрес камеры имеет красный цвет - профиль камеры настроен не корректно и камера не будет воспроизводить изображение в ZM.

Если все сделали правильно,а камера все равно не видится - вам поможет /etc/init.d/zm restart

При возникновении желания писать видео с камер в другое место нежели по умолчанию - events, то необходимо либо каталог создавать в $WEB_DIR либо делать ссылку (ln -s) на каталог в $WEB_DIR. Я поступил проще - примонтировал дополнительный раздел в каталог events

Для работы с локальными вебкамерами нужно добавить пользователя http в групу video

usermod -G httpd video
reboot