お金をかけずにサーバーの勉強をしよう

Node.jsインストール

2025年3月23日

メニューへ戻る

Ubuntu Server 24.04に Node.jsをインストールします。

直接的にサーバーの話ではないですが、JavaScriptで作られたWebサイトを提供している会社では Node.jsを使用していると思いますので、サーバー管理者も環境としてどういうものなのかを理解しておく必要があります。

実際に環境を構築して簡単な WEBサーバーを立ち上げてみることによって、Node.jsが何者か分かると思います。

Node.jsの本家サイトはこちら。
Node.js

Node.jsのバージョン番号は、偶数が長期サポート(LTS)版で、奇数が最新版となります。
2025年3月23日時点では上記のサイトに以下のようなバージョンが挙げられていました。

22.14.0LTS
23.10.0最新版

余程最新の機能を追うのでなければ偶数番号の LTS版を選びましょう。

なお、Node.jsのバージョンアップは結構頻繁にあるので、バージョンが上がってしまった場合でもこのルールに従っておけば良いと思います。


1.事前確認

Node.jsのサイトからダウンロードできるんですけど、Ubuntu 24.04のパッケージリポジトリにはないか先に確認しておきましょう。

aptのほう。

subro@UbuntuServer2404-1:~$ apt info nodejs
Package: nodejs
Version: 18.19.1+dfsg-6ubuntu5
Priority: extra
〜〜〜 以下略 〜〜〜

18.9.1でした。
これはずっと変わらないようですが、何か意図があってアップデートしないんでしょう。

snapのほう。

subro@UbuntuServer2404-1:~$ snap info node
name:      node
summary:   Official Node.js Runtime
publisher: OpenJS Foundation (iojs✓)
store-url: https://snapcraft.io/node
contact:   https://github.com/nodejs/snap
license:   MIT
description: |
  A JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven,
  non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm,
  is the largest ecosystem of open source libraries in the world. https://nodejs.org/
snap-id: MEd4V4HHFkCXBSz6UzVmKF2D2PmWcVwR
channels:
  22/stable:        22.14.0                        2025-02-11 (9750) 41MB classic
  22/candidate:     ↑
  22/beta:          ↑
  22/edge:          ↑
  latest/stable:    –
  latest/candidate: –
  latest/beta:      –
  latest/edge:      24.0.0-nightly20250322ffc1cf62 2025-03-22 (9945) 43MB classic
  23/stable:        23.7.0                         2025-02-04 (9699) 42MB classic
〜〜〜 以下略 〜〜〜

バージョンを指定しない場合は「latest」として扱われますので、こちらは 22.14.0 と欲しいバージョンになるようですね。

snap版パッケージを導入してみます。

※一応 Node.jsでは deb版パッケージを Node.jsのリポジトリで配布しています。
どうしてもそちらでやりたい方は以下に説明がありますので、そちらをどうぞ。
NodeSource Node.js Binary Distributions



2.環境

そういう訳で、環境はこのようになります。


3.インストール

上の確認でパッケージの情報に「classic」ってありますんで、snap install コマンドの時に --classicオプションを使います。
(インストールディレクトリがソフト本来の場所になるようです)

subro@UbuntuServer2404-1:~$ sudo snap install node --classic
node (22/stable) 22.14.0 from OpenJS Foundation (iojs✓) installed

インストールできました。
snapのインストールはいつも味気ないですね。

どこに入ったんでしょうか。
Node.js本体である nodeコマンド周りを見てみます。

subro@UbuntuServer2404-1:~$ which node
/snap/bin/node

subro@UbuntuServer2404-1:~$ ls -l /snap/bin/node
lrwxrwxrwx 1 root root 13  3月 23 07:01 /snap/bin/node -> /usr/bin/snap

subro@UbuntuServer2404-1:~$ ls -l /snap/bin
合計 0
lrwxrwxrwx 1 root root 13  3月 23 07:01 node -> /usr/bin/snap
lrwxrwxrwx 1 root root 13  3月 23 07:01 node.npm -> /usr/bin/snap
lrwxrwxrwx 1 root root 13  3月 23 07:01 node.npx -> /usr/bin/snap
lrwxrwxrwx 1 root root 13  3月 23 07:01 node.yarn -> /usr/bin/snap
lrwxrwxrwx 1 root root 13  3月 23 07:01 node.yarnpkg -> /usr/bin/snap
lrwxrwxrwx 1 root root  8  3月 23 07:01 npm -> node.npm
lrwxrwxrwx 1 root root  8  3月 23 07:01 npx -> node.npx
lrwxrwxrwx 1 root root  9  3月 23 07:01 yarn -> node.yarn
lrwxrwxrwx 1 root root 12  3月 23 07:01 yarnpkg -> node.yarnpkg

snapパッケージだと、結局コマンド全部が [/usr/bin/snap]ファイルを実行してる形になります。


4.nodeコマンド実行

Node.jsの本体は nodeコマンドです。

このコマンドに JavaScriptのソースファイルを引数で渡してやると、WEBブラウザの中で動かすためのものだった JavaScriptがコマンドラインで実行できるというものです。

ここでは snapパッケージでインストールしたので、[/snap/bin/node]が実行されるようになっていますが、これはシンボリックリンクで、[/usr/bin/snap]がリンク先になっています。

nodeコマンドを実行してバージョンを確認してみます。

subro@UbuntuServer2404-1:~$ node --version
v22.14.0

うっ、Node.jsって起動が速いんですけど、snap版だからか一呼吸間が空きました…。
お目当てのバージョンが無事インストールされました。

何か JavaScriptの関数を実行してみます。

subro@UbuntuServer2404-1:~$ node
Welcome to Node.js v22.14.0.
Type ".help" for more information.
> console.log("AAA")
AAA
undefined
> .exit

subro@UbuntuServer2404-1:~$

JavaScriptを普通の開発言語として使えるんだから大したものだよ、と思います。

この後 Node.jsを使って Webサイトを作りたい所ですが、JavaScriptだとそんなに簡単じゃないです。
それは別に「Node.js + Expressで WEBサーバープログラム作成」に書きましたので、そちらをどうぞ。


かつて Node.jsの本は沢山出版されていましたが、Denoや Bunといった TypeScript勢に押されているのでしょうか、ちょっと元気がない感じです。
どれでも良いと思いますが、Node.jsのバージョンアップが速いため、なるべく新しいものを。