Edited at

XSERVER(エックスサーバー)にNode.jsをインストールするときはnodebrew使うと楽

More than 1 year has passed since last update.

Node.jsをレンタルサーバでも使ってみたいなあと思ったけれど、まあVPS使うしかないんだろうなと思ってググったらちょこちょこ出てくる。

同じこと考える人はやはりいるもので、とてもありがたい。

Qiitaだと例えばさくらでやっている方がいらっしゃるようだ。

さくらのレンタルサーバ(スタンダード)でNode.jsをインストールする

ただ、Node.jsは個人的にバージョンを管理できないと使いたくない。

無理をすればできたとしても、普通にインストールしかできないならまあいいか、と思っていました。


Perlがあればいいんやなって

普段はmacでhomebrew経由でまとめてインストールしてしまっていたのであまり見ていなかった(すみません)のですが、何かのきっかけで開発者様のgithubを眺めていたらperlでいいんですねこれ。

そもそもroot権限なし、というところを念頭に置かれたものだとか。ありがたい話。

perlならXSERVERにも当然入ってるしいけるよな、、、いけるよね?

ということでやってみました。


環境


  • iMac 2017, macOS Sierra (10.12.6)

  • XSERVER (3桁番台と2000番台)


前提

macやlinuxならこれだけやってあればなんとかなります。

Windowsだとsshログインするために別途クライアントを用意する必要があるので、少々手間がかかりますがやることはほぼ同じです。私はwindowsだとRloginConEmuとGit Bashが一番好きです。

秘密鍵を~/.ssh/に持ってきて~/.ssh/config内に下記のように設定しておくとあとあと楽なのでやっておくとよいでしょう。


~/.ssh/config

Host xserver

HostName <YourID>.xsrv.jp #サーバーアドレス
Port 10022 #ポートは10022番で固定
IdentityFile ~/.ssh/<YourPrivateKey>.key #ダウンロードした秘密鍵の場所
User <YourUserName> #設定したユーザー名


やってみる

基本は開発者であるhokaccha様のgithubリポジトリにある通りのコマンドでいいんですが、curlはデフォルトでは入ってはいるものの使えない(リンクできない)ため、ダウンロード→セットアップの手法を取ります。

gitかなんかを入れるときにcurlをソースから入れた方は使っても良いと思います。


shell

$ wget git.io/nodebrew

$ perl nodebrew setup

すると、見覚えのある画面が。


shell

Fetching nodebrew...

Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================


言われた通りにパスを通します。

viでもechoでもなんでもいいので、追加。


shell

echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc


設定読み込み


shell

$ source ~/.bashrc


確認


shell

$ nodebrew -v

nodebrew 0.9.7

Usage:
nodebrew help Show this message
nodebrew install <version> Download and install <version> (compile from source)
nodebrew install-binary <version> Download and install <version> (binary file)
nodebrew uninstall <version> Uninstall <version>
nodebrew use <version> Use <version>
nodebrew list List installed versions
nodebrew ls Alias for `list`
nodebrew ls-remote List remote versions
nodebrew ls-all List remote and installed versions
nodebrew alias <key> <value> Set alias
nodebrew unalias <key> Remove alias
nodebrew clean <version> | all Remove source file
nodebrew selfupdate Update nodebrew
nodebrew migrate-package <version> Install global NPM packages contained in <version> to current version
nodebrew exec <version> -- <command> Execute <command> using specified <version>

Example:
# install from binary
nodebrew install-binary v0.10.22

# use a specific version number
nodebrew use v0.10.22

# io.js
nodebrew install-binary io@v1.0.0
nodebrew use io@v1.0.0


やったぜ。

これで終わりです。

あとはいつも通り、インストールできます。


終わりとでも思っていたのか。ばかめ。

自戒を込めて。

依存パッケージの関係上、借りているサーバーのマシンが古いと新しいバージョンのnodeは動かないようです。

最初に試したのは個人で新しく契約した2000番台(契約したときのsv####←ここの数字)のやつ。


2000番台のサーバー

$ nodebrew install-binary stable

$ nodebrew ls
v8.7.0
current none
$ nodebrew use v8.7.0
use v8.7.0
$ node -v
v8.7.0

普通にいける。

もう一つ持っている3桁番台前半のやつは、


3桁番台のサーバー

$ nodebrew install-binary stable

$ nodebrew ls
v8.7.0
current none
$ nodebrew use v8.7.0
$ node -v
node: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.10'
not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.3'
not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by node)

あらら。

幸い私の目的は別に最新のでなくても達成可能なので問題ないですが、最新版を使いたい方は要注意。

このサーバーでも6までは動きました。npmは3.10.10。


3桁番台のサーバー

$ nodebrew install-binary v6.11.4

$ nodebrew ls
v8.7.0
v6.11.4
current v8.7.0
$ nodebrew use v6.11.4
$ node -v
v6.11.4
$ npm -v
3.10.10

XSERVER側は公表していないから書かない(他で探すと普通に書いてあるしglibのバージョンでわかる人も多そう)けれど、ディストリビューションは同じ(当たり前か)で、バージョンが2つ違います。結構な差。

yu・・・げほん。パッケージマネージャ使えないので億劫。今回は見送り。

どうしてもやりたい人は、上記のエラーメッセージでググると幸せになれる、、、かもしれない。


(追記)なので、普通にサーバーのアップデートしましょう

3桁番台のやつは6000番台になりました。

上記のトラブルはなくなりました。

バージョンも上がって、色々新しい環境が使えるようになります。

詳しくは公式のお知らせをご覧ください。


なんかwgetでもうまくいかないとき

友人に聞かれたので調べたが、SSL通信を設定しているとうまくいかないときがあるようです。

--secure-protocol=TLSv1とかもありますが、レンタルサーバを借りているあなたはきっと同じ画面の中にブラウザをよびだせるでしょう。


ブラウザのアドレスバー

git.io/nodebrew


アドレスを直接打ち込んで、出てきたソースコードをコピー。


shell

$ vi ~/nodebrew


できたファイルの中に、ペースト。で、セットアップ。


shell

$ perl nodebrew setup


これでいけるはず。