怎样用CentOS 7和开源软件实现远程视频监控?

核心组件与软件选择

在开始部署之前,我们需要明确系统的核心构成,一个典型的视频监控系统通常包含以下几个关键部分:操作系统、Web 服务器、数据库、后端监控引擎以及前端用户界面,在 CentOS 7 的生态中,我们可以选择不同的软件组合,但以下是一种成熟且广受推荐的方案。

怎样用CentOS 7和开源软件实现远程视频监控?

  • 操作系统:CentOS 7
  • Web 服务器:Apache (httpd),稳定且配置简单。
  • 数据库:MariaDB,MySQL 的一个分支,与 CentOS 7 兼容性极佳。
  • 监控引擎:ZoneMinder,一个功能强大、开源且历史悠久的监控软件,支持广泛的摄像头类型和高级功能。

市面上也存在其他优秀的开源监控软件,Shinobi,Shinobi 采用 Node.js 构建,界面更现代化,资源占用相对较小,为了帮助您做出选择,下表对两者进行了简要对比:

特性 ZoneMinder Shinobi
技术栈 Perl, PHP, MySQL Node.js, FFmpeg, MariaDB/PostgreSQL
易用性 界面传统,但功能布局清晰,文档丰富 界面现代,交互友好,对新手更直观
资源占用 相对较高,尤其是在处理多路高清流时 相对轻量,对硬件要求稍低
功能丰富度 非常全面,包括复杂的区域检测、时间表等 核心功能齐全,插件生态正在发展
社区与文档 社区庞大,历史悠久,问题解决方案多 社区活跃,发展迅速,文档持续更新

本文将以 ZoneMinder 为例进行部署,其成熟的架构和丰富的文档使其成为构建稳定监控系统的首选。


环境准备与软件安装

部署 ZoneMinder 的第一步是准备好其运行所依赖的基础环境。

系统更新
确保您的 CentOS 7 系统是最新状态,以修复已知的安全漏洞和软件缺陷。

sudo yum update -y

安装 EPEL 仓库
许多 ZoneMinder 的依赖软件包都包含在 EPEL (Extra Packages for Enterprise Linux) 仓库中。

sudo yum install epel-release -y

安装 LAMP 栈
安装 Apache、MariaDB 和 PHP。

sudo yum install httpd mariadb-server mariadb php php-mysqlnd php-gd php-xml php-mbstring -y

启动并设置服务自启
将 Apache 和 MariaDB 服务启动,并配置为开机自启。

sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mariadb
sudo systemctl enable mariadb

安全化 MariaDB
运行 MySQL 安全安装脚本,设置 root 密码,移除匿名用户,禁止远程 root 登录等。

sudo mysql_secure_installation

根据提示完成设置,建议对所有安全相关问题都回答 ‘Y’ (Yes)。

怎样用CentOS 7和开源软件实现远程视频监控?


安装与配置 ZoneMinder

基础环境就绪后,我们开始安装 ZoneMinder。

添加 ZoneMinder 仓库并安装
ZoneMinder 提供了官方的 YUM 仓库,方便安装和更新。

sudo rpm -Uvh https://zmrepo.zoneminder.com/el/7/x86_64/zmrepo-7-0.el7.noarch.rpm
sudo yum install zoneminder -y

配置数据库
ZoneMinder 需要一个数据库来存储配置、事件和元数据,登录 MariaDB 并创建。

mysql -u root -p
# 输入您设置的 root 密码
CREATE DATABASE zm;
CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

请将 YourStrongPassword 替换为一个安全的密码。

修改 ZoneMinder 配置
编辑 ZoneMinder 的主配置文件,填入刚才创建的数据库信息。

sudo vi /etc/zm/zm.conf

找到以下行并修改:

ZM_DB_USER=zmuser
ZM_DB_PASS=YourStrongPassword

配置防火墙与 SELinux
CentOS 7 的防火墙和 SELinux 是重要的安全组件,需要正确配置以允许 ZoneMinder 工作。

# 开放 HTTP 和 HTTPS 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 允许 Apache 和 ZoneMinder 进程进行网络连接
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_relay 1

启动 ZoneMinder 服务

sudo systemctl start zoneminder
sudo systemctl enable zoneminder

Web 界面配置与摄像头添加

您可以通过浏览器访问 ZoneMinder 的 Web 控制台了,在浏览器地址栏输入 http://<your_server_ip>/zm

怎样用CentOS 7和开源软件实现远程视频监控?

首次登录时,使用默认的管理员账户(用户名:admin,密码:admin),登录后,强烈建议立即修改密码。

添加摄像头是系统的核心操作:

  1. 点击左侧菜单的 “添加” (Add)。
  2. 在 “通用” (General) 选项卡中,为摄像头命名(前门摄像头),选择 “监控源类型”。
  3. 在 “源” (Source) 选项卡中,配置摄像头的连接方式。
    • 对于 IP 摄像头:选择 “远程” (Remote),并在 “源路径” 中填入 RTSP 或 HTTP 流地址,RTSP 地址通常格式为 rtsp://username:password@camera_ip:port/stream_path
    • 对于本地 USB 摄像头:选择 “本地” (Local),并选择正确的设备路径,如 /dev/video0
  4. 保存后,ZoneMinder 会自动尝试连接,在监控列表中,您应该能看到摄像头的状态变为 “已连接” (Running),并显示实时画面。

相关问答 FAQs

Q1: 我已经按照步骤操作,但无法访问 ZoneMinder 的 Web 页面,或者页面显示空白,该怎么办?

A1: 这是一个常见问题,通常由防火墙、SELinux 或服务状态引起,请按以下顺序排查:

  1. 检查防火墙:确认您已正确开放了 HTTP (80) 端口,运行 sudo firewall-cmd --list-all 查看已开放的 Services。
  2. 检查 SELinux:运行 getenforce 命令,如果输出是 Enforcing,请确保已执行 sudo setsebool -P httpd_can_network_connect 1 命令,临时关闭 SELinux (setenforce 0) 测试,如果问题解决,则确认为 SELinux 策略问题。
  3. 检查服务状态:运行 sudo systemctl status httpdsudo systemctl status zoneminder,确保两个服务都处于 active (running) 状态,如果服务未运行,使用 journalctl -u service_name 查看日志以定位错误原因。
  4. 检查 PHP 错误日志:查看 Apache 的错误日志 (/var/log/httpd/error_log),其中可能包含 PHP 的致命错误信息,例如权限问题或缺少必要的 PHP 模块。

Q2: 我的摄像头在 ZoneMinder 中显示“未连接”状态,但我知道它本身是正常的,我该如何调试?

A2: 这个问题通常指向 ZoneMinder 与摄像头之间的通信故障,请尝试以下步骤:

  1. 网络连通性:从 CentOS 服务器上 ping <camera_ip>,确保网络是通的。
  2. 验证流地址:在服务器上使用 ffplayvlc 命令行工具直接测试 RTSP 或 HTTP 流地址。ffplay rtsp://user:pass@ip:port/stream,如果在这里无法播放,说明流地址、用户名或密码有误。
  3. 检查摄像头凭证:在 ZoneMinder 的监控源配置中,仔细核对用户名和密码是否正确,注意大小写和特殊字符。
  4. 调整 ZoneMinder 源参数:在 “源” 选项卡中,可以尝试调整 “捕获方法” (Capture Method),对于 RTSP 流,通常选择 rtspffmpeg 方法,对于某些摄像头,可能需要在 “选项” 中指定特定的编码格式或容器格式。
  5. 查看日志:ZoneMinder 的日志 (/var/log/zoneminder/zm.log) 是最强大的调试工具,当监控点尝试连接时,日志会输出详细的错误信息,例如认证失败、网络超时或解码错误,根据日志信息进行针对性修复。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-11 04:29
下一篇 2025-10-11 04:35

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信