はじめに
今回は 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 で発行された秘密鍵ファイル。
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.local` に `nohup jupyter notebook &` を追記するとインスタンス再起動時にも自動的にJupyter Notebook サーバが起動する。
# ブラウザから Jupyter Notebook にログイン
ローカルのブラウザから `http://[サーバのホスト名 or IP]:8888/` にアクセスするとログイン画面が表示される。Jupyter Notebook 環境の設定で入力したパスワードを入力するとログイン出来る。
# おわりに
ここまでで AWS EC2 上に Python の開発環境が構築できた。現在の設定だとサーバのIPは再起動時に変わってしまうので、 Elasatic IP を利用して固定するなどするほうが良いだろう。マシンパワーが足りない際は、適宜インスタンスタイプを増強すればよい。
# 参考文献
* [Amazon Web Service (AWS)](https://aws.amazon.com/jp/)
* [Anaconda](https://www.continuum.io/why-anaconda)
* [Jupyter Project](http://jupyter.org)