无法使用 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
我最近在我的 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