Posted By: Anonymous
To deploy NodeJS, I use systemd and configure /lib/systemd/system/[service_name].service file
[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
How can I deploy NextJS by systemd on ubuntu server?
Thanks in advance.
I am running it with the following unit file:
[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 should point to the directory, where your NextJS project is.
npm install installs the dependencies in
npm run build compiles some stuff, that ends up as
npm run start starts the NodeJS server.
A lot of people suggest using
pm2, but i am not a fan of it.
If you are using CDI, you can get the
npm run build and
npm install into the build process, and then extract the artifacts (the file/folders mentioned below).
Considering the way NextJS works, you should probably only need the following files and folders:
node_modules/ static/ package.json package-lock.json next.config.js.
Although, this too depends on your project.
Ofcourse, this is not nearly enough for production servers.
Especially, since you will need to setup an webserver like Nginx or Apache, in order to do the
location Proxy Pass to your NextJS application.
This is because, the NextJS application is running under
Source: painful experience with this.