Linux上将conda环境VLLM服务注册为开机自启
这里写目录标题
- 一、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
thenecho "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" ]]; thenecho "Vllm is running with PID: $FLASK_PID"
elseecho "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
相关文章:

Linux上将conda环境VLLM服务注册为开机自启
这里写目录标题 一、Systemd服务方式1、编写启动脚本2、保存脚本并赋予权限3、创建 systemd 服务单元文件3、 启用并测试服务4、停止systemd服务 二、Crontab方式1、编辑crontab文件2、添加开机启动任务 参考链接 项目需要vllm进行模型支撑,所以需要做成开机自启保证…...
如何快速开始一个前端项目
如何快速开始一个前端项目 第一步:下载 NVM 这个是 Node 的一个版本管理工具,下载下来以后可以对 Node 轻松进行版本管理。 具体下载步骤如下链接:nvm:Node.js版本管理工具的安装与使用指南,-CSDN博客 第二步:选择…...

k8s的pod挂载共享内存
k8s的pod挂载共享内存,限制不生效问题: 注:/dev/shm 是 Linux 系统中用于共享内存的特殊路径。通过将 emptyDir 的 medium 设置为 Memory,可以确保 /dev/shm 正确地挂载到一个基于内存的文件系统,从而实现高效的共享内…...

ubuntu创建虚拟环境安装ultralytics
安装Python和pip(如果尚未安装): sudo apt update sudo apt install python3 python3-pip 安装virtualenv: sudo pip3 install virtualenv 创建虚拟环境: sudo virtualenv -p python3 myenv 这里myenv是虚拟环境的名称,-p python3指定使用…...

【掌握 DDL】:SQL 中的数据库与表管理
掌握 DDL:SQL 中的数据库与表管理 掌握 DDL:SQL 中的数据库与表管理数据库 DDL创建数据库查看数据库查看所有数据库查看数据库创建语句 进入数据库删除数据库备份数据库备份恢复 查看数据库连接深入理解数据库创建与删除数据库字符集与校验规则 表 DLL创…...
【Unity中的数学】—— 四元数
一、四元数的定义😎 四元数是一种高阶复数,是一个四维空间的概念,相对于复数的二维空间。它可以表示为 q s i x j y k z q s ix jy kz qsixjykz,其中 s s s、 x x x、 y y y、 z z z 都是实数,并且满足 i …...
Kubernetes 虚拟机安全关机操作流程
不规范关机的危害 Kubernetes集群(尤其是基于VirtualBox搭的)关机/暂停时,如果不规范操作,会导致: etcd 数据损坏 kubelet 容器状态丢失 PV 挂载紊乱(尤其用了 local PV / hostPath) 集群启…...
PDF生成模块开发经验分享
在日常的项目开发中,PDF文档的生成是一个常见的需求。无论是用于申报单、审批结果通知书还是其他业务相关的文档输出,一个高效且灵活的PDF生成功能都是不可或缺的。本文将基于我使用Java(Spring Boot)和iText库开发PDF生成模块的经…...

vscode docker 调试
目录 启动docker: vscode docker 调试 如果已经安装docker并且启动了。 启动docker: docker exec -it nlf /bin/bash vscode docker 调试 按照图中1 2 3 的顺序,进入,可以加载docker进行调试了。...

HTML01:HTML基本结构
HTML基本结构 <html> <head><meta charset"UTF-8"><title>我的第一个网页</title> </head> <body>我的第一个网页 </body> </html><body、</body等成对的标签,分别叫开发标签和闭合标签单独…...

URP - 屏幕图像(_CameraOpaqueTexture)
首先需要在unity中开启屏幕图像开关才可以使用该纹理 同样只有不透明对象才能被渲染到屏幕图像中 若想要该对象不被渲染到屏幕图像中,可以将其Shader的渲染队列改为 "Queue" "Transparent" 如何在Shader中使用_CameraOpaqueTexture…...
Inno Setup专业打包指南:从基础到高级应用
Inno Setup专业打包指南:从基础到高级应用 Inno Setup是一款免费开源的Windows安装程序制作工具,以其轻量、易用、功能强大而备受开发者青睐。它通过脚本语言定义安装行为,能够创建标准的Windows安装向导,支持文件安装、注册表操…...

如何在Ubuntu上安装NVIDIA显卡驱动?
作者:算力魔方创始人/英特尔创新大使刘力 一,前言 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windows系统不同,Linux系统通常不会自动安装专有显卡驱动。本文将详细介绍在Ubuntu系统上安…...
MySQL 主从配置超详细教程
文章目录 前言一、安装 MySQL二、主服务器(Master)配置三、从服务器(Slave)配置四、测试主从复制五、注意事项 前言 MySQL 主从配置是一种实用的数据库架构,主服务器处理写入操作,从服务器负责只读操作&am…...
Linux 磁盘初始化与扩容操作手册
📦 1. 初始化服务器,新磁盘挂载为 LV ✅ 使用 ext4 格式 # 创建挂载目录 mkdir -p /datatmp# 初始化物理卷 sudo pvcreate /dev/sdb# 创建卷组 sudo vgcreate vg_data /dev/sdb# 创建逻辑卷(使用全部空间) sudo lvcreate -l 100…...

机器视觉的手机FPC油墨丝印应用
在现代智能手机制造过程中,精密的组件装配和质量控制是确保产品性能和用户体验的关键。其中,柔性印刷电路板(FPC)的油墨丝印工艺尤为关键,它不仅影响到电路板的美观,更直接关系到电路的导电性能和可靠性。而…...

Android智能体开发框架-架构文档
编写目的 1 提高智能体的开发效率, 2 降低系统开销, 3 支持跨平台扩展, 4 提供统一的开发范式 整体架构 接口层(api层):提供API供开发者调用,支持Java/Kotlin和Native(C&#x…...

MySQL----数据库的操作
1. 查看数据库 语法:show databases; 示例展示: 2. 创建库 语法: CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name]; 注意:[] 为可选项 {} 为必选项 database_name 为数据…...

两种方法求解最长公共子序列问题并输出所有解
最长公共子序列(Longest Common Subsequence, LCS)是动态规划领域的经典问题,广泛应用于生物信息学(如DNA序列比对)、文本差异比对(如Git版本控制)等领域。本文将通过自顶向下递归记忆化…...

【Linux网络】网络协议基础
网络基础 计算机网络背景 独立模式:计算机之间相互独立 网络互联:多台计算机连接在一起,完成数据共享 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起 广域网WAN:将远隔千里的计算机都连在一起 所谓"局域网"和"广域网"只是一个相对的概念.比…...
挑战用豆包教我学Java01天
今天是豆包教我学Java的第一天,废话不多说直接开始。 1.每日题目: 基础语法与数据类型 题目:编写一个 Java 程序,从控制台读取两个整数,然后计算它们的和、差、积、商,并输出结果。题目:编写…...
0903Redux改造项目_用户信息_状态管理-react-仿低代码平台项目
文章目录 1 Redux管理用户信息1.1 定义store和reducer1.2 使用useSeletor 2 自定义Hook统一加载用户信息存储Redux3 根据用户登录状态动态跳转页面结语 1 Redux管理用户信息 1.1 定义store和reducer src/store/userReducer.ts代码如下所示: import { createSlice…...

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读
《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表,来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步,但由于推理能力有限,数…...

windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
1.下载 https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz2.配置使用 KRaft 模式 2.1 修改 Kafka 的配置文件 cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft 修改 server.properties # 设置 Kafka 数据日志存储目录 log.dirsD:\\data\\bigdata\\kaf…...

Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析
注:本文为 “Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析” 相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Xilinx FPGA 管脚 XDC 约束之:物理约束 FPGA技术实战 于 2020-02-04 17:14:53 发布 说明&#x…...

Python-JsonRPC
Python-JsonRPC 使用Python学习JsonRPC数据交互 1-核心知识点 1)什么是JsonRPC,这种协议是如何工作的?->使用请求进行验证2)JsonRPC可以使用Postman进行验证吗?->可以使用POSTMAN进行调用(使用HTTP请…...

Redis从入门到实战——实战篇(下)
四、达人探店 1. 发布探店笔记 探店笔记类似于点评网站的评价,往往是图文结合。对应的表有两个: tb_blog:探店笔记表,包含笔记中的标题、文字、图片等tb_blog_comments:其他用户对探店笔记的评价 步骤①࿱…...

面试问题(连载。。。。)
flexbox 和 crid 的区别 1. 布局维度与核心特性 Flexbox(弹性盒子) 一维布局:专注于行或列的线性排列,适合单方向(水平或垂直)的布局需求。动态分配空间:通过 flex-grow、flex-shrink 和 flex…...
springboot项目tomcat中加载不了
Spring Boot项目在Tomcat中加载不了的问题可能由多种原因引起,包括打包方式不正确、依赖配置错误、启动类配置不当等。以下是详细的解决方案: 1. 修改项目打包形式 将项目打包形式从jar改为war,以确保项目以正确的格式被Tomcat加载。在pom.…...
venv和pyenv在mac上
是的,理论上你可以用 venv 选择 Python 版本,但有一个关键前提:系统中必须已安装该版本的 Python 解释器。venv 本身并不提供 Python 版本管理功能,它只是基于现有的 Python 环境创建虚拟隔离空间。以下分场景详细说明:…...