Erlo

Python程序部署在服务器上(同虚拟机,以CentOS7为例)

2025-06-13 20:29:02 发布   37 浏览  
页面报错/反馈
收藏 点赞

一、配置python虚拟环境

# 创建虚拟环境(服务器自带)
python -m venv 环境名

# 切换虚拟环境
source 虚拟环境目录/bin/activate

# 安装对应库
pip install xxx

以上操作最好先安装python3.x,因为服务器自带python2.x版本
具体可以查看我的另一篇文章:pycharm连接CentOS虚拟机

二、上传代码

最好上传到虚拟环境的目录下吧,一般的远程连接都可以进行拖拽上传,这里不做过详解

三、编写xxx.service服务

我们打算用sudo systemctl start xxx来后台运行我们的服务
当然也可以用nohup来,但是不推荐,因为其不具备自动恢复功能,万一进程不小心挂掉了,还得自己手动重启
部署jar包其实也可以这么做,但对于jar我还是喜欢nohup

# 切换目录
cd /etc/systemd/system

# 编写服务
sudo vim xxx.service

# 内容
# Description: 这个服务的描述,随便写
# After: 指定该服务在网络服务启动之后启动,确保网络可用
# WorkingDirectory: 表示的.py文件所在的目录
# ExecStart: 以哪个编辑器去运行文件
# Restart: 如果服务意外终止,总是自动重启
# WantedBy: 指定服务在系统多用户模式下启用
# 需要修改的话只需要修改WorkingDirectory,ExecStart,Description即可

[Unit]
Description=Emotion Analysis Service
After=network.target

[Service]
User=root
WorkingDirectory=/opt/emotion/project
ExecStart=/opt/emotion/bin/python /opt/emotion/project/app.py
Restart=always

[Install]
WantedBy=multi-user.target

# 运行(以root运行,加sudo)
sudo systemctl start xxx.servcie/xxx(两种方式,可要.service也可不要)

# 设置开启运行
sudo systemctl enable xxx.service/xxx

四、查看

# 查看状态
sudo systemctl status xxx.service/xxx

# 查看日志
sudo journalctl -u "xxx" -f

这是我把gradio界面部署在虚拟机上,显示active表示运行成功

五、多服务情况

万一虚拟机上我需要部署很多服务,我的虚拟机就部署了三个gradio界面,所以要编写三个服务,这很好办,复制粘贴即可,但是,启动服务之类的就很繁琐了,这就突出shell脚本的作用了,开搞!!

#!/bin/bash
# 简单好用,如果想加开机自启就按照这个格式写就好了,配置开机自启的话start可以不要,看需求
if ["$#" -lt 1];then
	ehco "缺少参数"
	exit;
fi
case $1 in
	"start")
		echo "========== 开启AI.service =========="
		sudo systemctl start "AI.service"
		echo "========== 开启smart.service =========="
		sudo systemctl start "smart.service"
		echo "========== 开启sql.service =========="
		sudo systemctl start "sql.service"
	;;
	"stop")
		echo "========== 停止AI.service =========="
		sudo systemctl stop "AI.service"
		echo "========== 停止smart.service =========="
		sudo systemctl stop "smart.service"
		echo "========== 停止sql.service =========="
		sudo systemctl stop "sql.service"
	;;
	"status")
		echo "========== AI.service状态 =========="
		sudo systemctl status "AI.service"
		echo "========== smart.service状态 =========="
		sudo systemctl status "smart.service"
		echo "========== sql.service状态 =========="
		sudo systemctl status "sql.service"
	;;
	*)
		echo "输入错误"
	;;
esac

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认