# WSL环境安装指南 - RabbitMQ和OCR依赖 ## 快速安装命令 ### 方法1: 一键安装 (推荐) 在PowerShell或CMD中执行: ```powershell # 打开WSL并安装 wsl -d Ubuntu-22.04 -- bash -c "sudo apt-get update && sudo apt-get install -y erlang-nox rabbitmq-server && sudo service rabbitmq-server start" ``` ### 方法2: 分步安装 #### 步骤1: 打开WSL终端 ```powershell # PowerShell wsl -d Ubuntu-22.04 # 或在CMD wsl -d Ubuntu-22.04 ``` #### 步骤2: 更新软件包列表 ```bash sudo apt-get update ``` #### 步骤3: 安装Erlang (RabbitMQ依赖) ```bash sudo apt-get install -y erlang-nox erlang-dev ``` #### 步骤4: 安装RabbitMQ ```bash sudo apt-get install -y rabbitmq-server ``` #### 步骤5: 启动RabbitMQ服务 ```bash sudo service rabbitmq-server start ``` #### 步骤6: 验证安装 ```bash # 检查RabbitMQ状态 sudo rabbitmqctl status # 查看队列列表 sudo rabbitmqctl list_queues ``` ### 步骤7: 安装Python依赖 ```bash # 安装Python包管理器 sudo apt-get install -y python3-pip # 安装必要的Python包 pip3 install flask pika requests ``` ## 验证安装 运行验证脚本: ```bash # 在项目目录下 bash verify_installation.sh ``` 或手动验证: ```bash # 1. 检查Erlang erl -version # 2. 检查RabbitMQ rabbitmq-server --version # 3. 检查服务状态 sudo service rabbitmq-server status # 4. 检查Python依赖 python3 -c "import flask, pika, requests; print('All dependencies OK')" ``` ## RabbitMQ配置 ### 默认配置 - **主机**: localhost - **端口**: 5672 (AMQP) - **管理端口**: 15672 (Web UI) - **默认用户**: guest - **默认密码**: guest ### 启用管理插件 (可选) ```bash sudo rabbitmq-plugins enable rabbitmq_management sudo service rabbitmq-server restart ``` 访问管理界面: http://localhost:15672 (guest/guest) ### 创建新用户 (可选) ```bash # 创建用户 sudo rabbitmqctl add_user ocr_user ocr_password # 设置为管理员 sudo rabbitmqctl set_user_tags ocr_user administrator # 设置权限 sudo rabbitmqctl set_permissions -p / ocr_user ".*" ".*" ".*" ``` ## 常用命令 ### RabbitMQ服务管理 ```bash # 启动 sudo service rabbitmq-server start # 停止 sudo service rabbitmq-server stop # 重启 sudo service rabbitmq-server restart # 查看状态 sudo service rabbitmq-server status ``` ### 队列管理 ```bash # 列出所有队列 sudo rabbitmqctl list_queues # 列出所有交换机 sudo rabbitmqctl list_exchanges # 列出所有绑定 sudo rabbitmqctl list_bindings # 清空队列 sudo rabbitmqctl purge_queue queue_name ``` ### 用户管理 ```bash # 列出用户 sudo rabbitmqctl list_users # 添加用户 sudo rabbitmqctl add_user username password # 删除用户 sudo rabbitmqctl delete_user username # 修改密码 sudo rabbitmqctl change_password username newpass ``` ## 启动OCR服务 安装完成后,在WSL中启动OCR服务: ### 1. 进入项目目录 ```bash cd /mnt/c/Users/WIN10/Desktop/work/26th-week/report-detect-backend ``` ### 2. 启动Flask API ```bash cd python_api python3 ocr_api_server.py ``` ### 3. 启动RabbitMQ消费者 (新终端) ```bash cd /mnt/c/Users/WIN10/Desktop/work/26th-week/report-detect-backend/python_api # 设置环境变量 export FLASK_HOST=127.0.0.1 export FLASK_PORT=8081 export RABBITMQ_HOST=localhost export RABBITMQ_PORT=5672 # 启动消费者 python3 ocr_task_consumer.py ``` ### 4. 在Windows中启动Java应用 ```powershell # PowerShell mvn clean package java -jar target/report-detect-backend-1.0.0.jar ``` ## 故障排查 ### RabbitMQ无法启动 ```bash # 查看日志 sudo cat /var/log/rabbitmq/rabbit@hostname.log # 检查Erlang版本兼容性 erl -version ``` ### 连接被拒绝 ```bash # 检查RabbitMQ是否运行 sudo service rabbitmq-server status # 检查端口是否被占用 sudo netstat -tlnp | grep 5672 ``` ### Python导入错误 ```bash # 重新安装依赖 pip3 install --upgrade flask pika requests ``` ### WSL网络问题 如果WSL无法访问Windows服务: ```bash # 检查Windows IP cat /etc/resolv.conf | grep nameserver # 测试连接 ping -c 3 $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}') ``` ## 开机自启动 ### 设置RabbitMQ开机自启 ```bash # 方法1: 使用systemd sudo systemctl enable rabbitmq-server # 方法2: 使用sysvinit sudo update-rc.d rabbitmq-server defaults ``` ### 设置Flask和消费者开机自启 创建systemd服务文件: ```bash sudo nano /etc/systemd/system/ocr-flask.service ``` 内容: ```ini [Unit] Description=OCR Flask API After=network.target rabbitmq-server.service [Service] Type=simple User=your_username WorkingDirectory=/mnt/c/Users/WIN10/Desktop/work/26th-week/report-detect-backend/ocr-resources ExecStart=/usr/bin/python3 ocr_api_server.py Restart=on-failure [Install] WantedBy=multi-user.target ``` 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl enable ocr-flask sudo systemctl start ocr-flask ``` ## 性能优化 ### RabbitMQ内存限制 编辑 `/etc/rabbitmq/rabbitmq.conf`: ```conf vm_memory_high_watermark.relative = 0.6 vm_memory_high_watermark_paging_ratio = 0.75 ``` ### 文件描述符限制 ```bash # 检查当前限制 ulimit -n # 增加限制 echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf ```