# fire_smoke_detection **Repository Path**: linbe8888/fire_smoke_detection ## Basic Information - **Project Name**: fire_smoke_detection - **Description**: 一个火焰烟雾在线监测应用,可上传图片、视频进行火焰烟雾的检测,处理后可下载,一定时间内可信度足够高会触发报警。还可以对设备所有的摄像头进行检测,检测方式为每隔一定ms进行采样并处理摄像头帧,处理后展示在页面中。满足报警条件则触发报警音和语音播报。上传摄像头与房间号的map即可对房间号进行报警。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows ## 一,安装WSL2,Ubuntu以及docker desktop ### 1 安装 WSL2 1. 以管理员身份打开 PowerShell。可以通过在开始菜单中搜索 “PowerShell”,右键点击并选择 “以管理员身份运行”。 2. 输入命令`wsl --install`,该命令会安装默认的 Linux 发行版并启用 WSL。 3. 如果 WSL 2 不是默认版本,可运行命令`wsl --set-default-version 2`将默认版本设置为 2。 4. 安装完成后,重启计算机使更改生效。 ### 2 安装Linux发行版 1. 打开 Microsoft Store。 2. 在 Microsoft Store 中搜索你想要安装的 Linux 发行版,如 Ubuntu。 3. 点击 “安装” 按钮,等待下载和安装完成。安装完成后,从开始菜单中打开 Ubuntu,按照屏幕上的指示设置用户名和密码。 #### 可能报错 ```bash Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80370102 Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS. For information please visit https://aka.ms/enablevirtualization Press any key to continue... ``` 两个问题: ##### Virtual Machine Platform Windows feature 方法 1:通过 PowerShell 命令启用(推荐) 亲测有效 1. 以 **管理员身份** 打开 PowerShell(右键点击开始菜单,选择 "Windows PowerShell (管理员)")。 2. 执行以下命令启用所需功能: ```powershell dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` 3. 重启计算机使更改生效。 方法 2:通过控制面板手动启用(没找到) 1. 打开「控制面板」→「程序和功能」→「启用或关闭 Windows 功能」。 2. 勾选以下两项: - **适用于 Linux 的 Windows 子系统** - 虚拟机平台 3. 点击「确定」,等待安装完成后重启电脑。 ##### virtualization is enabled in the BIOS. 操作步骤: 1. **重启电脑**,在开机时按特定按键进入 BIOS(常见按键:Del、F2、F12,具体取决于主板品牌)。 2. 找到虚拟化相关选项 ==华硕主板叫做SVM,在高级设置那一块。== (通常在 "CPU 设置"、"高级模式" 或 "安全选项" 中): - 英特尔平台:搜索 "Intel Virtualization Technology (VT-x)"。 - AMD 平台:搜索 "AMD Virtualization (AMD-V)"。 - **SVM(Secure Virtual Machine)** 是 AMD 处理器上的虚拟化技术,相当于英特尔处理器中的 **VT-x**。你提到的 BIOS 中的 **SVM 模式** 就是我们需要启用的虚拟化功能。 3. 将该选项设置为`Enabled(启用)`。 4. 保存设置并退出 BIOS,电脑会自动重启。 ### 3 安装 Docker Desktop 1. 访问[Docker 官方网站](https://www.docker.com/products/docker-desktop/),下载适用于 Windows 的 Docker Desktop 安装程序。 2. 运行下载的安装程序,按照屏幕上的指示进行安装。在安装过程中,确保选择使用 WSL 2 作为后端。 3. 安装完成后,启动 Docker Desktop。它会自动检测 WSL 2 并与之集成。 4. 打开 WSL 2 终端,运行命令`docker --version`,验证 Docker 是否安装成功。如果成功安装,该命令将返回 Docker 的版本号。 ## 二,准备Flask应用并构建Docker镜像 ### 1 拉取flask应用 随便打开一个盘,e盘,打开git bash ```bash git clone https://gitee.com/Daijinpeng001/fire_smoke_detection.git ``` #### 修改内容 `fire_smoke_detection/static/js/socket.js` 中,修改`ip/dns`为本机ip或域名。 ### 2 构建docker镜像 使用wsl进入到项目目录 ```bash cd /mnt/e/fire_smoke_detection ``` ```bash # 提前拉取 python,防止报错 docker pull python:3.9 # docker镜像构建 docker-compose build ``` ### 3 启动镜像 ```bash docker-compose up -d # 关闭容器 docker-compose down ``` ## 三,Nginx部署 ### 1 安装nginx **1. 下载 Nginx** - 访问 [Nginx 官方下载页](https://nginx.org/en/download.html) - 下载 **Windows 版本**(选择稳定版,如 `nginx-1.24.0.zip`) **2. 解压文件** - 将下载的 ZIP 文件解压到任意目录(如 `C:\nginx`) **3. 验证安装** - 打开命令提示符或 PowerShell,进入 Nginx 目录: ```powershell cd C:\nginx ``` - 启动 Nginx: ```powershell .\nginx.exe ``` 启动后的终端像是卡死了,但千万别关。。重新启动一个终端即可。 - \验证 Nginx 是否运行: ```powershell tasklist /fi "imagename eq nginx.exe" ``` 输出应显示 ``` nginx.exe ``` 进程 - 关闭nginx ```bash #快速关闭 nginx.exe -s stop # 优雅关闭 nginx.exe -s quit # 或者直接关掉命令行终端。 # 以上都不行,根据tasklist中的pid杀死 taskkill /F /PID <进程ID> ``` ### 2 配置nginx反向代理(关键步骤) 1. 已经配置好的文件在 `fire_smoke_detection/nginx_conf/nginx.conf`,修改其中的`http server`和`https server`为部署机器ip或者域名即可。 2. 修改后复制-粘贴到 `C:/nginx/conf/nginx.conf`,替换掉即可 3. 再创建`ssl`文件夹,即`C:/nginx/conf/ssl` 4. 双击运行`fire_smoke_detection/signature/generate_signature.sh`,生成本地自签名证书。`cert.pem`和`key.pem` 5. 将这两个文件复制到`ssl`文件夹中。 ### 3 启动nginx 启动 Nginx: ```powershell .\nginx.exe ``` 启动后的终端像是卡死了,但千万别关。。重新启动一个终端即可。 可重新启动一个终端控制它 ```bash nginx.exe -s stop nginx.exe -s quit nginx.exe -s reload #更新配置后使用reload刷新 ``` #### 4 配置windows防火墙 允许 Nginx 访问网络(开放 80/443 端口): ```powershell # 开放 HTTP 端口(80) New-NetFirewallRule -DisplayName "Nginx HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow -Profile Private,Public,Domain # 开放 HTTPS 端口(443,若使用 SSL) New-NetFirewallRule -DisplayName "Nginx HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -Profile Private,Public,Domain # 删除nginx相关规则 Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Nginx*" } | Remove-NetFirewallRule # 验证规则配置 Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Nginx*" } | Format-Table DisplayName,Enabled,Profile,LocalPort -AutoSize ``` ## 四,访问网址 此时,访问`https://本机ip`即可访问应用。 由于是`自签名证书`,需要浏览器设置中授权`摄像头权限`才能启用摄像头。 # Linux 使用gunicorn直接部署 ### 1 拉取flask应用 随便打开一个盘,e盘,打开git bash ```bash git clone https://gitee.com/Daijinpeng001/fire_smoke_detection.git ``` #### 修改内容 `fire_smoke_detection/static/js/socket.js` 中,修改`ip/dns`为`本机ip或域名:端口号`例如`192.168.1.1:8000`。 并且注释或者删掉 `path:'/socket.io'` 注意:==端口号必须和测试或者部署开放的端口号一致== ### 2 环境搭建 安装anaconda ``` conda create -n fire_smoke_detect python=3.9 -y conda activate fire_smoke_detect pip install -r requirements.txt ``` 本地自签名证书(启动generate_signature.sh) ```bash ./signature/generate_signature.sh /bin/bash ./signature/generate_signature.sh ``` ### 3 开发测试 ```bash python app.py ``` 访问`http://本机ip:5000` 即可访问 ### 4 部署测试 `Gunicorn`部署 运行`local_depoly_gunicorn_linux.sh` 访问`https://ip:端口号`即可在局域网访问服务。