さくらのレンタルサーバに Node.js をインストールする

2024年5月8日

Laravel(というか、vite)を使うにあたっては、Node.js がインストールされている必要がありますが、さくらのレンタルサーバには Node.js がインストールされていません。そこで今回はさくらのレンタルサーバに Node.js をインストールする方法をまとめておこうと思います。

Node.js 管理ツールの選定

Node.js をインストールするにあたっては、プロジェクトごとに使用している Node.js のバージョンが異なることもあるため、管理ツールを使って複数バージョンの Node.js を併存させることができるようにすることが望ましいです。以前、Ubuntu 20.04 に PHP 8.0 をインストールして Laravel 9 を使うでは、Volta を使って管理する方法を紹介しましたが、さくらのレンタルサーバでは使うことができません。

というのも、さくらのレンタルサーバは FreeBSD という OS を利用しており、Volta は対応していないのです。

$ uname -smr
FreeBSD 13.0-RELEASE-p12 amd64

$ curl https://get.volta.sh | bash
Error: Sorry! Volta currently only provides pre-built binaries for x86_64 architectures

同様に、有名どころの管理ツールである fnm、rtx、n、nvs なども利用することができません。.node-version でバージョン管理できるツールのうち、FreeBSD に対応(ビルドしてインストールできる)しているのは、nodenvnenv の2つでした。nodenv と nenv は bash で書かれています。さくらのレンタルサーバのデフォルトシェルは csh なので、シェルを bash に変更して nodenv と nenv のどちらかを使うことになります。

今回は GitHub のスター数が多く、比較的更新日が新しい nodenv を使ってみようと思います。

nodenv のインストール

まずは、シェルを bash に変更します。

$ cat /etc/shells
# $FreeBSD$
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/bash
/usr/local/bin/rbash
/usr/local/libexec/git-core/git-shell
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/bin/passwd

bash のパスは /usr/local/bin/bash であることが確認できたので、以下のコマンドを実行します。

$ chsh -s /usr/local/bin/bash

これでログアウト・ログインを行うと、シェルが bash に変更されていると思います。さくらのレンタルサーバでは bash の利用が一般的でないためか、.bashrc や .bash_profile が用意されていないため、とりあえず以下の内容で .bash_profile を作成します。

# .bash_profile
if [ -f ~/.profile ]; then
    . ~/.profile
fi

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

その後、以下のコマンドを実行して nodenv をインストールします。

 $ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/HEAD/bin/nodenv-installer | bash

インストール後の説明にも書いてありますが、インストールスクリプトは .bashrc を書き換えたりしないため、

$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.profile

でパスを追加したうえで

$ nodenv init

を実行すると表示される eval "$(nodenv init - bash)" を .bashrc に追加してあげます。

$ echo 'eval "$(nodenv init - bash)"' >> ~/.bashrc

これで Node.js をインストールする準備ができました。

Node.js をインストールする

nodenv で Node.js をインストールするには、以下のコマンドを実行します。環境変数 TMPDIR を設定するのは、デフォルトで設定されている /tmp には noexec オプションが付いているため、TMPDIR=/tmp cannot hold executables (partition possibly mounted with noexec) のエラーが発生するためです。また、負荷がかかるとプロセスが自動的に kill されてしまうため、nice -n 20 を付けて、優先度を下げています。

$ export TMPDIR=~/tmp
$ nice -n 20 nodenv install 18.18.2

使用する Node.js のバージョンを指定する

インストールしただけでは使えないので、さらに以下のコマンドを実行します。global はそのユーザーがデフォルトで使用するバージョンを指定する際に使用し、local はコマンドを実行したディレクトリ以下で使用するバージョンを指定する際に使用します。local の場合、そのディレクトリに .node-version ファイルが生成されます。

$ nodenv global 18.18.2
$ nodenv local 18.18.2
この記事を書いた人
グッドネイバー

“ Webに悩むお客さまの「よき隣人」でありたい ” をモットーに、Web システム開発(主に Laravel)、Web マーケティング支援の仕事をしています。お仕事のご依頼・ご相談はこちらからお気軽にどうぞ。