无法使用 npm 运行 构建 运行 NextJS

Unable to run NextJS with npm run build

我最近在我的 digitalocean 服务器上部署了一个反应静态应用程序。我所做的只是在 Nginx 配置文件中显示构建文件的根目录。而且 运行 很好。

现在我正尝试在我的服务器上托管 NextJS 应用程序。我显示了根目录 root /var/www/html/NextJSTestApp/.next 我什至尝试过 root /var/www/html/NextJSTestApp/node_modules 当我 运行 宁 npm run build 构建完成后,我尝试访问我的服务器,它显示“502 Bad Gateway”

但是当我运行宁npm start site image 该应用正在显示

我可以一直对它做什么 运行?我正在使用 digitalocean 液滴。

当运行NextJS作为节点应用时(例如next start),需要设置nginx使用proxy_pass而不是指向根目录(省略root指令)

示例 nginx 位置块

server {
    server_name example.com;
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;

    ssl_certificate /etc/nginx/certs/fullchain.cer;
    ssl_certificate_key /etc/nginx/certs/fullchain.key;

    location / {

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_http_version 1.1;
            proxy_pass http://127.0.0.1:8000; //your next app
    }
}

首先,手动 运行ning next start 不会在您关闭终端或离开 bash 后保留该过程。为了让它运行在后台,你可以在启动命令的末尾使用&&(next start &&)或者创建一个systemd文件(推荐)。

其次,在后台完成 nextJs 运行ning 后,您可以继续设置到 Web 服务器(nginx、apache ...)的代理传递

我找到了这个解决方案。 运行这个项目背景我用的是pm2.

  • sudo npm install -g pm2
    然后转到我的项目文件夹cd website/

pm2 start --name=website npm -- start

然后 pm2 startup systemd

我关注了这个tutorial