今担当している案件の中で、こちら側に管理者権限のないレンタルサーバー(一つのOSを複数のユーザーで共有するタイプのサーバー)を使用している物があるのですが、今回はこういった環境上でNode.jsを使える仕組みを見つけたので、記事にしたいと思います。
そもそも、なぜroot権限が使えないサーバー上でもNode.jsを使いたいのかというと、ReactなどのAltJSを使用して開発を行う際に、サーバー上でもビルドを行えたほうが、変更したファイルのみアップロードすれば良くなるので、ビルド済みのファイルをアップロードするよりも更新が短時間で済むメリットがあるためです。
今回の方法ではroot権限がないため、/usr/local/binや/optなどのディレクトリにインストールすることはできませんが、ホームディレクトリやプロジェクト内にnode.jsのバイナリを配置し、そのバイナリを使用してjavascriptをサーバーサイドで実行できるようにすることが可能です。
まず、GitHubから、portable-node というツールを取得します。
wget https://raw.github.com/dmrub/portable-node/master/bin/install-node.sh
すると、コマンドを実行したディレクトリで、”install-node.sh”という名前のファイルが生成されます。
このファイルを実行できるようにするために、権限を付与します。
chmod +x ./install-node.sh
ここまでできればnode.jsの取得ができるようになっています。
次のコマンドで、node.jsを取得します。
./install-node.sh --version=ほしいNode.jsのバージョン
たとえは、次のようにします。
$ ./install-node.sh --version=16.13.1
Node.jsのバージョン一覧は次のURLにあります。
参考にしてみてください。
特にバージョンにこだわりや要件がない場合は、サポート期限の長いLTSバージョンを使用することをおすすめします。
コマンドを実行すると、コマンドを実行した際のカレントディレクトリに次ようなのディレクトリとファイルが作られます。
- share/
- node-vバージョン
- bash-node-vバージョン
これで準備完了です。
あとは通常のnodeコマンドのように “node-vバージョン“のファイルを使用します。
$ ./node-v16.13.1-linux-x64 --version
v16.13.1
なお、同時に生成される”bash-node-vバージョン“を実行すると、取得したnode.jsの実行ファイルにパスが通った状態のbashが起動します。
このあたりも必要に応じで試してみてください。
これでroot権限無しでnode.jsが利用可能になりました。
ただし、yarnやnpmといったパッケージマネージャーはここまでの手順だけでは使用できず、もうひと工夫が必要となります。
yarnについては他の環境からコピーしたもので実行できることを確認したので、また後日記事にしたいと思います!