323 lines
5.2 KiB
Markdown
323 lines
5.2 KiB
Markdown
|
|
# 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
|
|||
|
|
```
|