将 Next.js 部署到 Apache 服务器

Phi*_*hil 14 apache cpanel node.js next.js

我一直在本地开发 Next.js 网站,现在想将其设置在我的 Apache 服务器上(使用 cPanel)。但是,我对 Next.js 和 Node 应用程序非常陌生,不太确定如何去做。

有人成功做到这一点吗?您能否列出所需的步骤以及服务器上应有哪些文件?

另外,这可以在子域上完成吗?

谢谢你!

Zac*_*ack 10

首先从一些明确的术语开始,这样我们就可以达成共识,当人们说“服务器”时,他们的意思有两三个截然不同的含义:

  • 服务器计算机是连接到互联网的计算机,您打算用它来为互联网上的人们提供服务。

  • 服务器程序是您在服务器计算机上运行的一些软件。服务器程序的工作是实际计算对各种请求的响应。

  • 服务器即服务是由公司提供的网络应用程序,它存储您的代码,然后根据需要将其放置到具有正确服务器程序的服务器计算机上。

当我们在这里时,我们也定义一下:

  • 编程语言是您的网站编写所用的语言。有些网站没有语言(只是原始的 HTML/CSS 文件,旨在直接返回给用户)。不过,许多站点都有一些应在服务器上运行的代码,然后该代码的结果应返回给用户。

就您而言,您有一台机器,除了它正在运行Apache程序(或者可能是“ Apache HTTP Server ”)之外,我们不知道其状况。Apache HTTP 服务器非常古老且经过验证,并且非常擅长将原始文件返回给用户。它还可以运行一些编程语言(例如 PHP)并返回结果。

然而,Next.JS 是建立在编程语言Javascript之上的,Apache 不具备运行该语言的能力。Next.JS 希望它的服务器程序是Node

所以这里的问题基本上是你有一把锤子,但只有螺丝。你不能使用你拥有的工具 Apache 来解决你需要解决的问题,运行 Node 代码并返回结果。要解决这个问题,您有两种选择:

首先,您可以找到一种方法来访问当前正在运行 Apache 的服务器计算机,并告诉它在启动时运行指向 Next.JS 代码的 Node。这可能是不可能的,具体取决于谁拥有这台机器以及他们如何设置它。

其次,可能更容易,就是放弃这台机器,转而使用服务器即服务。Heroku、AWS 和 Netlify 都支持 Next.JS 并且有免费套餐。不过,最简单的解决方案可能是将其部署在Vercel上,Vercel 是一个服务器即服务,由制作 Next.JS 的同一团队运行,并且有非常慷慨的免费套餐供您开始使用。

不过,好消息是 next.js 确实完全支持从子域托管。


sta*_*lee 7

Next.JS 允许您构建功能齐全的节点应用程序,以及简单的静态生成站点,例如 Jeckyl 或 Docpad。如果您的用例是一个简单的静态生成网站,请查看此处:https ://nextjs.org/docs/advanced-features/static-html-export

特别是,该next build && next export命令将创建直接通过 Apache 或 Ngnix 等 HTTP 服务器托管站点所需的所有 HTML 和资产。内容将输出到out可以作为服务器根目录的目录。

请密切注意此方法不支持哪些功能。