🌟

エックスサーバー旧環境のまま、Node22をインストールする (非公式ビルド)

に公開

最終更新: 2025-07-07

この記事の対象となるサーバーの環境

  • glibc 2.17
$ yum list installed | grep glibc
Failed to set locale, defaulting to C
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
glibc.x86_64                            2.17-326.el7_9                 @updates
glibc-common.x86_64                     2.17-326.el7_9                 @updates
glibc-devel.x86_64                      2.17-326.el7_9                 @updates
glibc-headers.x86_64                    2.17-326.el7_9                 @updates

上記のようにglibc 2.17が表示される場合、2024年6月4日以前の旧環境である。

https://github.com/nodejs/node/blob/main/BUILDING.md#platform-list

現在のNode.js LTSは、ビルドに必要なglibcの要求が2.28以上になってしまったので、本来ならglibcの更新が必要。

新サーバー簡単移行を使おう

【2025-07-07追記】「新サーバー簡単移行」機能が使えるなら、移行するのが正攻法である。

https://www.xserver.ne.jp/manual/man_order_servertransfer_flow.php

ただし、どうしてもサーバー番号・IPをキープしながらNode.jsを更新したい場合は、下記のハックを使う。

新サーバー簡単移行を使いたくないなら、nvmをハックせよ

https://github.com/nodejs/unofficial-builds/pull/69

旧サーバーを使い続けたい場合、glibc 2.17しかない環境でも動く非公式ビルドを使う。

https://unofficial-builds.nodejs.org/download/release/

つまり、こちらに列挙されている中で、バージョンの末尾のアーキテクチャ部分が linux-x64-glibc-217 となっているビルドは、CentOS7環境でも動く。


以下自己責任ゾーン

https://unofficial-builds.nodejs.org/download/release/v22.12.0/

ということで、2024年12月31日時点のLTS node-v22.12.0-linux-x64-glibc-217.tar.xz を、nvmで入手して、エックスサーバーで動かしてみる。

https://github.com/nvm-sh/nvm?tab=readme-ov-file#use-a-mirror-of-node-binaries

nvmにはミラーサーバーを指定する機能があり、 NVM_NODEJS_ORG_MIRROR を指定すれば、非公式ビルドにサーバーを変更できる。

だが、ここで問題発生。nvm 0.40.3 時点ではダウンロードするファイル名を指定できないので、非公式ビルドのうちlinux-x64を探してしまい404になる。

そこでnvm.shを直接編集する。

https://github.com/nvm-sh/nvm/blob/v0.40.3/nvm.sh#L2373-L2380

対処方法としては、 nvm_get_download_slug 関数の返り値に -glibc-217を無理やりつける。

vi +2375 ~/.nvm/nvm.sh 
-     nvm_echo "${FLAVOR}-${VERSION}-${NVM_OS}-${NVM_ARCH}"
+     nvm_echo "${FLAVOR}-${VERSION}-${NVM_OS}-${NVM_ARCH}-glibc-217"

決してARCH変数に手を加えてはいけない。あくまでスラッグ部分だけを編集する。こうすることで、後続の処理に影響が出ないようにする。

source .bash_profile
NVM_NODEJS_ORG_MIRROR=https://unofficial-builds.nodejs.org/download/release nvm install v22.12.0
nvm use v22.12.0

編集したら、上記のようにサーバーを指定してnvm install <version>nvm use <version>する。

更新履歴

  • 2023/11/04 master更新されてたのでv0.39.5との比較URL追記
  • 2023/12/01 埋め込んだソースコードをv0.39.7に更新
  • 2024/12/31 Node22、nvm0.40.1に更新
  • 2025/07/07 エックスサーバーの新環境について追記、nvm0.40.3に更新

Discussion