找回密码
 立即注册
首页 业界区 安全 Python程序部署在服务器上(同虚拟机,以CentOS7为例) ...

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

东门清心 2025-6-13 19:09:47
一、配置python虚拟环境
  1. # 创建虚拟环境(服务器自带)
  2. python -m venv 环境名
  3. # 切换虚拟环境
  4. source 虚拟环境目录/bin/activate
  5. # 安装对应库
  6. pip install xxx
复制代码
以上操作最好先安装python3.x,因为服务器自带python2.x版本
具体可以查看我的另一篇文章:pycharm连接CentOS虚拟机
二、上传代码

最好上传到虚拟环境的目录下吧,一般的远程连接都可以进行拖拽上传,这里不做过详解
三、编写xxx.service服务

我们打算用sudo systemctl start xxx来后台运行我们的服务
当然也可以用nohup来,但是不推荐,因为其不具备自动恢复功能,万一进程不小心挂掉了,还得自己手动重启
部署jar包其实也可以这么做,但对于jar我还是喜欢nohup
  1. # 切换目录
  2. cd /etc/systemd/system
  3. # 编写服务
  4. sudo vim xxx.service
  5. # 内容
  6. # Description: 这个服务的描述,随便写
  7. # After: 指定该服务在网络服务启动之后启动,确保网络可用
  8. # WorkingDirectory: 表示的.py文件所在的目录
  9. # ExecStart: 以哪个编辑器去运行文件
  10. # Restart: 如果服务意外终止,总是自动重启
  11. # WantedBy: 指定服务在系统多用户模式下启用
  12. # 需要修改的话只需要修改WorkingDirectory,ExecStart,Description即可
  13. [Unit]
  14. Description=Emotion Analysis Service
  15. After=network.target
  16. [Service]
  17. User=root
  18. WorkingDirectory=/opt/emotion/project
  19. ExecStart=/opt/emotion/bin/python /opt/emotion/project/app.py
  20. Restart=always
  21. [Install]
  22. WantedBy=multi-user.target
  23. # 运行(以root运行,加sudo)
  24. sudo systemctl start xxx.servcie/xxx(两种方式,可要.service也可不要)
  25. # 设置开启运行
  26. sudo systemctl enable xxx.service/xxx
复制代码
四、查看
  1. # 查看状态
  2. sudo systemctl status xxx.service/xxx
  3. # 查看日志
  4. sudo journalctl -u "xxx" -f
复制代码
1.png

2.png

这是我把gradio界面部署在虚拟机上,显示active表示运行成功
五、多服务情况

万一虚拟机上我需要部署很多服务,我的虚拟机就部署了三个gradio界面,所以要编写三个服务,这很好办,复制粘贴即可,但是,启动服务之类的就很繁琐了,这就突出shell脚本的作用了,开搞!!
  1. #!/bin/bash
  2. # 简单好用,如果想加开机自启就按照这个格式写就好了,配置开机自启的话start可以不要,看需求
  3. if ["$#" -lt 1];then
  4.         ehco "缺少参数"
  5.         exit;
  6. fi
  7. case $1 in
  8.         "start")
  9.                 echo "========== 开启AI.service =========="
  10.                 sudo systemctl start "AI.service"
  11.                 echo "========== 开启smart.service =========="
  12.                 sudo systemctl start "smart.service"
  13.                 echo "========== 开启sql.service =========="
  14.                 sudo systemctl start "sql.service"
  15.         ;;
  16.         "stop")
  17.                 echo "========== 停止AI.service =========="
  18.                 sudo systemctl stop "AI.service"
  19.                 echo "========== 停止smart.service =========="
  20.                 sudo systemctl stop "smart.service"
  21.                 echo "========== 停止sql.service =========="
  22.                 sudo systemctl stop "sql.service"
  23.         ;;
  24.         "status")
  25.                 echo "========== AI.service状态 =========="
  26.                 sudo systemctl status "AI.service"
  27.                 echo "========== smart.service状态 =========="
  28.                 sudo systemctl status "smart.service"
  29.                 echo "========== sql.service状态 =========="
  30.                 sudo systemctl status "sql.service"
  31.         ;;
  32.         *)
  33.                 echo "输入错误"
  34.         ;;
  35. esac
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册