Python
AWS
Jupyter
Anaconda

Python 開発用サーバの構築手順(AWS + Anaconda)

More than 1 year has passed since last update.


はじめに

今回は Amazon Web Service (AWS) 上に Python 開発用サーバを構築する。Python 環境の構築には Anaconda を利用し、IDE として Jupyter Notebook を利用する。

なお、筆者の環境は以下のとおり。

項目
内容

マシン
MacBook Air 13-inch, Early 2015

OS
OS X Yosemite 10.10.5

Mem
8 GB


インスタンス作成

今回は以下の構成の EC2 インスタンスを作成する。

項目
内容

Region
Oregon

Instance type
t2.small

EBS
汎用 SSD 30 GB

Security group
Inbound = TCP:22 & 8888, Outbount = all, Anywhere


SSH の設定

以下の設定を ~/.ssh/config に記述する(~/.ssh/configが無ければ新規作成)。XXXXX.pem は AWS で発行された秘密鍵ファイル。


~/.ssh/config

Host (任意のホスト名を記述: ex. pydev)

hostname ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com
identityfile ~/.ssh/XXXXX.pem
user ec2-user

サーバにログインする。

$ ssh pydev


必要なソフトウェアのインストール

Git, tmux, Emacs などをインストール。

$ sudo yum -y install git tmux emacs gcc gcc-c++ python-setuptools python-devel postgresql-devel

以後は tmux 上で作業する。

$ tmux


Anaconda 環境のインストール

以下のコマンドを実行する。

$ wget https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-4.0.0-Linux-x86_64.sh

$ bash Anaconda3-4.0.0-Linux-x86_64.sh
$ source .bashrc


Jupyter Notebook 環境の設定

以下のコマンドを実行する

$ jupyter notebook --generate-config

$ source activate root
$ ipython
In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password: XXXXXX
Verify password: XXXXXX

Out[2]: 'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXX'

出力された 'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXX' をメモしておく。

~/.jupyter/jupyter_notebook_config.py に以下の設定を記述。

~/.jupyter/jupyter_notebook_config.py

...

c.NotebookApp.ip = '*'

...

c.NotebookApp.open_browser = False

...

c.NotebookApp.password = 'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXX'

`

以下のコマンドで Jupyter Notebook サーバを起動する。

$ jupyter notebook &

/etc/rc.localnohup jupyter notebook & を追記するとインスタンス再起動時にも自動的にJupyter Notebook サーバが起動する。


ブラウザから Jupyter Notebook にログイン

ローカルのブラウザから http://[サーバのホスト名 or IP]:8888/ にアクセスするとログイン画面が表示される。Jupyter Notebook 環境の設定で入力したパスワードを入力するとログイン出来る。


おわりに

ここまでで AWS EC2 上に Python の開発環境が構築できた。現在の設定だとサーバのIPは再起動時に変わってしまうので、 Elasatic IP を利用して固定するなどするほうが良いだろう。マシンパワーが足りない際は、適宜インスタンスタイプを増強すればよい。


参考文献