# MoldInsight Linux 部署指南 ## 系统要求 - Linux 系统 (Ubuntu 20.04+ / CentOS 8+) - Python 3.8+ - PostgreSQL 12+ - Git ## 1. 环境准备 ### 安装系统依赖 ```bash # Ubuntu/Debian sudo apt update sudo apt install python3 python3-pip python3-venv postgresql postgresql-contrib git # CentOS/RHEL sudo yum update sudo yum install python3 python3-pip postgresql postgresql-server git ``` ### 配置PostgreSQL ```bash # 启动PostgreSQL服务 sudo systemctl start postgresql sudo systemctl enable postgresql # 创建数据库和用户 sudo -u postgres psql ``` 在PostgreSQL中执行: ```sql CREATE DATABASE moldinsight; CREATE USER molduser WITH PASSWORD 'moldpassword'; GRANT ALL PRIVILEGES ON DATABASE moldinsight TO molduser; \q ``` ## 2. 项目部署 ### 克隆或复制项目 ```bash # 如果使用Git cd /opt sudo git clone moldinsight sudo chown -R $USER:$USER moldinsight cd moldinsight # 或者直接复制项目文件到Linux服务器 ``` ### 创建Python虚拟环境 ```bash cd moldinsight_project python3 -m venv venv source venv/bin/activate ``` ### 安装依赖 ```bash pip install --upgrade pip pip install -r requirements.txt ``` ## 3. 环境配置 ### 修改环境配置文件 编辑 `.env` 文件: ```bash nano .env ``` 修改为Linux环境的配置: ```env # 数据库配置(Linux环境) DATABASE_URL=postgresql+asyncpg://molduser:moldpassword@localhost:5432/moldinsight # 服务配置 DEBUG=false HOST=0.0.0.0 PORT=8000 # Redis配置(可选) REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # Kafka配置(可选) KAFKA_BOOTSTRAP_SERVERS=localhost:9092 KAFKA_SECURITY_PROTOCOL=PLAINTEXT ``` ### 创建必要的目录 ```bash mkdir -p uploads html_output logs chmod 755 uploads html_output logs ``` ## 4. 启动服务 ### 开发模式启动 ```bash cd moldinsight_project source venv/bin/activate python src/main.py ``` ### 生产环境启动(使用Gunicorn) ```bash # 安装Gunicorn pip install gunicorn uvloop httptools # 启动服务 cd moldinsight_project source venv/bin/activate gunicorn src.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 ``` ## 5. 系统服务配置(可选) ### 创建systemd服务文件 ```bash sudo nano /etc/systemd/system/moldinsight.service ``` 添加以下内容: ```ini [Unit] Description=MoldInsight Geometry Analysis Service After=network.target postgresql.service [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/opt/moldinsight/moldinsight_project Environment=PATH=/opt/moldinsight/moldinsight_project/venv/bin ExecStart=/opt/moldinsight/moldinsight_project/venv/bin/gunicorn src.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 Restart=always [Install] WantedBy=multi-user.target ``` ### 启用并启动服务 ```bash sudo systemctl daemon-reload sudo systemctl enable moldinsight sudo systemctl start moldinsight sudo systemctl status moldinsight ``` ## 6. Nginx反向代理配置(可选) ### 安装Nginx ```bash # Ubuntu/Debian sudo apt install nginx # CentOS/RHEL sudo yum install nginx ``` ### 创建Nginx配置文件 ```bash sudo nano /etc/nginx/sites-available/moldinsight ``` 添加以下内容: ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/moldinsight/moldinsight_project/static; expires 30d; } } ``` ### 启用站点并重启Nginx ```bash sudo ln -s /etc/nginx/sites-available/moldinsight /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ``` ## 7. 防火墙配置 ```bash # Ubuntu/Debian (ufw) sudo ufw allow 80 sudo ufw allow 8000 sudo ufw allow ssh sudo ufw enable # CentOS/RHEL (firewalld) sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=8000/tcp sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ``` ## 8. 验证部署 ### 检查服务状态 ```bash # 检查应用服务 curl http://localhost:8000/health # 检查数据库连接 sudo -u postgres psql -d moldinsight -c "SELECT version();" ``` ### 测试文件上传 访问 `http://your-server-ip:8000` 上传STP文件测试功能。 ## 9. 故障排除 ### 常见问题 1. **数据库连接失败** - 检查PostgreSQL服务状态:`sudo systemctl status postgresql` - 验证数据库连接:`psql -h localhost -U molduser -d moldinsight` 2. **端口被占用** - 检查端口使用:`netstat -tulpn | grep 8000` - 修改端口或停止占用进程 3. **权限问题** - 确保目录权限正确:`chmod 755 uploads html_output logs` - 检查文件所有者:`ls -la` 4. **依赖安装失败** - 更新pip:`pip install --upgrade pip` - 使用国内镜像:`pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple` ## 10. 备份和恢复 ### 数据库备份 ```bash # 备份数据库 sudo -u postgres pg_dump moldinsight > moldinsight_backup.sql # 恢复数据库 sudo -u postgres psql -d moldinsight < moldinsight_backup.sql ``` ### 文件备份 ```bash # 备份上传的文件和配置 tar -czf moldinsight_backup.tar.gz uploads/ html_output/ .env requirements.txt ``` ## 快速启动脚本 创建启动脚本 `start.sh`: ```bash #!/bin/bash cd /opt/moldinsight/moldinsight_project source venv/bin/activate python src/main.py ``` 赋予执行权限: ```bash chmod +x start.sh ./start.sh ``` 现在您的MoldInsight项目已经可以在Linux环境下正常运行!