Node.js 将Next.js部署到共享主机

Node.js 将Next.js部署到共享主机,node.js,deployment,next.js,shared-hosting,Node.js,Deployment,Next.js,Shared Hosting,我需要将Next.js应用程序部署到支持Node.js的共享主机提供商。官方的Next.js文档说您(仅?)需要在服务器上运行Next start(我想是通过SSH) 我需要只部署build版本,还是需要通过ssh在服务器上运行build命令 一旦构建就绪,运行npm start真的是我唯一需要做的事情吗?我有点担心服务器会因为任何原因而停止,站点会关闭。我在谷歌上搜索了不少,发现有人提到使用pm2(参考freeCodeCamp上的文章),但不确定Next.js是否会在生产时自动重启服务器 在服

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

  • 我需要只部署
    build
    版本,还是需要通过ssh在服务器上运行build命令
  • 一旦构建就绪,运行
    npm start
    真的是我唯一需要做的事情吗?我有点担心服务器会因为任何原因而停止,站点会关闭。我在谷歌上搜索了不少,发现有人提到使用pm2(参考freeCodeCamp上的文章),但不确定Next.js是否会在生产时自动重启服务器

  • 在服务器上,您可以这样做,当然您应该让pm2(npm install-g pm2)和config for nginx代理传递下一台服务器将运行的端口,例如6060(添加到nginx.conf/server/location这一行:proxy\u passhttp://localhost:6060)然后:

  • 上传源文件夹(pages、public、src、package.json)-例如,将您的文件夹上传到某个地方 比如/var/www/your文件夹
  • chownit:sudochown-R$USER:$USER/var/www/your文件夹
  • 将cd放入文件夹并运行: npm-i
  • 然后编辑package.json并更改“next start-p your port”,例如6060
  • npm运行构建
  • 运行pm2(在您的文件夹中):pm2开始“npm运行开始”--命名您喜欢的项目
  • 为了让pm2自动重启,请运行:pm2启动系统D,pm2将生成一行,您应该复制该行并运行它

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


    或者你可以简单地移动到vps,它的价格现在相当便宜,你可以用自己的服务器做很多事情(Google Compute Engine提供免费的东西-几乎免费一年)

    你可以在这里找到非常有用的讨论:

    我发现缺少使用cPanel部署到共享主机的信息,因此经过多次尝试和错误后,我希望这将有助于那些使用Nextjs部署到定制服务器的人,正如Vercel文档中提到的那样,在本例中,部署到共享主机

  • 建造
  • 根据我在托管服务器上运行
    npm run build
    的经验,由于共享托管服务器中提供的有限虚拟内存,有时会导致
    生成错误
    。 因此,解决方法很简单,在本地计算机上执行构建,然后将在计算机上创建的
    .next
    文件夹复制到宿主服务器上项目的根文件夹中

  • 更简单的部署
  • 我不需要“pm2”或“nginx”来运行Nextjs项目。这很简单,只需将
    package.json
    、'server.js'和
    复制到项目的根文件夹,就可以了。(请参阅下面的server.js内容)

  • 服务器启动文件
  • (您可以将其命名为server.js或app.js或index.js或任何您想要的名称,只要它与您在cPanel中对节点应用的定义一致)。 以下是服务器启动程序文件所需的最低代码:

    const{createServer}=require(“http”);
    const{parse}=require(“url”);
    const next=要求(“下一步”);
    const dev=process.env.NODE_env!==“生产”;
    常量端口=!戴夫?进程环境端口:3000;
    //创建Express Next应用程序
    const app=next({dev});
    const handle=app.getRequestHandler();
    应用程序
    .准备
    .然后(()=>{
    createServer((请求、恢复)=>{
    const parsedUrl=parse(req.url,true);
    const{pathname,query}=parsedUrl;
    句柄(req、res、parsedUrl);
    log(“路径名”,路径名);
    }).侦听(端口,(错误)=>{
    如果(错误)抛出错误;
    console.log(`>已准备就绪http://localhost:${port}`);
    });
    })
    .catch((ex)=>{
    控制台错误(例如堆栈);
    过程。退出(1);
    
    });
    U需要上传和
    node\U模块
    或在那里运行
    npm i
    ,但通常会出现错误,就像您构建itI一样。我尝试了这一点,但它是在开发模式下运行的。请问,您知道如何运行构建版本吗?