Node.js
Node.js is an execution environment for JavaScript applications running on the server.
Installation
To install Node.js, enter Settings → Software Configuration → Node.js → Install button. ISPmanager will connect the Node.js repository, install the npm package manager and the latest LTS version of Node.js. To manage running Node.js applications, the control panel will install the pm2 process manager.
User settings
To allow a user to create sites with Node.js, enter Users → select the user → Edit button → enable the Can use Node.js option and select the Node.js default version → Ok. Users with this feature enabled are listed with an in the Status column. You can only disable this option if the user has no active websites with Node.js.
Website configuration
To enable Node.js for a website, when creating or editing a WWW domain:
- In the Handler field, select Node.js.
- Specify the Node.js version. The version will be installed only for the user who owns the website. The latest version of Node.js and LTS versions starting with 12.13.0 are available.
- Select Connection method:
- Socket file — Node.js application will use Unix sockets to run;
- Port — Node.js application will use the TCP port to run. Comments
Configuration file
The Node.js application contains the package.json configuration file. The configuration file is used to install dependencies via npm and to control the launch of the application. For more information about the format of the configuration file, see the official Node.js documentation.
Default content of package.json file
{
"name": "doc.test",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
To edit the configuration file, enter Sites → select the website → press Configuration files. To change the path to the website application, specify the path in the main and start parameters.
To install the packages specified in the configuration file, enter Sites → select the website → → Npm install.
Application diagnostics
Process manager
You can check the operation of the site application through the pm2 process manager:
- Allow shell access for the site owner user: Users → select a user → enable the Shell access option → Save.
- Connect to the server via ssh and log in with the account of the site owner:
su <username>
Comments to the command - Output a list of applications:
/usr/lib/ispnodejs/bin/pm2 list
Example of response
| id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼─────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼─────────────┼──────────┤ │ 0 │ example.com │ default │ N/A │ fork │ 317423 │ 13m │ 2 │ online │ 0% │ 60.6mb │ <user name> │ disabled │ │ 1 │ example2.com │ default │ N/A │ fork │ 316830 │ 19m │ 0 │ online │ 0% │ 61.7mb │ <user name> │ disabled |
- Request information about the desired application: or
/usr/lib/ispnodejs/bin/pm2 info <name>
/usr/lib/ispnodejs/bin/pm2 info <id>
Comments to the commandExample of response
Describing process with id 0 - name example.com | status │ online │ │ name │ example.com │ │ namespace │ default │ │ version │ N/A │ │ restarts │ 2 │ │ uptime │ 15m │ │ script path │ /var/www/<user name>/data/.nvm/versions/node/v18.1.0/bin/npm │ │ script args │ start │ │ error log path │ /var/www/<user name>/data/.pm2/logs/example.com-error.log │ │ out log path │ /var/www/<user name>/data/.pm2/logs/example.com-out.log │ │ pid path │ /var/www/<user name>/data/.pm2/pids/example.com-0.pid │ │ interpreter │ node │ │ interpreter args │ N/A │ │ script id │ 0 │ │ exec cwd │ /var/www/<user name>/data/www/example.com │ │ exec mode │ fork_mode │ │ node.js version │ 18.1.0 │ │ node env │ N/A │ │ watch & reload │ ✘ │ │ unstable restarts │ 0 │ │ created at │ 2022-05-11T04:25:03.051Z |
sudo -u /usr/lib/ispnodejs/bin/pm2 list
Service directories
When working with sites with Node.js, in the user's home directory are created service directories used utilities:
- /var/www//data/.npm/ — Node.js package manager data;
- /var/www//data/.nvm/ — installed versions of Node.js;
- /var/www//data/.pm2/ — data of the pm2 process manager.
These directories are needed for Node.js to work properly. If you remove them, the directories will be recreated the next time the site is edited, but some information may be lost.
Site management via shell client
The site owner can execute Node.js and npm commands through a shell client. This feature is available if the Shell access option is enabled in the user settings. To open the shell client, go to Sites → select a site → → Shell client. When you start the shell client, the control panel automatically:
- opens the home directory of the site;
- adds the path to Node.js for the selected site to the PATH variable.
To close the shell client, press .
Uninstalling
To uninstall Node.js, go to Software configuration → Node.js → Uninstall. The control panel will remove Node.js and related software — npm, pm2.
Features of work
- When you select the Node.js processing module, CMS or website builder installation is not available.
- If the content of the Node.js website has changed, you need to restart the website application to apply the changes: Sites → select the website → → Restart.
- When restoring a Node.js site from a backup copy, ispmanager will try to use the saved port or socket settings. If a port or socket is busy, a new port or socket will be allocated for the website.