• 侧边栏壁纸
    • 累计撰写 81 篇文章
    • 累计收到 155 条评论
    • 栏目
    • 页面
    • 功能

    创建一个执行命令的API地址,并PM2守护运行

    时间煮雨-Master
    2024-10-13 / 1 评论 / 26 阅读 / 正在检测是否收录...
    1. 安装 Node.js 和 npm

      sudo apt-get install -y nodejs
      sudo apt install npm
    2. 验证安装
      安装完成后,你可以验证 Node.js 和 npm 是否安装成功:

      node -v
      npm -v
    3. 安装 PM2和python3
      现在你可以使用 npm 来安装 PM2:

      npm install -g pm2
      sudo apt install python3-flask
    4. 验证 PM2 安装
      安装完成后,你可以验证 PM2 是否安装成功:

      pm2 -v
    5. 创建Python 脚本
      创建一个名字叫start_app.py的脚本,路径为:/DATA/AppData/API

      from flask import Flask, request, jsonify
      import subprocess
      import threading
      import os
      
      app = Flask(__name__)
      
      def run_command(command):
       """运行命令并返回结果"""
       try:
           result = subprocess.run(
               command,
               shell=True,
               stdout=subprocess.PIPE,
               stderr=subprocess.PIPE,
               text=True,
               check=False
           )
           
           return {
               "stdout": result.stdout,
               "stderr": result.stderr,
               "returncode": result.returncode,
               "status": "completed"
           }
       except Exception as e:
           print(f"Error executing command: {str(e)}")
           return {
               "stdout": "",
               "stderr": str(e),
               "returncode": 1,
               "status": "error"
           }
      
      @app.route('/execute', methods=['POST'])
      def execute_command():
       data = request.json
       command = data.get('command')
       
       if not command:
           return jsonify({"error": "No command provided"}), 400
       
       try:
           result = run_command(command)
           
           return jsonify(result)
               
       except Exception as e:
           return jsonify({
               "stdout": "",
               "stderr": str(e),
               "returncode": 1,
               "status": "error"
           })
      
      if __name__ == '__main__':
       app.run(host='0.0.0.0', port=6329, threaded=True)
    6. 使用 PM2 启动 Python 脚本
      6.1 你可以使用 PM2 来启动这个启动脚本:

      cd /DATA/AppData/API
      pm2 start start_app.py --name "my_api"

      这里的 "my_api" 参数用于为你的进程指定一个名称,方便后续管理。
      6.2 查看和管理进程
      你可以使用以下命令来查看和管理你的 Python 进程:

      pm2 list

      6.3 查看某个进程的详细信息

      pm2 show my_api

      6.4 重启进程

      pm2 restart my_api

      6.5 停止进程:

      pm2 stop my_api

      6.6 删除进程:

      pm2 delete my_api
    7. 配置 PM2 自动启动
      7.1 你可以配置 PM2 在系统启动时自动启动你的 Python 脚本:

      pm2 startup

      7.2 PM2 会输出一个命令,你需要运行这个命令来设置自动启动。例如:

      sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your_username --hp /home/your_username

      your_username替换成你的用户名,比如root就是

      sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /home/root

      7.3 然后保存当前的 PM2 进程列表:

      pm2 save

      7.4 如果将来您想要移除这个启动脚本,可以使用:

      pm2 unstartup systemd
    8. 填写地址
      http://ip:6329/execute
    0

    评论 (1)

    取消
    1. 头像

      [...]pip3 install requests详细教程请参考:青龙常用的JD脚本拉库命令和常用依赖 - 时间煮雨三、部署机器人框架1. 安装 AutManAutMan 是一款功能强大的机器人框架,支持多种平台对接。以下是安装步骤:运行 AutMan 容器:访问 AutMan 后台:安装完成后,通过浏览器访问 http://你的IP:8080 即可进入 AutMan 后台。详细教程请参考:AutMan [...]

      回复