Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Amazon Web ServiceでJupyter notebookを立てるまでのメモ

More than 1 year has passed since last update.

Yet another AWS EC2 Jupyter notebook立ち上げ

ラボ内の勉強会とかのためにJupyter-notebookを使いたくて、ただ自由にできるwebサーバーをもっていなかったので、AWS EC2の無料枠で立ててみた。

AWS EC2でインスタンスの立ち上げ

ubuntuで、t2.microのインスタンスを作成します。Jupyter notebookを立ち上げる時に、ポートを8888を解放してつなげるので、以下のようにセキュリティーグループのルールを新しく作ったあげます。

スクリーンショット 2017-03-08 14.46.42.png



sudo apt update
sudo atp upgrade
sudo apt install emacs wget pkg-config make gcc binutils

Python 環境の構築

wget https://repo.continuum.io/archive/Anaconda3-4.3.0-Linux-x86_64.sh
bash ./Anaconda3-4.3.0-Linux-x86_64.sh
## Enter/yes
source .bashrc


jupyter notebook --no-browser

[I 05:54:53.253 NotebookApp] Serving notebooks from local directory: /home/ubuntu
[I 05:54:53.253 NotebookApp] 0 active kernels
[I 05:54:53.253 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/?token=****
[I 05:54:53.253 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 05:54:53.254 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:

となって、Jupyter notebookを立てることはできます。
余談ですが、ここ によると、localhost (Mac)で表示できるらしい、そしてやって見たらできた。

スクリーンショット 2017-03-08 14.57.46.png

ただ、毎回sshするのはめんどくさいし、public domainからアクセスした方が優しいので、いろいろ設定して行きます。

Notebook passwordの作成


ubuntu@ip-172-31-27-190:~$ ipython
Python 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 12:22:00)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from IPython.lib import passwd

In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:**********************************'

In [3]: exit

  • サーティフィケイトを作成
cd ~
mkdir .cert
cd .cert
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
## ENTERを数回
  • Jupiter_notebook_config.pyをいじる
emacs ~/.jupyter/jupyter_notebook_config.py

## The full path to an SSL/TLS certificate file.
c.NotebookApp.certfile = '/home/ubuntu/.certs/mycert.pem'
c.NotebookApp.keyfile = '/home/ubuntu/.certs/mycert.pem'
## The IP address the notebook server will listen on.
c.NotebookApp.ip = '*'
## Whether to open in a browser after starting. The specific browser used is
#  platform dependent and determined by the python standard library `webbrowser`
#  module, unless it is overridden using the --browser (NotebookApp.browser)
#  configuration option.
c.NotebookApp.open_browser = False
## Hashed password to use for web authentication.
#  To generate, type in a python/IPython shell:
#    from notebook.auth import passwd; passwd()
#  The string should be of the form type:salt:hashed-password.
c.NotebookApp.password = 'sha1:********'
## The port the notebook server will listen on.
c.NotebookApp.port = 8888


Jupyter notebookをたちあげていじる

ubuntu@ip-172-31-27-190:~/Notebook$ cd ~
ubuntu@ip-172-31-27-190:~/Notebook$ mkdir Notebook
ubuntu@ip-172-31-27-190:~/Notebook$ jupyter notebook
[I 06:25:19.871 NotebookApp] Serving notebooks from local directory: /home/ubuntu/Notebook
[I 06:25:19.871 NotebookApp] 0 active kernels
[I 06:25:19.871 NotebookApp] The Jupyter Notebook is running at: https://[all ip addresses on your system]:8888/
[I 06:25:19.871 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).


スクリーンショット 2017-03-08 15.27.23.png

先ほどipython内で登録したパスワードをいれると、やっとjupyter notebookがひらけます。

スクリーンショット 2017-03-08 15.51.49.png

とりあえずなにか投げたいので、[New▼]からPython 3のNotebookを作成する。
スクリーンショット 2017-03-08 15.52.41.png

すると新しいnotebookを作成できる。これはpython用のkernelなので、pythonを全く知らない私ですが、とりあえず全世界共通言語hello worldを投げる。

スクリーンショット 2017-03-08 15.53.36.png





sudo apt install libzmq3-dev libmagic-dev libcairo2-dev
sudo apt install r-base libcurl4-openssl-dev libssl-dev libssh2-1-dev
  • PerlはIPerlで。
sudo apt install cpanminus
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
cpanm Devel::IPerl
echo "export PERL5LIB=$HOME/perl5/lib/perl5" >> ~/.bashrc
source ~/.bashrc

# 以下の二つ (もしかしたらどちらか)をやらないとjupyterにkernelとして認識されない
sudo find / name -name iperl
/home/ubuntu/perl5/bin/iperl console
/home/ubuntu/perl5/bin/iperl notebook

スクリーンショット 2017-03-08 17.12.05.png

  • RはIRkernel
conda install zeromq

## R内
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))

# または
# conda install -c r r-essentials
## うまくいかないことがあるらしいからmanualの方がよいかもしれない。

スクリーンショット 2017-03-08 17.21.17.png

切り替えはkernel->change kernelから

スクリーンショット 2017-03-08 17.21.01.png

もちろん他の言語も (kernelが実装されて入れば)使えます。

余談ですが、一つのpython kernelのnotebook内で複数の言語を打つ買うことができます。

pip install rpy2
#=> これだけだとlibgompがないと怒られるから、LD_LIBRARY_PATHを指定しておく。
sudo find / name -name libgomp.so.1
emacs ~/.bashrc

#=> こうするとreadlineがおかしいといわれるから、readlineをちょっと変える
# [参考] https://github.com/ContinuumIO/anaconda-issues/issues/152#issuecomment-225214743

conda remove --force readline
pip install readline.

スクリーンショット 2017-03-09 15.30.47.png


wget -O g-language-1.9.1.tar.gz "https://ja.osdn.net/frs/redir.php?m=jaist&f=%2Fglang%2F64267%2Fg-language-1.9.1.tar.gz"
sudo apt install gnuplot imagemagick libgd-dev
cpanm --force --verbose Chart::Graph
>> gnuplot
cpanm ./g-language-1.9.1.tar.gz
  • Rのいろいろ
## conda install -c r r-essentialsするといろんな事件が起きるのでオススメしない。
conda install -c r r-ggplot2
conda install -c r r-reshape


jupyter notebookでperl kernel使ってる時に、pngとかをinlineで表示したい時があると思います。

IPerl->png( "http://www.libpng.org/pub/png/PngSuite/ccwn3p08.png" );
# もしくは
IPerl->png( "graph/ecoli.png" );


Help us understand the problem. What is going on with this article?
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


No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Help us understand the problem. What is going on with this article?