さくらのレンタルサーバに Node.js をインストールする
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 に対応(ビルドしてインストールできる)しているのは、nodenv と nenv の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
ディスカッション
コメント一覧
まだ、コメントがありません