NextJS部署-如何在Ubuntu服务器上简单部署NextJS(如NodeJS)?

时间:2020-05-18 03:22:23

标签: node.js next.js

要部署NodeJS,我使用systemd并配置/lib/systemd/system/[service_name].service文件

======================================

[Unit]
Description=Inventory Management System
Documentation=PLM Inventory Management Documents
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=superuser
WorkingDirectory=/home/superuser/inventory
ExecStart=/home/superuser/.npm-global/bin/nodemon --exec babel-node /home/superuser/inventory/server/server.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

======================================

如何在ubuntu服务器上通过systemd部署NextJS?

谢谢。

1 个答案:

答案 0 :(得分:1)

我正在使用以下单元文件运行它:

[Unit]
Description=NodeJS server, NextJS public frontend
After=network.target

[Service]
Type=simple
User=someuser
Group=someuser
Restart=on-failure
RestartSec=10
WorkingDirectory=/some/dir/
ExecStartPre=/usr/bin/npm install
ExecStartPre=/usr/bin/npm run build
ExecStart=/usr/bin/npm run start

[Install]
WantedBy=multi-user.target

WorkingDirectory应该指向NextJS项目所在的目录。

npm install将依赖项安装在node_modules(duh)中。 npm run build编译了一些东西,最终变成了static/ npm run start启动NodeJS服务器。

很多人建议使用pm2,但我不喜欢它。 如果您使用的是CDI,则可以将npm run buildnpm install放入构建过程中,然后提取工件(下面提到的文件/文件夹)。

考虑到NextJS的工作方式,您可能应该只需要以下文件和文件夹:node_modules/ static/ package.json package-lock.json next.config.js。 虽然,这也取决于您的项目。

当然,这对于生产服务器而言还远远不够。 尤其是,由于您将需要设置Nginx或Apache之类的网络服务器,才能对您的NextJS应用程序进行location代理传递。 这是因为NextJS应用程序正在Localhost:PORT下运行。

来源:痛苦的经历。