Node.js is a Javascript platform for server-side programming. It allows users to easily create networked applications that require backend functionality. By using Javascript as both the client and server language, development can be fast and consistent.
In this guide, we will show you a few different ways of getting Node.js installed on a CentOS 7 server so that you can get started. Most users will want to use the EPEL installation instructions or the NVM installation steps.
One way of acquiring Node.js is to obtain the source code and compile it yourself.
To do so, you should grab the source code from the project’s website. On the downloads page, right click on the “Source Code” link and click “Copy link address” or whatever similar option your browser gives you.
On your server, use wget
and paste the link that you copied in order to download the archive file:
wget http://nodejs.org/dist/v0.10.30/node-v0.10.30.tar.gz
Extract the archive and move into the new directory by typing:
tar xzvf node-v* && cd node-v*
There are a few packages that we need to download from the CentOS repositories in order to compile the code. Use yum
to get these now:
sudo yum install gcc gcc-c++
Now, we can configure and compile the software:
./configure
make
The compilation will take quite awhile. When it is finished, you can install the software onto your system by typing:
sudo make install
To check that the installation was successful, you can ask Node to display its version number:
node --version
v0.10.30
If you see the version number, then the installation was completed successfully.
Another option for installing Node.js on your server is to simply get the pre-built packages from the Node.js website and install them.
You can find the Linux binary packages here. Since CentOS 7 only comes in the 64-bit architecture, right click on the link under “Linux Binaries (.tar.gz)” labeled “64-bit”. Select “Copy link address” or whatever similar option your browser provides.
On your server, change to your home directory and use the wget
utility to download the files. Paste the URL you just copied as the argument for the command:
cd ~
wget http://nodejs.org/dist/v0.10.30/node-v0.10.30-linux-x64.tar.gz
Note: Your version number in the URL is likely to be different than the one above. Use the address you copied from the Node.js site rather than the specific URL provided in this guide.
Next, we will extract the binary package into our system’s local package hierarchy with the tar
command. The archive is packaged within a versioned directory, which we can get rid of by passing the --strip-components 1
option. We will specify the target directory of our command with the -C
command:
sudo tar --strip-components 1 -xzvf node-v* -C /usr/local
This will install all of the components within the /usr/local
branch of your system.
You can verify that the installation was successful by asking Node for its version number:
node --version
v0.10.30
The installation was successful and you can now begin using Node.js on your CentOS 7 server.
An alternative installation method uses the EPEL (Extra Packages for Enterprise Linux) repository that is available for CentOS and related distributions.
To gain access to the EPEL repo, you must modify the repo-list of your installation. Fortunately, we can reconfigure access to this repository by installing a package available in our current repos called epel-release
.
sudo yum install epel-release
Now that you have access to the EPEL repository, you can install Node.js using your regular yum
commands:
sudo yum install nodejs
Once again, you can check that the installation was successful by asking Node to return its version number:
node --version
v0.10.30
Many people will also want access to npm
to manage their Node packages. You can also get this from EPEL by typing:
sudo yum install npm
Another way of installing Node.js that is particularly flexible is through NVM, the Node version manager. This piece of software allows you to install and maintain many different independent versions of Node.js, and their associated Node packages, at the same time.
To install NVM on your CentOS 7 machine, visit the project’s GitHub page. Copy the curl
or wget
command from the README file that displays on the main page. This will point you towards the most recent version of the installation script.
Before piping the command through to bash
, it is always a good idea to audit the script to make sure it isn’t doing anything you don’t agree with. You can do that by removing the | bash
segment at the end of the curl
command:
curl https://raw.githubusercontent.com/creationix/nvm/v0.13.1/install.sh
Take a look and make sure you are comfortable with the changes it is making. When you are satisfied, run the command again with | bash
appended at the end. The URL you use will change depending on the latest version of NVM, but as of right now, the script can be downloaded and executed by typing:
curl https://raw.githubusercontent.com/creationix/nvm/v0.13.1/install.sh | bash
This will install the nvm
script to your user account. To use it, you must first source your .bash_profile
:
source ~/.bash_profile
Now, you can ask NVM which versions of Node it knows about:
nvm list-remote
. . .
v0.10.29
v0.10.30
v0.11.0
v0.11.1
v0.11.2
v0.11.3
v0.11.4
v0.11.5
v0.11.6
v0.11.7
v0.11.8
v0.11.9
v0.11.10
v0.11.11
v0.11.12
v0.11.13
You can install a version of Node by typing any of the releases you see. For instance, to get version 0.10.30, you can type:
nvm install v0.10.30
You can see the different versions you have installed by typing:
nvm list
-> v0.10.30
system
You can switch between them by typing:
nvm use v0.10.30
Now using node v0.10.30
To set this version as the default, type:
nvm alias default v0.10.30
default -> v0.10.30
You can verify that the install was successful using the same technique from the other sections, by typing:
node --version
v0.10.30
From the version number output, we can tell that Node is installed on our machine as we expected.
As you can see, there are quite a few different ways of getting Node.js up and running on your CentOS 7 server. If one of the installation methods is giving you problems, try one of the other options.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Node.js is a JavaScript platform for general-purpose programming that allows users to build network applications quickly. By leveraging JavaScript on both the front and backend, Node.js makes development more consistent and integrated.
To get your development environment configured so you can start building Node.js applications. select the tutorial for your platform.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
You should put the easy way above (EPEL Release).
After i spend 30 minutes doing “make”, i cancel it’s because there’s EPEL RELEASE (T.T)
The old version totally screw my server, please always check on the website the last version : wget http://nodejs.org/dist/v9.4.0/node-v9.4.0.tar.gz
Two things: I only see .xz files not zip files so you would need to replace the -z with -J I am using Fedora and can’t figure out how to tell the system to use the new version. Any help would be appreciated.
gusdecool, yes, there is an outdated epel node package you can install. Or you can install the most recent version of nodejs from source. I think that is the point of this article.
Note - when installing from package from nodejs site, you might have to manually set some symlinks to get ti to work either side of sudo.
sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s /usr/local/bin/npm /usr/bin/npm sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
nvm method is not working:
I think with epel, 1st method presented in Tutorial should be via EPEL and not via make etc
This comment has been deleted
It worked. Your explanation and step by step was great. No unnecessary hyperlinks. Short and sweet
We should NOT be installing nps as root. It is all over the 'net.