将Next.js部署到Apache服务器

时间:2019-11-28 20:11:31

标签: node.js apache cpanel next.js

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

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

还可以在子域上完成吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

为了以清晰的术语开头,以便我们在同一页面上,当人们说“服务器”时,有两种或三种截然不同的含义:

  • 服务器计算机是一台连接到Internet的计算机,您打算使用它为Internet上的人们提供服务。

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

  • “服务器即服务”是由公司提供的Web应用程序,用于存储您的代码,然后根据需要使用正确的服务器程序将其放入服务器计算机。

在这里,我们还要定义:

  • 编程语言是您的网站使用的语言。某些网站没有语言(只是原始的HTML / CSS文件,可以直接返回给用户)。但是,许多站点都有一些应在服务器上运行的代码,然后应将这些代码的结果返回给用户。

在您的情况下,您有一个机器,除了运行 Program Apache(或者可能是“ Apache HTTP Server ”)。 Apache HTTP服务器非常古老且经过验证,非常擅长将原始文件提供给用户。它还可以运行某些编程语言(例如PHP)并返回结果。

但是,Next.JS构建在编程语言 Javascript之上,而Apache却没有运行Javascript的能力。 Next.JS相反希望其服务器程序为Node

因此,这里的问题基本上是您有一把锤子,但只有螺丝钉。您无法使用现有的Apache工具来解决您需要解决的问题,运行Node代码并返回结果。要解决此问题,您有两种选择:

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

第二种方法(可能更简单)是放弃此机器,而使用服务器即服务。 Heroku,AWS和Netlify均支持Next.JS,并具有免费层。不过,最简单的解决方案可能是将其部署在Vercel上,该服务器是由制作Next.JS的同一团队运行的服务器即服务,并且具有非常宽泛的免费层供您入门

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