1. yni17196791

    Posted

    yni17196791
Changes in title
+XSERVERにNode.jsをインストールするときはnodebrew使うと楽
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,198 @@
+Node.jsをレンタルサーバでも使ってみたいなあと思ったけれど、まあVPS使うしかないんだろうなと思ってググったらちょこちょこ出てくる。
+同じこと考える人はやはりいるもので、とてもありがたい。
+
+Qiitaだと例えばさくらでやっている方がいらっしゃるようだ。
+[さくらのレンタルサーバ(スタンダード)でNode.jsをインストールする](https://qiita.com/azk0305/items/0bdb0fdab4bc8ebb5909)
+
+ただ、Node.jsは個人的にバージョンを管理できないと使いたくない。
+無理をすればできたとしても、普通にインストールしかできないならまあいいか、と思っていました。
+
+# nodebrewってperlがあればいいんやなって
+
+普段はmacでhomebrew経由でまとめてインストールしてしまっていたのであまり見ていなかった(すみません)のですが、何かのきっかけで開発者様のgithubを眺めていたらperlでいいんですねこれ。
+そもそもroot権限なし、というところを念頭に置かれたものだとか。ありがたい話。
+
+perlならXSERVERにも当然入ってるしいけるよな、、、いけるよね?
+
+ということでやってみました。
+
+# 環境
+
+- iMac 2017, macOS Sierra (10.12.6)
+- XSERVER (3桁番台と2000番台)
+
+# 前提
+
+- sshで接続できること([ssh設定 | XSERVER](https://www.xserver.ne.jp/manual/man_server_ssh.php))
+
+macやlinuxならこれだけやってあればなんとかなります。
+Windowsだとsshログインするために別途クライアントを用意する必要があるので、少々手間がかかりますがやることはほぼ同じです。私はwindowsだとRloginが一番好きです。
+
+macの場合、秘密鍵を`~/.ssh/`に持ってきて`~/.ssh/config`内に下記のように設定しておくとあとあと楽なのでやっておくとよいでしょう。
+
+```~/.ssh/config
+Host xserver
+ HostName <YourID>.xsrv.jp #サーバーアドレス
+ Port 10022 #ポートは10022番で固定
+ IdentityFile ~/.ssh/<YourPrivateKey>.key #ダウンロードした秘密鍵の場所
+ User <YourUserName> #ユーザー名
+```
+
+# やってみる
+
+基本は開発者である[hokaccha様のgithubリポジトリにある通りのコマンドでいい](https://github.com/hokaccha/nodebrew)んですが、curlはデフォルトでは入ってはいるものの使えない(リンクできない)ダウンロード→セットアップの手法を取ります。
+gitかなんかを入れるときにcurlをソースから入れた方は使っても良いと思います。
+
+```
+$ wget git.io/nodebrew
+$ perl nodebrew setup
+```
+
+すると、見覚えのある画面が。
+
+```
+Fetching nodebrew...
+Installed nodebrew in $HOME/.nodebrew
+
+========================================
+Export a path to nodebrew:
+
+export PATH=$HOME/.nodebrew/current/bin:$PATH
+========================================
+```
+
+言われた通りにパスを通します。
+viでもechoでもなんでもいいので、追加。
+
+```
+echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
+```
+
+設定読み込み
+
+```
+$ source ~/.bashrc
+```
+
+確認
+
+```
+$ 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・・・げほん。パッケージマネージャ使えないので億劫。今回は見送り。
+
+どうしてもやりたい人は、上記のエラーメッセージでググると幸せになれる、、、かもしれない。
+
+# なんかwgetでもうまくいかないとき
+友人に聞かれたので調べたが、SSL通信を設定しているとうまくいかないときがあるようです。
+
+`--secure-protocol=TLSv1`とかもありますが、レンタルサーバを借りているあなたはきっと同じ画面の中にブラウザをよびだせるでしょう。
+
+```
+git.io/nodebrew
+```
+
+アドレスを直接打ち込んで、出てきたソースコードをコピー。
+
+```
+$ ~/vi nodebrew
+```
+
+できたファイルの中に、ペースト。で、セットアップ。
+
+```
+$ perl nodebrew setup
+```
+
+これでいけるはず。
+