はじめに
前回の記事Pythonの勉強 Part.1 環境作成編で、開発環境は整いました。
ですけど、サーバーはLinuxなので、ソースコードを書いたりするには、viとかを使う必要があります。
今時ではない(?)と思いますので、リモートからコードを書いたり、管理したり、デバッグしたり、
できるようにしたいと思います。
jupyterとは?
jupyterというものがあります。
もともと、Pythonはインタプリタですが、コマンドラインでしか実行できません。
それを、IDE(ブラウザー)でコードを書いたり、実行したりできます。
コメントはMarkdownに対応していますので、いろいろ拡張性はありそうです。
jupyterをインストール
# pip install -U jupyter
簡単ですね。
jupyterにログインするパスワードを作成
jupyterにログインするときにパスワードが必要になります。
下記のコマンドでsha1ハッシュコードを生成します。
# python -c "import IPython;print(IPython.lib.passwd())"
Enter password:(ここにパスワードを入力)
Verify password:(同じパスワードを入力)
sha1:<数字>:<英数字>
sha1:….と表示された文字列をコピーします。
jupyterの環境作成
まずは、jupyter用の作業ディレクトリーを作っておくといいと思います。
なくてもいいですが。
次に、jupyterの環境作成を行います。
# jupyter notebook --generate-config
実行すると、ログインユーザーのディレクトリーに.jupyterディレクトリーが作成されます。
そこに作成されたjupyter_notebook_config.pyファイルを修正します。
# cd .jupyter/
# vi jupyter_notebook_config.py
ソースコードの最後に以下の内容を書き込み保存します。
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'sha1:<数字の文字列>:<英数字の文字列>'
c.NotebookApp.portは、任意のポートを設定します。ここでは8888を設定しています。
c.NotebookApp.passwordは、先ほど作成したパスワードのハッシュコードを入力します。
最後に、jupyter用の作業ディレクトリーに移動して以下のコマンドを実行します。
# cd ~/
# nohup jupyter notebook > /dev/null 2>&1 &
このようにすれば、ターミナルを閉じてもjupyterは実行されています。
注意事項
ポートが空いていないとアクセスできません。
1) # iptables -L で該当のポートが空いていることを確認
2) 空いていないときは、
# iptables -I INPUT 6 -p tcp -m tcp --dport 8888 -j ACCEPT
# service iptables save
# service iptables restart
3) AWSの場合は、コンソール上でポート開ける必要があります。
ネットワーク&セキュリティ -> セキュリティグループから
インバウンドタブを選択して、編集ボタンをクリックして、
ルールを追加します。
そこで、ポートを開けます。
下記の例では、”カスタムルール” – ”プロトコル(TCP)” – ’ポート範囲(8888)’としています。
いざ、juptyerを起動
以下のアドレスをブラウザーで実行します。
http://グローバルIPアドレス(AWSの場合は、パブリックIP):8888
以下の画面が表示されます。
先ほど設定したパスワードを入力してログインします。
ログイン後に次のような画面が表示されればOKです。
新規ファイルを作成からHello World!まで
右上の”NEW”ボタンから作成します。
ディレクトリーなども作成できます。
Pythonのファイルを作成するため、”Python3″を選択します。
すると、つぎのような画面が表示されます。
コマンドラインのように実行することができます。
試しによくあるHello World!を表示します。
Cellメニューの下にある右矢印のボタンをクリックして実行します。
すると、実行されました。
再度実行するときは、”In [1]:”をクリックして再度実行します。
保存は、お決まりの”File”メニューからできます。
おわりに
一行ずつ実行したり、途中から再実行したりとデバッグがしやすい環境ですので、
作って損はないと思っています。