Next.js 在 VPS 上需要多少 RAM?
通过分离构建内存、空闲内存和加载内存来调整 Next.js VPS 的大小。了解如何衡量整个服务器的应用程序和预算。
您的应用程序在本地运行。在 VPS 上,它还需要能够承受 SSH 断开连接、为其资产提供服务并处理域后面的表单。本指南遵循从生产构建到公共验证的路径。
这些示例针对具有传统构建和启动脚本的 Next.js 应用程序,在具有 systemd 和现有 Nginx 反向代理的 Linux 上。根据您的环境调整路径、服务帐户和域。静态导出和请求呈现的应用程序具有不同的部署需求。
从已知的提交开始,其锁定文件和与已安装的 Next.js 版本兼容的节点版本。对于 npm,npm ci 从该锁定文件安装依赖项。保留 pnpm 或 Yarn 的现有包管理器和可重复安装模式。
在发布目录或 CI 中构建,而不是在正在运行的服务器的输出目录中构建。构建可以执行应用程序代码并联系服务。提供所需的变量,而不将秘密公开。 NEXT_PUBLIC_ 值适用于浏览器并在构建期间嵌入。
node --version
npm ci
npm run build检查启动脚本是否在下次启动时运行。开发服务器不是要保留在生产环境中的进程。绑定到 127.0.0.1 会限制对服务器及其本地代理的直接访问,从而使应用程序端口远离公共接口。
在另一个终端中,使用curl -i http://127.0.0.1:3000/ 检查真实页面。检查其内容和资产。如果选择输出:独立,请使用生成的 server.js 及其预期的目录结构,包括 public 和 .next/static。该模式有自己的入口点。
npm run start -- --hostname 127.0.0.1 --port 3000systemd 单元独立于您的会话运行服务。此示例假设现有 webapp 帐户并在 /srv/my-next-app 处发布。使用命令 -v node 检查节点路径并调整 ExecStart。该帐户需要读取该版本并仅写入需要它的应用程序位置。
将服务器变量保留在环境文件中,并具有适合服务帐户的权限。在您的环境中安装该单元后,使用 systemd-analyze verify 对其进行验证,重新加载 systemd 并启动服务。如果启动失败,请检查其日志。自动重新启动不能取代调查与内存相关的退出。
[Unit]
Description=My Next.js application
After=network.target
[Service]
Type=simple
User=webapp
WorkingDirectory=/srv/my-next-app
Environment=NODE_ENV=production
EnvironmentFile=/etc/my-next-app.env
ExecStart=/usr/bin/node /srv/my-next-app/node_modules/next/dist/bin/next start --hostname 127.0.0.1 --port 3000
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target在域的服务器块内,某个位置可以将请求转发到本地应用程序。以下片段涵盖了 HTTP 和流;将其与现有配置集成并在重新加载之前运行 nginx -t 。 It is not a complete TLS configuration.
该域需要解析为 VPS 并拥有可续订的有效证书。保留应用程序的主机和原始协议。在没有共享动态响应缓存的情况下开始:私有页面、cookie 和导航变体需要明确的策略。如果应用程序使用 WebSocket,请单独添加适当的 Nginx Upgrade 标头处理。
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
}来自主页的 200 响应不会验证整个应用程序。练习动态路线、缺失页面、登录、注销和表单。检查浏览器中的重定向、安全 cookie、图像和导航。
还测试流页面。如果内容通过域一次性到达,但在环回时逐渐到达,请检查每个中介处的缓冲。在切换流量之前保留以前的版本及其配置。恢复应用程序代码还需要与任何数据库迁移兼容。
测量空闲内存、流量峰值和部署重叠。两个版本可以短暂共存,并且基于 VPS 的构建会增加其自身的峰值。数据库和代理也属于总预算。
要评估 PRNext,请保留 Next.js 引用并在另一个目录中构建候选值。在更改应用程序的运行时之前验证应用程序的行为和性能。