16. 小主机不要怕 Next13+ 还有一种独立的拯救部署方案

510 阅读2分钟

大家好,这里是梦兽编程。如果想看这一切的关于的next.js13开发的所有内容,可以点击专栏中查阅next.js 实战开发

购买的主机配置小

一般我们个人购买服务,在人的常识里面会很容易划分到不必要的支出。所以我们一般人都会等各大云厂商大致力度比较大的时候购买廉价的服务器。

但这些服务器都有一个致命的问题,那就是配置往往都比较低。比如1核1G这种配置规模。

这种主机如果用来搭建一个php的wordpress,或者golang等,都是没什么问题。

Node.js 内存大户

使用node.js大家都知道它的cpu使用资源其实在通常情况下都是比较低的,但是在内存方面,node.js是一个很消耗资源的应用。

如果你是手写node.js还是比较好,但如果你使用webpack等工具做软件工程化的应用需要进行应用构建。那么这个1G的服务器或许有可能无法构建你的next.js应用。

Next.js 提供的standalone

有了standlaone,那就可以独立的运行.next,无需用依赖node_modules,特别在docker容器部署到k8s的时候,如果你不使用standlaone,有可能往k8s推送的镜像平均高达2.6G。有了它可能就100-200MB就可以解决了。

如果你购买的主机是1G,在进行Build的过程,webpack(node.js)会告诉你的内存不足的提示。这个时候就会比较急了。我们可以在一台性能比较高的主机上构建好standlaone在那这个standlaone文件夹全部发送到服务器上进行node server.js进行运行。

我们要如何使用standlaone?

我们只需修改next.config.js

module.exports = {
  output: 'standalone',
}

next.js自动创建一个 .next/standalone 文件夹,在不安装 node_modules 的情况下进行部署。

此外,还会输出一个最小 server.js 文件,该文件可用于代替 next start 。

默认情况下,此最小服务器不会复制 public 和 .next/static 文件夹,因为理想情况下,这些文件夹应由 CDN 处理,尽管这些文件夹可以手动复制到 standalone/public and standalone/.next/static 文件夹中,之后 server.js 文件将自动提供这些文件夹

如果你的网站有资源存放到public下需要将public的内容拷贝一下哦!

梦兽编程倔强号

梦兽编程知乎

梦兽编程bilibili