这里写目录标题
- 一、Systemd服务方式
- 1、编写启动脚本
- 2、保存脚本并赋予权限
- 3、创建 systemd 服务单元文件
- 3、 启用并测试服务
- 4、停止systemd服务
- 二、Crontab方式
- 1、编辑`crontab`文件
- 2、添加开机启动任务
- 参考链接

项目需要vllm进行模型支撑,所以需要做成开机自启保证现场部署,做了些调研,梳理了几种部署方式,例如docker部署、源码部署,脚本的不同自启方式,现在写下几种
一、Systemd服务方式
1、编写启动脚本
编写启动脚本,实现激活 conda
环境后启动 vllm
服务。
#!/bin/shell
# 检查是否已经安装了 conda
if ! command -v conda &> /dev/null
then
echo "conda not found. Please install Anaconda or Miniconda."
exit 1
fi
# 激活特定的 Conda 环境
source "$(conda info --base)/bin/activate" vllm
# 检查激活的环境
current_env=$(conda info --envs | grep '*')
echo "Current active environment: $current_env"
# 运行 app.py 并将输出重定向到日志文件
vllm serve Qwen/Qwen2.5-32B-Instruct --dtype auto --gpu-memory-utilization 0.95 --served-model-name Qwen2.5-32B-Instruct --tensor-parallel-size 2 --host 0.0.0.0 --port 8000 > /home/ai-daosmos/vllm.log 2>&1 &
# 将后台进程 disown 以防止 shell 退出时影响到它
disown
# 输出成功信息
echo "Vllm has been started successfully."
# 等待一段时间以确保应用启动完成
sleep 5
# 检查应用是否成功启动
FLASK_PID=$(pgrep -f "flask run --host 0.0.0.0 --port=8000")
if [[ -n "$FLASK_PID" ]]; then
echo "Vllm is running with PID: $FLASK_PID"
else
echo "Failed to start Vllm."
exit 1
fi
2、保存脚本并赋予权限
chmod +x /home/ai-daosmos/scripts/start_vllm.sh
3、创建 systemd 服务单元文件
创建服务配置文件/etc/systemd/system/vllm.service
,内容如下:
[Unit]
Description=Application (Vllm)
After=network.target
[Service]
Type=simple
User=<your_user>
WorkingDirectory=/home/ai-daosmos/
ExecStart=/bin/shell /home/ai-daosmos/scripts/start_vllm.sh
Restart=always
Environment="PATH=/root/anaconda3/envs/vllm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
[Install]
WantedBy=multi-user.target
参数说明 :
- User: 替换为实际运行脚本的用户。
- WorkingDirectory: Flask 应用的工作目录。
- ExecStart: 脚本的完整路径。
- Environment: 设置 Conda 环境的 PATH,确保 命令可用。
3、 启用并测试服务
重新加载 systemd
配置 :
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
启用开机自启 :
sudo systemctl enable vllm
手动启动服务 :
sudo systemctl start vllm
查看服务状态 (检测是否部署成功):
sudo systemctl status vllm
journalctl -u dify.service -f
后续每次开机时,系统将自动进入您的 conda
环境并启动 vllm
服务。
4、停止systemd服务
后续如果想停止systemd相关服务。
停止服务:使用以下命令停止一个正在运行的服务:
sudo systemctl stop <service_name>
禁用服务:为了防止该服务在下次启动时自动运行,可以使用以下命令禁用服务:
sudo systemctl disable <service_name>
查看服务状态:如果你想要查看特定服务的状态,可以使用以下命令:
systemctl status <service_name>.service
二、Crontab方式
1、编辑crontab
文件
打开当前用户的crontab文件:
crontab -e
2、添加开机启动任务
@reboot /path/to/your/vllm_server >> /home/ai-daosmos/vllm.log 2>&1
这将在系统启动时执行VLLM服务器,并将输出重定向到/var/log/vllm.log文件中。
推荐使用systemd服务来管理VLLM的开机自启,因为它提供了更好的控制和灵活性。确保你的VLLM安装路径和用户权限设置正确,以避免权限或路径问题导致服务无法启动。
参考链接
https://blog.csdn.net/sunyuhua_keyboard/article/details/143528529
https://blog.csdn.net/su_xiao_wei/article/details/145779428