Vagrant + Anaconda + Python3 + jupyter notebook環境導入

概要

Macbook上にVagrantを用いて、Python3の環境導入を行います。

環境は以下

ホスト

 ・macOS High Sierra 10.13.4
 ・VirtualBox 5.2.1
 ・Vagrant 2.0.4

ゲスト

 ・CentOS7
 ・Anaconda3-5.2.0
 ・Python3.6.5(Anaconda経由でインストール)

Mac

MacへのVirtualBoxVagrantは適当にGUIでインストール

Vagrantfile

VagrantでVitual Machine(VM)を作成するには、設定ファイルであるVagrantfileが必要です。 VMを作成するためのディレクトリを作成して、コマンドを実行

$mkdir vagrant
$cd vagrant 
$vagrant init

これでVagrantfileが作成されます。 次にVagrantfileの編集。

$vim vagrant file

Vagrant.configure("2") do |config|
  # Box
  config.vm.box = "centos/7"
  # 仮想マシンのネットワーク環境設定
  # "private_network"を指定するとホストOSからのみアクセス可
config.vm.network "private_network", ip: "192.168.33.10", auto_config:true
 config.vm.network "forwarded_port", guest: 8888, host: 8888 
  # ホスト側とゲスト側で共有するフォルダ。この場合Vagrantfileが存在するフォルダが/var/www/shareになります。
  config.vm.synced_folder "./", "/var/www/share"

  # プロバイダの指定
  config.vm.provider "virtualbox" do |vb|
    # GUI今回は不使用
    vb.gui = false
    # 仮想マシンの名前
    vb.name = "CentOS"
    # メモリ(MB)
    vb.memory = "2048"
    # CPU
    vb.cpus = 2
  end
end

Boxのインストール

$vagrant box add bento/ubuntu-16.04

Vagrantの起動

起動します。次回からはこれ以降の手順がスタートです。

# 起動
$vagrant up
#仮想環境へ接続
$vagrant ssh

Vagrantのシャットダウン、休止

# シャットダウン
$vagrant halt
# 一時停止
$vagrant suspend

CentOS

ここからはゲストOSでの作業になります。

##firewall停止
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo set enforce 0

gitのインストール

$sudo yum -y install git

pyenvのインストール

zshを使用している方は bashrcをzshrcで読み替えてください。

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv  
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc  
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc  
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc  
$ source ~/.bashrc  

anacondaのインストール

# anacondaのバージョン確認
$ pyenv install -l | grep anaconda
# 最新版インストール
$ pyenv install anaconda3-5.2.0
$ pyenv rehash
# anacondaをpythonのデフォルトに設定
$ pyenv global anaconda3-5.2.0
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.2.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
# condaのアップデート
$ conda update conda

Jupyter notebook

jupyter notebookはノートブックと呼ばれる形式で作成したプログラムを実行し、結果を記録しながらデータの分析を行うことができます。

変数の中身を見たり、デバッグをしたりといったことも簡単に行えるので機械学習の際は超お世話になります。

Anacondaをインストールした段階で、勝手にインストールされているので起動してみましょう。

# --ip=0.0.0.0 はlocalhost以外でのアクセスをする場合に必要。
$ jupyter notebook --no-browser --ip=0.0.0.0
# 起動後はCtrl + c でサーバー停止出来ます。

PC上のブラウザからVagrant上のJupyterへアクセス

Vagrant上のIPアドレスでアクセス
http://192.168.33.10:8888
tokenが必要みたいなことを言われるので、ホストOSで

# Jupiter のlist表示
$ jupiter notebook list

を実行し、tokenを貼り付ける。

サンプルコードの実行

ブラウザの右上に表示されているプルダウンメニューから New -> Python3 を選んで下記のコードを実行

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 1)
y = np.sin(x)
plt.plot(x, y)

f:id:mashi-prog:20180609105713p:plain こんな感じの出力がされたらOKです。 次回は実際に機械学習をやっちゃいます。