Help us understand the problem. What is going on with this article?

CentOS6にJupyterLabをインストール

知り合いからJupyterLab という素晴らしいものがあるという話を聞いたので、さっそく当方の環境にインストールしようとしたのですが、Extensionsのインストールで少々躓いてしまったので、メモを残しておこうと思います。

JupyterLab については、JupyterLabのすゝめ に詳しくまとまっていると思いますので、そちらをご覧いただければよいと思います。

インストール環境

当方のインストール環境は、タイトルにある通り、CentoOS6です。(少し古いですね。。。)

また、インストール先のPythonバージョンはPython3.6です。
Python2系にインストールする場合でも、ほぼ同様の手順になるんじゃないかと思います。

また、当方環境は、プライベートネットワーク上にあるサーバーです。
そのため、CentoOSサーバーとは別のPCからSSH接続してインストール作業を行うで、そのあたりはMacやWindowsとは少し作業イメージが異なるかもしれません。

JupyterLab のインストール

これは、Githubのページ にある通りでスムーズにインストールできました。

$ sudo pip3 install jupyterlab

Extensions のインストール

JupyterLabのすゝめ では、JupyterLabを使うなら、Extensionsもインストールすることをお勧めされていたので、私もそのようにしてみたいと思います。

Node.js のインストール

Extensionsを使用するには、Node.jsをインストールする必要があるようです。
2019年6月19日現在では、v6.11.5以上のバージョンを要求されました。

Node.js のインストールはnvmを使ってインストールすることが多いようなのですが、これは開発環境を構築するのには便利だけども、サーバーにグローバルインストールするには不便らしいです。
実際、私も一度nvm を使ってグローバルインストールに試みましたが、非常にややこしいことになりそうになったので中止しました。

サーバーにグローバルインストールするなら、nコマンド経由でインストールする方が便利なようなので、そのようにしてみようと思います(結局のところ node.js をサーバーにインストールするにはどうやればいいのか?)。

$ sudo yum install nodejs npm --enablerepo=epel
$ sudo npm config set strict-ssl false
$ sudo npm install -g n
$ sudo npm config set strict-ssl true
$ sudo n stable

これで、CentoOS6でも利用可能なv10.16.0をインストールできました。

(最新バージョンをnvmからインストールしようとすると、古いCentoOSを使用しているゆえに、GCCバージョン問題にぶつかります。)

jupyterlab-gitをインストール

試しにExtensionsの一つであるjupyterlab-git をインストールしてみたいと思います。

$ sudo jupyter3 labextension install @jupyterlab/git
$ sudo pip3 install --upgrade jupyterlab-git
$ sudo jupyter3 serverextension enable --py jupyterlab_git

これで、一般ユーザーからJupyterLabを立ち上げてもgit機能が使えるようになりました。

jupyterlab-toc のインストール

もう一つ、お勧めのExtensionであるjupyterlab-tocインストールしてみます。
これは、Mardown の見出しに沿って、目次を自動作成してくれるExtensionです。

$ sudo jupyter3 labextension install @jupyterlab/toc

JupyterLab の立ち上げ

あとは、一般ユーザーからJupyterLabを立ち上げれば良いのです。
普通は、立ち上げるには、

$ jupyter3 lab

で自動的にブラウザが立ち上がり、JupyterLabにアクセスできます。
しかし、このやり方だと、当方環境のようにサーバーにSSHで接続するような使い方だと、サーバー上のブラウザが立ち上がり、XWindowがローカルに飛んでくるため、非常に遅い動作になります。
そこで、SSHポートフォワーディングを使用して、ローカルのブラウザからリモートサーバーに立ち上がっているJupyterLabにアクセスするという方法をとります。

まずは、ブラウザ表示なしでJupyterLabを立ち上げます。

$ jupyter3 lab --no-browser

すると、以下のようなメッセージが表示されると思います。

[I 15:44:26.602 LabApp] [jupyter_nbextensions_configurator] enabled 0.4.1
[I 15:44:26.620 LabApp] JupyterLab extension loaded from XXXXXX
[I 15:44:26.620 LabApp] JupyterLab application directory is XXXXXXXXXXXXXX
[W 15:44:26.622 LabApp] JupyterLab server extension not enabled, manually loading...
[I 15:44:26.638 LabApp] JupyterLab extension loaded from XXXXXXXXXXXXXXXXXX
[I 15:44:26.638 LabApp] JupyterLab application directory is XXXXXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] Serving notebooks from local directory: XXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] The Jupyter Notebook is running at:
[I 15:44:26.639 LabApp] http://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[I 15:44:26.639 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:44:26.643 LabApp]

    To access the notebook, open this file in a browser:
        file:///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Or copy and paste one of these URLs:
        http://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXX

この場合は、リモートサーバーの8880番ポートにJupyterLabサーバーを立ち上げたという意味になります。

次に、新しいターミナルをローカルPCで立ち上げ、以下のように8880番ポートをポートフォワーディングして接続します。

$ ssh -L 8880:localhost:8880 [ユーザー名]@[リモートサーバーのIPアドレス] -i [SSHの鍵]

これで、あとは、ローカルPCのブラウザを立ち上げて、JupyterLabを立ち上げたときに表示されたメッセージにあるようにhttp://localhost:8880/?token=XXXXXXXXXXXXXXXXXXXXX にアクセスすれば、JupyterLabに入れます。

余談

今回は、rootユーザーでインストールを行っているので、何かExtensionsをインストールしようとしても、上記ような調子でroot権限を使ってExtensionsをインストールする必要があります。

一般ユーザーでJupyterLabを立ち上げて、そこからExtension Mannager を使ってインストールしようとすることはできるのですが、以下のようなエラーが表示されてインストールできませんでした。

Error communicating with server extension. Consult the documentation for how to ensure that it is enabled.
Reason given:
Error: 500 (Internal Server Error)

症状からして、恐らくroot権限がないことが原因なんじゃないかと思います。

また、root権限でコンソールからインストールして、その時にExtensionsを有効化してしまっているためか、一般ユーザーはExtensionsの有効化をやらなくてもよいようです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした