使用aws免费服务器搭建python脚本调用服务

1、申请aws免费服务器

  • 创建“新AWS账户”:
  • 使用邮箱注册新账号:
  • 进入以下界面后,点击”启动实例“按钮:
  • 填写服务器参数后,点击“启动实例”:
  • 这时你可以在“实例”页面的列表中看见你的服务器实例:
  • 点击“实例ID”即可进入对应实例中,点击连接:
  • 点击“连接”即可进入命令行界面对服务器进行管理了:

2、部署nextjs项目

nextjs的部署非常的简单,仅仅需要nodejs和pm2即可

  • 安装n来管理nodejs的版本
    • curl -L https://git.io/n-install | bash
    • 安装完成后,关闭当前终端窗口并重新打开一个新的终端窗口,或者运行以下命令使”n”生效
      source ~/.bashrc
    • 使用”n”来安装Node.js版本。例如,要安装最新版本的Node.js,运行以下命令:
      n lts
    • 安装完成后,您可以使用以下命令查看已安装的Node.js版本
      node -v
    • 使用”n”来切换Node.js版本。例如,如果您想切换到特定版本,可以运行以下命令:
      n <version_number>
  • 安装pm2来管理我的nextjs项目:
    • npm install pm2 -g
      pm2 –version
    • 项目package.json的scripts中加入:
      “start”: “next start -p 3000”,
      “build”: “next build && PORT=3000 npm start”,
    • pm2 start npm –name “nextjs-pyrhon-runner” — run build
    • pm2 save
      PS:”pm2 save”命令的作用是将当前正在运行的PM2进程列表保存到文件中,以便在系统重启后能够自动恢复这些进程。当您运行”pm2 save”命令时,PM2会将当前的进程列表保存到一个JSON文件中,通常是~/.pm2/dump.pm2文件。通过运行”pm2 save”命令,您可以确保在系统重启后,之前已经由PM2启动的应用程序将会自动重新启动,而不需要手动干预。这可以帮助您保持应用程序的持续运行和监控,提高系统的稳定性和可靠性。
    • pm2 startup
      PS:”pm2 startup”命令的作用是生成一个启动脚本,以便在系统启动时自动启动PM2进程管理工具,并恢复之前已经启动的应用程序。通过运行”pm2 startup”命令,PM2将生成一个启动脚本(通常是Systemd或Init脚本),并将其添加到系统启动项中,以确保在系统重新启动后,PM2及其管理的应用程序也会自动启动。这样,您无需手动启动PM2或重新启动已经运行的应用程序,系统启动时会自动执行这些操作,使您的Node.js应用程序持续运行并受到监控
    • 您还可以使用PM2来监视应用程序、重新启动应用程序、停止应用程序等。以下是一些常用的PM2命令:
      • 监视应用程序:pm2 monit
      • 列出正在运行的应用程序:pm2 list
      • 停止应用程序:pm2 stop
      • 重新启动应用程序:pm2 restart

3、nodejs调用python脚本

import { execFile } from 'child_process';
import { NextResponse } from 'next/server';
import path from 'path';

export async function GET(request: Request) {
    try {
        // const scriptPath = path.join(__dirname, '/opt/pys/script.py');

        const result = await new Promise((resolve, reject) => {
            execFile('python3', ["/opt/pys/script.py"], (error, stdout, stderr) => {
                if (error) {
                    console.error('Error executing script:', error);
                    reject(error);
                    return;
                }

                try {
                    const result = JSON.parse(stdout);
                    console.log('Script output:', result);
                    resolve(result);
                } catch (parseError) {
                    console.error('Error parsing script output:', parseError);
                    reject(parseError);
                }
            });
        });

        return NextResponse.json(result);
    } catch (error) {
        return NextResponse.error();
    }
}

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部