Name Last Update
..
README.md Loading commit data...
langgraph.service Loading commit data...
nginx.conf Loading commit data...
restart.sh Loading commit data...
start.sh Loading commit data...
status.sh Loading commit data...
stop.sh Loading commit data...

部署指南(无 root 权限)

一、服务器准备

  1. 购买阿里云 ECS(Ubuntu 20.04+ 或 CentOS 7+)
  2. 安全组开放端口:222025
  3. 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>

无法访问服务

  1. 检查防火墙:确认阿里云安全组已开放端口 2025
  2. 检查服务状态ps aux | grep start_server_direct
  3. 检查日志tail -f ~/langgraph/logs/app.log
  4. 测试本地访问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

注意事项

  1. 端口权限:端口 2025 > 1024,普通用户可以使用,无需 root
  2. 目录权限:确保 ~/langgraph 目录有读写权限
  3. 日志轮转:定期清理日志文件,避免占用过多磁盘空间
  4. 进程监控:建议定期检查进程是否正常运行
  5. 备份:定期备份代码和 .env 文件

部署检查清单

  • 代码已上传到 ~/langgraph
  • 虚拟环境已创建
  • 依赖已安装
  • .env 文件已配置 API 密钥
  • 服务已启动
  • 可以访问 http://服务器IP:2025/ok
  • 日志输出正常
  • 阿里云安全组已开放端口 2025