使用 IIS 在 EC2 实例上运行 Next.js 应用程序

Posted

技术标签:

【中文标题】使用 IIS 在 EC2 实例上运行 Next.js 应用程序【英文标题】:Running Next.js App on EC2 Instance with IIS 【发布时间】:2021-12-21 13:51:40 【问题描述】:

我的 Next.js 网站有一个 AWS EC2 实例。如果我在 Next.js 应用程序上打开终端并运行next start,它运行良好,我可以访问该网站。但是,我需要始终在实例上保持终端打开,以使网站正常工作。

我的问题是,我可以使用 IIS 来保持 Next.js 网站以 next start 运行吗?我不想创建一个完整的节点后端来提供静态 html 页面,因为它会弄乱网站的一些动态方面。那么有没有办法在不为静态页面运行 next export 的情况下自行运行 Next.js 应用程序?

更新

我尝试使用 PM2 运行 Next.js 应用程序。当我在终端中运行npm start 时,它工作正常。但是,当我运行 pm2 start npm -- start(或任何变体)时,它会停止服务器并多次记录此错误:

SyntaxError: Unexpected token ':'
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:33:23)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
:: Created by npm, please don't edit manually.

【问题讨论】:

【参考方案1】:

你可以使用forever在后端运行你的进程,下面的例子是如何用iis实现它

https://www.technoapple.com/blog/post/run-node-as-background-by-using-forever

【讨论】:

我尝试永远使用,但是在运行forever npm run start 之后,我收到了错误script C:\Users\Administrator\Desktop\client\npm does not exist。然后我用forever ./node_modules/.bin/next start 永远指向下一个目录,我收到以下错误:basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") ^^^^^^^ SyntaxError: missing ) after argument list 命令应该是永远启动 -c "npm run start" ./ 该命令也不起作用。它只是说Forever processing file 然后什么也没有发生

以上是关于使用 IIS 在 EC2 实例上运行 Next.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IIS7 服务器在 amazon ec2 windows 实例上托管域名

AWS EC2:允许特定用户运行特定命令

如何使用 JMX 连接到在 EC2 上运行的 Java 实例

AWS Java SDK - 在 EC2 实例上使用 SSM 运行命令

如何触发 EC2 实例并在每个实例上上传/运行启动脚本?

为啥多线程 python 程序在 ec2 微实例上运行缓慢?