Ubuntu Server 24.04に Node.jsをインストールします。
直接的にサーバーの話ではないですが、JavaScriptで作られたWebサイトを提供している会社では Node.jsを使用していると思いますので、サーバー管理者も環境としてどういうものなのかを理解しておく必要があります。
実際に環境を構築して簡単な WEBサーバーを立ち上げてみることによって、Node.jsが何者か分かると思います。
Node.jsの本家サイトはこちら。
Node.js
Node.jsのバージョン番号は、偶数が長期サポート(LTS)版で、奇数が最新版となります。
今の時期だけか分かりませんが、2024年5月28日時点では上記のサイトに以下のようなバージョンが挙げられていました。
20.13.1 | LTS |
21.7.3 | 最新版 |
22.2.0 | 次の LTS (2024年10月から) |
余程最新の機能を追うのでなければ、偶数番号の LTS版を選びましょう。
なお、Node.jsのバージョンアップは結構頻繁にあるので、バージョンが上がってしまった場合でもこのルールに従っておけば良いと思います。
22.2.0が LTSになるまであと数ヶ月しかありませんが、ここはグッとこらえて、20.13.1をインストールします。
1.事前確認
Node.jsのサイトからダウンロードできるんですけど、Ubuntu 24.04のパッケージリポジトリにはないか先に確認しておきましょう。
aptのほう。
subro@UbuntuServer2404-1:~$ apt info nodejs
Package: nodejs
Version: 18.19.1+dfsg-6ubuntu5
Priority: extra
Section: universe/web
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Debian Javascript Maintainers
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 4,020 kB
Provides: node-types-node (= 18.18.14~18.19.1+dfsg-6ubuntu5)
Depends: libc6 (>= 2.34), libnode109 (= 18.19.1+dfsg-6ubuntu5)
Recommends: ca-certificates, nodejs-doc
Suggests: npm
Conflicts: nodejs-legacy
Breaks: libnode72 (<< 13), libnode83 (<< 16.13.2+really14.19.1~dfsg~), node-babel-runtime (<< 7), node-jest (<< 29~), node-typescript-types (<< 20210110~)
Replaces: libnode72 (<< 13), libnode83 (<< 16.13.2+really14.19.1~dfsg~), nodejs-legacy
Homepage: https://nodejs.org/
Download-Size: 306 kB
APT-Sources: http://jp.archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Description: evented I/O for V8 javascript - runtime executable
Node.js is a platform built on Chrome's JavaScript runtime for easily
building fast, scalable network applications. Node.js uses an
event-driven, non-blocking I/O model that makes it lightweight and
efficient, perfect for data-intensive real-time applications that run
across distributed devices.
.
Node.js is bundled with several useful libraries to handle server
tasks:
.
System, Events, Standard I/O, Modules, Timers, Child Processes, POSIX,
HTTP, Multipart Parsing, TCP, DNS, Assert, Path, URL, Query Strings.
18.9.1、もっと前の LTSでした。
snapのほう。
subro@UbuntuServer2404-1:~$ snap info node
summary: Node.js
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:
20/stable: 20.13.1 2024-05-09 (8649) 34MB classic
20/candidate: ↑
20/beta: ↑
20/edge: ↑
latest/stable: –
latest/candidate: –
latest/beta: –
latest/edge: 23.0.0-nightly20240527ff659fae 2024-05-27 (8715) 38MB classic
22/stable: 22.1.0 2024-05-13 (8656) 38MB classic
22/candidate: ↑
22/beta: ↑
22/edge: ↑
21/stable: 21.7.3 2024-04-10 (8530) 36MB classic
21/candidate: ↑
21/beta: ↑
21/edge: ↑
〜〜〜 以下省略 〜〜〜
こちら、欲しいバージョンになっていますね。
Ubuntu専用の手順になりますが、snap版パッケージを導入してみます。
どうしてもそちらでやりたい方は以下に説明がありますので、そちらをどうぞ。
NodeSource Node.js Binary Distributions
2.環境
そういう訳で、環境はこのようになります。
- Ubuntu Server 24.04
- Node.js 20.13.1
3.インストール
上の確認でパッケージの情報に「classic」ってありますんで、snap install コマンドの時に --classicオプションを使います。
(インストールディレクトリがソフト本来の場所になるようです)
subro@UbuntuServer2404-1:~$ sudo snap install node --classic
2024-05-28T13:43:10+09:00 INFO Waiting for automatic snapd restart...
node (20/stable) 20.13.1 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 5月 28 13:43 /snap/bin/node -> /usr/bin/snap
subro@UbuntuServer2404-1:~$ ls -l /snap/bin
合計 0
lrwxrwxrwx 1 root root 13 5月 28 13:43 node -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 5月 28 13:43 node.npm -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 5月 28 13:43 node.npx -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 5月 28 13:43 node.yarn -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 5月 28 13:43 node.yarnpkg -> /usr/bin/snap
lrwxrwxrwx 1 root root 8 5月 28 13:43 npm -> node.npm
lrwxrwxrwx 1 root root 8 5月 28 13:43 npx -> node.npx
lrwxrwxrwx 1 root root 9 5月 28 13:43 yarn -> node.yarn
lrwxrwxrwx 1 root root 12 5月 28 13:43 yarnpkg -> node.yarnpkg
これが --classicオプションの効果なのか、Node.js本来のインストールディレクトリ [/usr/bin] で動いているよう偽装しているようです。
4.nodeコマンド実行
Node.jsの本体は nodeコマンドです。
このコマンドに JavaScriptのソースファイルを引数で渡してやると、WEBブラウザの中で動かすためのものだった JavaScriptがコマンドラインで実行できるというものです。
ここでは snapパッケージでインストールしたので、[/snap/bin/node]が実行されるようになっていますが、これはシンボリックリンクで、[/usr/bin/snap]がリンク先になっています。
nodeコマンドを実行してバージョンを確認してみます。
subro@UbuntuServer2404-1:~$ node --version
v20.13.1
うっ、Node.jsって起動が速いんですけど、snap版だからか一呼吸間が空きました…。
お目当てのバージョンが無事インストールされました。
何か JavaScriptの関数を実行してみます。
subro@UbuntuServer2404-1:~$ node
Welcome to Node.js v20.13.1.
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の本は沢山出版されています。
どれでも良いと思いますが、Node.jsのバージョンアップが速いため、なるべく新しいものを。