Fun-ASR-MLT-Nano-2512生产环境部署日志管理、PID守护、重启脚本完整指南1. 项目概述与环境准备Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的多语言语音识别大模型支持31种语言的高精度语音识别。这个800M参数的模型不仅能识别中文、英文、日文、韩文等主流语言还特别支持粤语方言识别、歌词识别和远场识别功能。在生产环境中部署这个模型需要确保系统稳定运行。我们先来看看基础环境要求系统要求操作系统Linux推荐Ubuntu 20.04或更高版本Python版本3.8或更高内存至少8GB磁盘空间至少5GB可用空间GPU可选但推荐CUDA加速快速检查环境# 检查Python版本 python3 --version # 检查内存 free -h # 检查磁盘空间 df -h如果系统不符合要求建议先升级或调整环境避免后续运行出现问题。2. 基础部署与依赖安装2.1 安装系统依赖首先安装必要的系统工具和依赖库# 更新系统包列表 sudo apt-get update # 安装FFmpeg音频处理必备 sudo apt-get install -y ffmpeg # 安装其他可能需要的工具 sudo apt-get install -y git wget curl2.2 安装Python依赖下载项目文件后安装所需的Python包# 进入项目目录 cd /root/Fun-ASR-MLT-Nano-2512 # 安装Python依赖 pip install -r requirements.txt # 如果需要特定版本的torch根据CUDA版本选择 pip install torch torchaudio --extra-index-url https://download.pytorch.org/whl/cu116安装完成后建议验证一下主要依赖是否安装成功python3 -c import torch; print(PyTorch版本:, torch.__version__) python3 -c import gradio; print(Gradio版本:, gradio.__version__)3. 生产环境部署方案3.1 基础启动方式最简单的启动方式是直接运行cd /root/Fun-ASR-MLT-Nano-2512 python app.py但这种方式在终端关闭后服务就会停止不适合生产环境。3.2 使用nohup后台运行更稳定的方式是使用nohup让程序在后台运行cd /root/Fun-ASR-MLT-Nano-2512 nohup python app.py /tmp/funasr_web.log 21 echo $! /tmp/funasr_web.pid这个命令做了三件事使用nohup在后台运行app.py将标准输出和错误输出重定向到日志文件将进程ID保存到pid文件3.3 验证服务状态启动后检查服务是否正常运行# 检查进程是否存在 ps aux | grep python app.py # 查看日志最后几行 tail -n 10 /tmp/funasr_web.log # 检查端口监听情况 netstat -tlnp | grep 7860 # 测试服务响应 curl http://localhost:78604. 完整的服务管理脚本4.1 启动脚本创建专业的启动脚本/root/start_funasr.sh#!/bin/bash # Fun-ASR服务启动脚本 SERVICE_NAMEfunasr-web APP_DIR/root/Fun-ASR-MLT-Nano-2512 LOG_FILE/var/log/funasr_web.log PID_FILE/var/run/funasr_web.pid # 创建日志和PID目录 mkdir -p /var/log /var/run # 检查是否已在运行 if [ -f $PID_FILE ] kill -0 $(cat $PID_FILE) 2/dev/null; then echo $SERVICE_NAME 已经在运行 (PID: $(cat $PID_FILE)) exit 1 fi # 进入应用目录 cd $APP_DIR # 启动服务 echo 启动 $SERVICE_NAME... nohup python app.py $LOG_FILE 21 PID$! # 保存PID echo $PID $PID_FILE echo $SERVICE_NAME 启动成功PID: $PID echo 日志文件: $LOG_FILE给脚本添加执行权限chmod x /root/start_funasr.sh4.2 停止脚本创建停止脚本/root/stop_funasr.sh#!/bin/bash # Fun-ASR服务停止脚本 PID_FILE/var/run/funasr_web.pid if [ -f $PID_FILE ]; then PID$(cat $PID_FILE) if kill -0 $PID 2/dev/null; then echo 停止Fun-ASR服务 (PID: $PID)... kill $PID sleep 2 if kill -0 $PID 2/dev/null; then echo 强制停止... kill -9 $PID fi rm -f $PID_FILE echo 服务已停止 else echo 进程不存在清理PID文件 rm -f $PID_FILE fi else echo PID文件不存在服务可能未运行 fi4.3 重启脚本创建重启脚本/root/restart_funasr.sh#!/bin/bash # Fun-ASR服务重启脚本 echo 重启Fun-ASR服务... /root/stop_funasr.sh sleep 3 /root/start_funasr.sh4.4 状态检查脚本创建状态检查脚本/root/status_funasr.sh#!/bin/bash # Fun-ASR服务状态检查脚本 PID_FILE/var/run/funasr_web.pid LOG_FILE/var/log/funasr_web.log if [ -f $PID_FILE ]; then PID$(cat $PID_FILE) if kill -0 $PID 2/dev/null; then echo ✅ Fun-ASR服务运行中 (PID: $PID) echo 运行时间: $(ps -p $PID -o etime | xargs) echo 内存使用: $(ps -p $PID -o rss | awk {printf %.1f MB\n, $1/1024}) # 检查端口监听 if netstat -tln | grep -q :7860; then echo 端口7860监听正常 else echo ❌ 端口7860未监听 fi else echo ❌ PID文件存在但进程未运行 rm -f $PID_FILE fi else echo ❌ 服务未运行 (PID文件不存在) fi # 显示日志最后5行 echo echo 日志最后5行: tail -n 5 $LOG_FILE 2/dev/null || echo 日志文件不存在5. 高级日志管理方案5.1 配置日志轮转创建日志轮转配置/etc/logrotate.d/funasr/var/log/funasr_web.log { daily missingok rotate 7 compress delaycompress notifempty copytruncate create 644 root root }这样配置会每天轮转日志保留最近7天的日志压缩旧的日志文件不影响正在运行的服务5.2 增强型日志记录修改启动脚本增加更详细的日志记录#!/bin/bash # 增强版启动脚本 LOG_DIR/var/log/funasr LOG_FILE$LOG_DIR/funasr_web.log PID_FILE/var/run/funasr_web.pid APP_DIR/root/Fun-ASR-MLT-Nano-2512 # 创建日志目录 mkdir -p $LOG_DIR # 带时间戳的日志函数 log() { echo [$(date %Y-%m-%d %H:%M:%S)] $1 | tee -a $LOG_DIR/startup.log } log 开始启动Fun-ASR服务 # 检查并停止现有服务 if [ -f $PID_FILE ] kill -0 $(cat $PID_FILE) 2/dev/null; then log 发现正在运行的服务先停止 kill $(cat $PID_FILE) sleep 2 fi # 启动服务 cd $APP_DIR nohup python app.py $LOG_FILE 21 PID$! # 验证启动是否成功 sleep 5 if kill -0 $PID 2/dev/null; then echo $PID $PID_FILE log 启动成功PID: $PID # 记录系统信息 echo 系统信息: $LOG_DIR/startup.log echo CPU: $(nproc) 核心 $LOG_DIR/startup.log echo 内存: $(free -h | awk /Mem:/{print $2}) $LOG_DIR/startup.log echo 磁盘: $(df -h / | awk NR2{print $4}) 可用 $LOG_DIR/startup.log else log 启动失败检查日志: $LOG_FILE exit 1 fi6. 系统服务集成6.1 创建systemd服务创建systemd服务文件/etc/systemd/system/funasr.service[Unit] DescriptionFun-ASR MLT Nano Speech Recognition Service Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/root/Fun-ASR-MLT-Nano-2512 ExecStart/usr/bin/python app.py Restartalways RestartSec10 StandardOutputfile:/var/log/funasr_web.log StandardErrorfile:/var/log/funasr_web.error.log EnvironmentPYTHONUNBUFFERED1 [Install] WantedBymulti-user.target6.2 管理systemd服务使用systemctl命令管理服务# 重新加载systemd配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start funasr # 开机自启 sudo systemctl enable funasr # 查看状态 sudo systemctl status funasr # 查看日志 sudo journalctl -u funasr -f6.3 服务监控脚本创建监控脚本/root/monitor_funasr.sh#!/bin/bash # Fun-ASR服务监控脚本 SERVICE_NAMEfunasr CHECK_INTERVAL60 # 检查间隔(秒) MAX_RESTARTS3 # 最大重启次数 RESTART_COUNT0 # 重启计数器 while true; do if ! systemctl is-active --quiet $SERVICE_NAME; then echo [$(date)] 服务异常尝试重启... systemctl restart $SERVICE_NAME RESTART_COUNT$((RESTART_COUNT 1)) echo [$(date)] 重启次数: $RESTART_COUNT/$MAX_RESTARTS if [ $RESTART_COUNT -ge $MAX_RESTARTS ]; then echo [$(date)] 达到最大重启次数停止监控 break fi else RESTART_COUNT0 # 重置计数器 fi sleep $CHECK_INTERVAL done设置定时监控# 让监控脚本在后台运行 nohup /root/monitor_funasr.sh /var/log/funasr_monitor.log 21 7. 常见问题排查7.1 服务启动失败排查如果服务启动失败按以下步骤排查# 1. 检查依赖是否完整 pip list | grep -E torch|gradio|funasr # 2. 直接运行看错误信息 cd /root/Fun-ASR-MLT-Nano-2512 python app.py # 3. 检查端口冲突 netstat -tlnp | grep 7860 # 4. 检查模型文件 ls -lh model.pt # 5. 检查CUDA是否可用 python3 -c import torch; print(CUDA可用:, torch.cuda.is_available())7.2 性能优化建议如果服务运行缓慢可以尝试以下优化# 1. 使用GPU加速如果可用 export CUDA_VISIBLE_DEVICES0 # 2. 调整批处理大小 # 在app.py中修改batch_size参数 # 3. 启用硬件加速的音频解码 sudo apt-get install -y ffmpeg # 4. 监控资源使用 top -p $(cat /var/run/funasr_web.pid)7.3 日志分析技巧使用一些简单命令分析日志# 实时查看日志 tail -f /var/log/funasr_web.log # 查看错误信息 grep -i error /var/log/funasr_web.log # 查看请求统计 grep 识别完成 /var/log/funasr_web.log | wc -l # 查看响应时间 grep 处理时间 /var/log/funasr_web.log8. 总结与最佳实践通过以上完整的部署方案你的Fun-ASR-MLT-Nano-2512服务将具备✅ 稳定的运行环境使用systemd或脚本守护进程自动重启机制完善的日志管理✅ 便捷的服务管理启动、停止、重启脚本状态监控和告警简单的故障排查工具✅ 生产级特性日志轮转和归档资源使用监控性能优化建议日常维护建议定期检查日志文件大小和内容监控系统资源使用情况定期更新模型和依赖包备份重要配置文件和数据故障处理流程检查服务状态/root/status_funasr.sh查看最新日志tail -f /var/log/funasr_web.log重启服务/root/restart_funasr.sh如果问题持续检查系统资源和服务配置现在你的Fun-ASR语音识别服务已经可以在生产环境中稳定运行了获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。