要部署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?
谢谢。
答案 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 build
和npm install
放入构建过程中,然后提取工件(下面提到的文件/文件夹)。
考虑到NextJS的工作方式,您可能应该只需要以下文件和文件夹:node_modules/ static/ package.json package-lock.json next.config.js
。
虽然,这也取决于您的项目。
当然,这对于生产服务器而言还远远不够。
尤其是,由于您将需要设置Nginx或Apache之类的网络服务器,才能对您的NextJS应用程序进行location
代理传递。
这是因为NextJS应用程序正在Localhost:PORT
下运行。
来源:痛苦的经历。