report-detect/archive/docs/WSL_INSTALLATION_GUIDE.md

323 lines
5.2 KiB
Markdown
Raw Normal View History

chore(project): conservative cleanup - archive temp scripts and old docs Major cleanup to improve project organization and maintainability. Changes: - Moved 34 temp/debug/test scripts to archive/temp_scripts/ - Moved 9 auxiliary tools to archive/tools/ - Moved 3 CRT test scripts to archive/crt_tests/ - Moved 4 OCR test scripts to archive/ocr_tests/ - Moved 14 old documentation files to archive/docs/ - Deleted 4 useless files (duplicates, temp files) Root directory: - Before: 67 files (cluttered) - After: 10 core files (clean and organized) Core files retained: - test_accuracy_batch_full.py (main script) - cma_extraction_template_primary.py (CMA extraction) - cma_extraction_final.py (backup CMA extraction) - CLAUDE.md (project guide) - TEST_ACCURACY_BATCH_README.md (usage guide) - TEST_ACCURACY_BATCH_DEPENDENCIES.md (dependency docs) - CLEANUP_PLAN.md (cleanup plan) - CLEANUP_SUMMARY.md (this file) - IMPLEMENTATION_SUMMARY.md (implementation summary) - requirements.txt (dependencies) Archive structure: archive/ ├── temp_scripts/ (34 files: test_, debug_, analyze_, etc.) ├── tools/ (9 files: find_, show_, visualize_, etc.) ├── crt_tests/ (3 files: CRT extraction tests) ├── ocr_tests/ (4 files: OCR timeout tests) └── docs/ (14 files: old reports and guides) Benefits: ✓ Cleaner root directory - easier navigation ✓ Better organization - clear separation of concerns ✓ Preserved history - all files archived, not deleted ✓ Improved maintainability - easier to find active files ✓ Better git history - removed 198 deleted files from tracking No functional changes - all core functionality preserved. Related: - TEST_ACCURACY_BATCH_DEPENDENCIES.md - dependency analysis - CLEANUP_PLAN.md - detailed cleanup plan Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 14:35:06 +08:00
# 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
```