如何将NextJS应用程序部署到Linux服务器(CentOS 7)-VPS

时间:2020-06-02 11:56:12

标签: node.js reactjs linux deployment next.js

我对构建应用程序有疑问。我正在使用具有node.js支持的简单VPS。现在,我不知道如何将next.js应用程序构建到生产环境中。

我想将我的应用程序部署为静态文件。

我认为我应该使用next build && next export,然后将dir复制到服务器上,但是在此过程中,我遇到了一些问题-当我更改路线时-一切正常,但是如果我刷新页面-该页面是找不到,因为服务器正在目录中寻找该文件。那么如何在生产模式下通过VPS服务器和静态文件部署nextjs应用程序?

我尝试了一件可能无法正常工作的事情,或者我做错了什么。 我用添加了nodejs express服务器

const express = require('express');
const next = require('next');
const dev = process.env.NODE_ENV !== 'production';

const app = next({dev});
const router = express.Router();
const handle = app.getRequestHandler();

app.prepare()
    .then(() => {

        const server = express();

        server.get('*', (req, res) => {
            return handle(req, res);
        });

        server.listen(3000, (err) => {
            if (err) throw err;
            console.log('> Ready on http://localhost:3000');
        });
    });



并使用永久库NODE_ENV=production node server.js启动服务器,它可以正常工作,但是看来这是以错误的方式工作的-好像是在开发模式下的普通服务器-因此不应该那样做。 (我在右下角看到雷声图标,并且看到了与开发模式下相同的所有文件。)

我想将所有内容都部署为静态文件。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

buildexport之后,您需要以某种方式提供这些文件。 Express服务器工作的原因是因为您正在启动HTTP服务器来提供文件。

因此,您需要使用静态托管服务提供商(即Vercel或Amazon S3)来提供这些文件。否则,您应该使用serve之类的东西在Linux机器上启动服务器,以在端口上为其提供服务,类似于Express服务器将其作为localhost:3000服务,然后将其公开在VPS上。