部署指南(无 root 权限)
一、服务器准备
- 购买阿里云 ECS(Ubuntu 20.04+ 或 CentOS 7+)
- 安全组开放端口:
22、2025 - SSH 连接服务器(使用普通用户,非 root)
二、检查环境
# 检查 Python 版本(需要 Python 3.8+)
python3 --version
# 如果没有 Python3,尝试安装(可能需要管理员协助)
# 或使用 conda/miniconda 等用户级 Python 环境
三、部署应用
1. 上传代码
# 方式1: 使用 scp(本地执行,替换 username 为你的用户名)
scp -r . username@服务器IP:~/langgraph/
# 方式2: 使用 Git
cd ~
git clone <仓库地址> langgraph
# 方式3: 使用 FTP/SFTP 工具上传到 ~/langgraph/
2. 安装依赖
cd ~/langgraph
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install uvicorn python-dotenv
3. 配置环境变量
cd ~/langgraph
vim .env
添加内容:
OPENAI_API_KEY=your-api-key
OPENAI_BASE_URL=https://api.deepseek.com/v1
4. 创建日志目录
mkdir -p ~/langgraph/logs
四、启动服务
方式1: 使用启动脚本(推荐)
cd ~/langgraph
chmod +x deploy/start.sh deploy/stop.sh deploy/restart.sh
# 启动服务
./deploy/start.sh
# 停止服务
./deploy/stop.sh
# 重启服务
./deploy/restart.sh
方式2: 使用 nohup 后台运行
cd ~/langgraph
source venv/bin/activate
nohup python start_server_direct.py > logs/app.log 2>&1 &
echo $! > logs/app.pid # 保存进程ID
方式3: 使用 screen(推荐用于长时间运行)
# 安装 screen(如果未安装,可能需要管理员协助)
# 或使用 tmux
# 创建 screen 会话
screen -S langgraph
# 在 screen 中启动
cd ~/langgraph
source venv/bin/activate
python start_server_direct.py
# 按 Ctrl+A 然后按 D 退出 screen(服务继续运行)
# 重新连接 screen
screen -r langgraph
方式4: 使用 tmux
# 创建 tmux 会话
tmux new -s langgraph
# 在 tmux 中启动
cd ~/langgraph
source venv/bin/activate
python start_server_direct.py
# 按 Ctrl+B 然后按 D 退出 tmux(服务继续运行)
# 重新连接 tmux
tmux attach -t langgraph
五、验证部署
# 检查服务是否运行
curl http://localhost:2025/ok
# 或从外部访问(替换为你的服务器IP)
curl http://服务器IP:2025/ok
# 查看日志
tail -f ~/langgraph/logs/app.log
# 检查进程
ps aux | grep start_server_direct
六、进程管理
查看进程
# 查看进程ID
cat ~/langgraph/logs/app.pid
# 查看进程状态
ps -p $(cat ~/langgraph/logs/app.pid 2>/dev/null)
停止服务
# 如果使用启动脚本
~/langgraph/deploy/stop.sh
# 如果使用 nohup
kill $(cat ~/langgraph/logs/app.pid)
# 如果使用 screen
screen -S langgraph -X quit
# 如果使用 tmux
tmux kill-session -t langgraph
# 手动查找并杀死进程
ps aux | grep start_server_direct | grep -v grep | awk '{print $2}' | xargs kill
重启服务
# 使用启动脚本
~/langgraph/deploy/restart.sh
# 或手动停止后重新启动
./deploy/stop.sh
./deploy/start.sh
七、更新代码
cd ~/langgraph
# 停止服务
./deploy/stop.sh
# 更新代码(根据你的方式)
git pull
# 或重新上传文件
# 更新依赖(如果有新依赖)
source venv/bin/activate
pip install -r requirements.txt
# 重启服务
./deploy/start.sh
八、日志管理
# 查看实时日志
tail -f ~/langgraph/logs/app.log
# 查看最近100行
tail -n 100 ~/langgraph/logs/app.log
# 查看错误日志
grep -i error ~/langgraph/logs/app.log
# 清空日志(谨慎使用)
> ~/langgraph/logs/app.log
九、开机自启(可选)
方法1: 添加到 ~/.bashrc 或 ~/.profile
# 编辑 ~/.bashrc
vim ~/.bashrc
# 添加以下内容(如果是交互式登录,使用 ~/.profile)
if [ -f ~/langgraph/deploy/start.sh ]; then
~/langgraph/deploy/start.sh
fi
注意:这种方法会在每次登录时启动,可能不是最佳选择。
方法2: 使用 cron(推荐)
# 编辑 crontab
crontab -e
# 添加以下行(服务器重启后自动启动)
@reboot sleep 30 && /bin/bash ~/langgraph/deploy/start.sh
十、故障排查
服务无法启动
# 检查 Python 环境
cd ~/langgraph
source venv/bin/activate
python --version
which python
# 检查依赖
pip list | grep langgraph
# 手动测试启动
python start_server_direct.py
端口被占用
# 查看端口占用
lsof -i :2025
# 或
netstat -tlnp | grep 2025
# 杀死占用进程
kill -9 <PID>
无法访问服务
- 检查防火墙:确认阿里云安全组已开放端口 2025
-
检查服务状态:
ps aux | grep start_server_direct -
检查日志:
tail -f ~/langgraph/logs/app.log -
测试本地访问:
curl http://localhost:2025/ok
API 密钥错误
# 检查 .env 文件
cat ~/langgraph/.env
# 测试环境变量
cd ~/langgraph
source venv/bin/activate
python -c "import os; from dotenv import load_dotenv; load_dotenv(); print(os.getenv('OPENAI_API_KEY'))"
常用命令速查
# 启动服务
~/langgraph/deploy/start.sh
# 停止服务
~/langgraph/deploy/stop.sh
# 重启服务
~/langgraph/deploy/restart.sh
# 查看状态
ps aux | grep start_server_direct | grep -v grep
# 查看日志
tail -f ~/langgraph/logs/app.log
# 测试服务
curl http://localhost:2025/ok
注意事项
- 端口权限:端口 2025 > 1024,普通用户可以使用,无需 root
-
目录权限:确保
~/langgraph目录有读写权限 - 日志轮转:定期清理日志文件,避免占用过多磁盘空间
- 进程监控:建议定期检查进程是否正常运行
-
备份:定期备份代码和
.env文件
部署检查清单
-
代码已上传到
~/langgraph - 虚拟环境已创建
- 依赖已安装
-
.env文件已配置 API 密钥 - 服务已启动
-
可以访问
http://服务器IP:2025/ok - 日志输出正常
- 阿里云安全组已开放端口 2025