初始提交
This commit is contained in:
@@ -0,0 +1,397 @@
|
||||
# 🚀 部署指南
|
||||
|
||||
## 问题解决
|
||||
|
||||
### OpenAI库版本兼容性问题
|
||||
|
||||
**错误信息**:
|
||||
```
|
||||
Client.init() got an unexpected keyword argument 'proxies'
|
||||
```
|
||||
|
||||
**原因**:
|
||||
- OpenAI库版本过旧(1.3.0)
|
||||
- 新版本API有变化,不再支持`proxies`参数
|
||||
|
||||
**解决方案**:
|
||||
|
||||
#### 方案1:升级依赖包(推荐)
|
||||
|
||||
```bash
|
||||
# 1. 激活虚拟环境
|
||||
source venv/bin/activate # Linux/Mac
|
||||
# 或
|
||||
.\venv\Scripts\Activate.ps1 # Windows
|
||||
|
||||
# 2. 升级openai库
|
||||
pip install --upgrade openai
|
||||
|
||||
# 3. 或者重新安装所有依赖
|
||||
pip install -r requirements.txt --upgrade
|
||||
```
|
||||
|
||||
#### 方案2:指定版本安装
|
||||
|
||||
```bash
|
||||
pip install openai>=1.12.0
|
||||
```
|
||||
|
||||
#### 方案3:清理后重新安装
|
||||
|
||||
```bash
|
||||
# 1. 卸载旧版本
|
||||
pip uninstall openai -y
|
||||
|
||||
# 2. 安装新版本
|
||||
pip install openai
|
||||
|
||||
# 3. 重新安装所有依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## 📋 完整部署流程
|
||||
|
||||
### 1. 环境准备
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone <your-repo-url>
|
||||
cd agentsstock1
|
||||
|
||||
# 创建虚拟环境
|
||||
python -m venv venv
|
||||
|
||||
# 激活虚拟环境
|
||||
# Windows:
|
||||
.\venv\Scripts\Activate.ps1
|
||||
# Linux/Mac:
|
||||
source venv/bin/activate
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
|
||||
```bash
|
||||
# 安装所有依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 如果遇到问题,逐个安装
|
||||
pip install streamlit requests pandas numpy plotly
|
||||
pip install yfinance akshare openai python-dotenv
|
||||
pip install pytz ta reportlab peewee schedule
|
||||
```
|
||||
|
||||
### 3. 配置环境变量
|
||||
|
||||
```bash
|
||||
# 复制配置文件
|
||||
cp .env.example .env
|
||||
|
||||
# 编辑.env文件
|
||||
# Windows:
|
||||
notepad .env
|
||||
# Linux/Mac:
|
||||
nano .env
|
||||
```
|
||||
|
||||
在`.env`文件中配置:
|
||||
```env
|
||||
# DeepSeek API配置(必需)
|
||||
DEEPSEEK_API_KEY=your_actual_api_key_here
|
||||
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
|
||||
|
||||
# 邮件通知配置(可选)
|
||||
EMAIL_ENABLED=false
|
||||
SMTP_SERVER=smtp.qq.com
|
||||
SMTP_PORT=587
|
||||
EMAIL_FROM=your_email@qq.com
|
||||
EMAIL_PASSWORD=your_authorization_code
|
||||
EMAIL_TO=receiver@example.com
|
||||
```
|
||||
|
||||
### 4. 测试运行
|
||||
|
||||
```bash
|
||||
# 本地测试
|
||||
streamlit run app.py
|
||||
|
||||
# 指定端口
|
||||
streamlit run app.py --server.port 8501
|
||||
```
|
||||
|
||||
### 5. 服务器部署
|
||||
|
||||
#### 使用Streamlit Cloud
|
||||
|
||||
1. 推送代码到GitHub
|
||||
2. 登录 https://streamlit.io/cloud
|
||||
3. 连接GitHub仓库
|
||||
4. 在Settings中配置环境变量
|
||||
5. 部署
|
||||
|
||||
#### 使用Docker
|
||||
|
||||
创建`Dockerfile`:
|
||||
```dockerfile
|
||||
FROM python:3.9-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
EXPOSE 8501
|
||||
|
||||
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
|
||||
```
|
||||
|
||||
构建和运行:
|
||||
```bash
|
||||
# 构建镜像
|
||||
docker build -t stock-analysis .
|
||||
|
||||
# 运行容器
|
||||
docker run -p 8501:8501 --env-file .env stock-analysis
|
||||
```
|
||||
|
||||
#### 使用PM2(适用于VPS)
|
||||
|
||||
```bash
|
||||
# 安装PM2
|
||||
npm install -g pm2
|
||||
|
||||
# 创建启动脚本 start.sh
|
||||
echo "streamlit run app.py --server.port 8501" > start.sh
|
||||
chmod +x start.sh
|
||||
|
||||
# 使用PM2启动
|
||||
pm2 start start.sh --name stock-analysis
|
||||
|
||||
# 保存PM2配置
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
## 🔧 常见部署问题
|
||||
|
||||
### 1. 端口被占用
|
||||
|
||||
**错误**:`Address already in use`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# 更换端口
|
||||
streamlit run app.py --server.port 8502
|
||||
```
|
||||
|
||||
### 2. 依赖安装失败
|
||||
|
||||
**错误**:`No matching distribution found`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# 升级pip
|
||||
pip install --upgrade pip
|
||||
|
||||
# 使用国内镜像源
|
||||
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
### 3. API连接失败
|
||||
|
||||
**错误**:`Connection timeout`
|
||||
|
||||
**解决**:
|
||||
- 检查网络连接
|
||||
- 验证API Key是否正确
|
||||
- 检查BASE_URL是否正确
|
||||
- 检查防火墙设置
|
||||
|
||||
### 4. 中文字体问题(PDF生成)
|
||||
|
||||
**错误**:`Font not found`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# Linux服务器安装中文字体
|
||||
sudo apt-get install fonts-wqy-zenhei fonts-wqy-microhei
|
||||
|
||||
# 或手动下载字体
|
||||
wget https://github.com/adobe-fonts/source-han-sans/releases/download/2.004R/SourceHanSansCN.zip
|
||||
unzip SourceHanSansCN.zip -d /usr/share/fonts/
|
||||
fc-cache -fv
|
||||
```
|
||||
|
||||
### 5. 数据库权限问题
|
||||
|
||||
**错误**:`Permission denied: stock_monitor.db`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# 设置正确的权限
|
||||
chmod 666 stock_monitor.db stock_analysis.db
|
||||
chmod 777 . # 确保当前目录可写
|
||||
```
|
||||
|
||||
### 6. 内存不足
|
||||
|
||||
**错误**:`MemoryError`
|
||||
|
||||
**解决**:
|
||||
```bash
|
||||
# 增加系统交换空间
|
||||
sudo fallocate -l 2G /swapfile
|
||||
sudo chmod 600 /swapfile
|
||||
sudo mkswap /swapfile
|
||||
sudo swapon /swapfile
|
||||
|
||||
# 或限制Streamlit内存使用
|
||||
streamlit run app.py --server.maxUploadSize 100
|
||||
```
|
||||
|
||||
## 🔐 安全建议
|
||||
|
||||
### 1. 保护敏感信息
|
||||
|
||||
```bash
|
||||
# 确保.env文件在.gitignore中
|
||||
echo ".env" >> .gitignore
|
||||
|
||||
# 不要在代码中硬编码密钥
|
||||
# ❌ BAD
|
||||
API_KEY = "sk-xxxxx"
|
||||
|
||||
# ✅ GOOD
|
||||
API_KEY = os.getenv("DEEPSEEK_API_KEY")
|
||||
```
|
||||
|
||||
### 2. 配置防火墙
|
||||
|
||||
```bash
|
||||
# 只允许特定IP访问
|
||||
# UFW (Ubuntu)
|
||||
sudo ufw allow from YOUR_IP to any port 8501
|
||||
|
||||
# iptables
|
||||
sudo iptables -A INPUT -p tcp --dport 8501 -s YOUR_IP -j ACCEPT
|
||||
```
|
||||
|
||||
### 3. 使用HTTPS
|
||||
|
||||
```bash
|
||||
# 使用nginx反向代理
|
||||
sudo apt-get install nginx
|
||||
|
||||
# 配置nginx
|
||||
sudo nano /etc/nginx/sites-available/stock-analysis
|
||||
```
|
||||
|
||||
nginx配置:
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:8501;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 定期更新
|
||||
|
||||
```bash
|
||||
# 更新依赖包
|
||||
pip list --outdated
|
||||
pip install --upgrade package_name
|
||||
|
||||
# 更新系统
|
||||
sudo apt-get update && sudo apt-get upgrade
|
||||
```
|
||||
|
||||
## 📊 性能优化
|
||||
|
||||
### 1. 启用缓存
|
||||
|
||||
代码中已使用`@st.cache_data`装饰器
|
||||
|
||||
### 2. 配置Streamlit
|
||||
|
||||
创建`.streamlit/config.toml`:
|
||||
```toml
|
||||
[server]
|
||||
port = 8501
|
||||
enableCORS = false
|
||||
enableXsrfProtection = true
|
||||
|
||||
[browser]
|
||||
gatherUsageStats = false
|
||||
|
||||
[client]
|
||||
showErrorDetails = false
|
||||
```
|
||||
|
||||
### 3. 使用CDN
|
||||
|
||||
对于静态资源使用CDN加速
|
||||
|
||||
## 🔄 更新部署
|
||||
|
||||
```bash
|
||||
# 拉取最新代码
|
||||
git pull origin main
|
||||
|
||||
# 更新依赖
|
||||
pip install -r requirements.txt --upgrade
|
||||
|
||||
# 重启服务
|
||||
pm2 restart stock-analysis
|
||||
# 或
|
||||
docker restart stock-analysis
|
||||
```
|
||||
|
||||
## 📝 监控和日志
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
# PM2日志
|
||||
pm2 logs stock-analysis
|
||||
|
||||
# Docker日志
|
||||
docker logs stock-analysis
|
||||
|
||||
# Streamlit日志
|
||||
tail -f ~/.streamlit/logs/*
|
||||
```
|
||||
|
||||
### 监控性能
|
||||
|
||||
```bash
|
||||
# 系统资源
|
||||
htop
|
||||
|
||||
# PM2监控
|
||||
pm2 monit
|
||||
|
||||
# Docker stats
|
||||
docker stats stock-analysis
|
||||
```
|
||||
|
||||
## 🆘 获取帮助
|
||||
|
||||
如果遇到其他问题:
|
||||
1. 查看BUGFIX.md
|
||||
2. 查看GitHub Issues
|
||||
3. 检查系统日志
|
||||
4. 联系技术支持
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2025-10-03
|
||||
|
||||
Reference in New Issue
Block a user