首页 > 解决方案 > 将 Next.js 部署到共享主机

问题描述

我需要将 Next.js 应用程序部署到支持 Node.js 的共享托管服务提供商。官方的 Next.js 文档说您(仅?)需要next start在服务器上运行(我猜是通过 SSH)。

  1. build只需要部署版本还是需要通过 ssh 在服务器上运行构建命令?
  2. 一旦构建准备好,运行npm start真的是我唯一需要做的事情吗?我有点担心服务器因任何原因停止并且站点出现故障。我用谷歌搜索了很多,发现有些人提到使用pm2(参考freeCodeCamp 上的这篇文章。)但不确定 Next.js 是否会在生产时自动重启服务器?

标签: node.jsdeploymentnext.jsshared-hosting

解决方案


在服务器上,你可以这样做,当然你应该有 pm2 (npm install -g pm2) 和 nginx 的配置来代理传递你的下一个服务器将运行的端口,例如 6060(添加到 nginx.conf/server /location 这一行:proxy_pass http://localhost:6060) 然后:

  1. 上传源文件夹(pages、public、src、package.json) - 例如你的文件夹到 /var/www/your-folder 之类的地方
  2. chown 它: sudo chown -R $USER:$USER /var/www/your-folder
  3. cd 到你的文件夹并运行:npm -i
  4. 然后编辑 package.json 并更改“next start -p your-port”,例如 6060
  5. npm 运行构建
  6. 运行 pm2(在您的文件夹中): pm2 start "npm run start" --name project-whatever-you-like

要让 pm2 自动重启,请运行: pm2 startup systemd , pm2 将生成一行,您应该复制该行并运行它。

在共享主机上,现在有很多提供商支持运行 nodejs 应用程序,但我不知道他们是否可以运行 nextjs 应用程序,例如在 plesk 中您可以通过配置 app.js 路径和项目文件夹路径、公共文件夹路径等来配置运行 nodejs 应用程序,但是对于下一个应用程序,您没有要运行的 app.js,而是启动下一个服务器的脚本。反正你可以试试:)

或者你可以简单地转移到一个 vps,它的价格现在相当便宜,你可以用自己的服务器做很多事情(谷歌计算引擎提供免费的东西 - 几乎免费一年)


推荐阅读