導入: 何番煎じか分かりませんが...
Windowsマシンしか持ってないけれど、Linux環境が欲しくなったので、そのときやったことのメモ。
Pythonの仮想環境もついでに作る。
実行環境
- OS: Windows10
- CPU: intel core i5
- memory: 4GB
背景知識として
ホスト(今回はWindows10)上でVirtualBoxが動き、その上でゲスト(今回はUbuntu14.04)が立ち上がる。
ホスト-ゲスト間の通信はSSHで行うのが一般的。
前準備: 各種ツールのインストール
- VirtualBox
仮想化ソフトのうちの一つ。インストーラが以下で入手できる。
Downloads - Oracle VM VirtualBox
ホストによってインストーラが違うので注意。今回はVirtualBox 5.0.20 for Windows hosts x86/amd64 をインストールした。
- Vagrant
こいつで仮想環境を管理するとべんり。CLI(Command Line Interface)から扱える。インストーラは以下から。
Vagrant by HashiCorp
vagrant-teraterm
teratermで仮想OSにSSH接続する際に、いちいちポート番号を確認するのが面倒なので、プラグイン作った人がいる。下記をプロンプトで実行してインストール。
vagrant plugin install vagrant-teraterm
- Packer
OSのISOイメージから、各種設定項目を記述したjson形式のテンプレートファイルを元に、仮想OSイメージを作成する。出力はVMwareで読めるものとVirtualBoxで読めるものを両方作れるが、今回はVirtualBoxだけ。インストーラは下記より。
Downloads - Packer by HashiCorp
導入手順
- ISOからBoxを生成
- Boxから仮想OSを初期化し、仮想OSへSSH接続
- 仮想OSへPythonの仮想環境を構築
以下詳述。
-
- ISOからBoxを生成、vagrantに追加
A list of base boxes for Vagrant - Vagrantbox.es
上記に、各種BoxのURLがある。BoxのURLを、以下のようにしてBoxを追加できるが、だれが作っているのか分からないので、安全性に?が付く。なるべく自分で作ることをお勧めする。
vagrant box add {title} {url} //{title}はosの名前で任意
Boxを自分で作るには、ISOイメージを落としてきて、これをPackerに投げる。
Packerに投げてBoxを生成するときの各種設定項目は、json形式で与えることができる。このjsonテンプレートは時雨堂が配布してくれている。
https://github.com/shiguredo/packer-templates
Packerの使用法は、下記を参考にした。
Packerを利用したUbuntu14.04 ServerのVagrant用Boxファイルの作成
-
- Boxから仮想OSを初期化し、仮想OSへSSH接続
- でBoxが追加されているなら、
vagrant init {title}
vagrant up
で初期化、起動できる。一つのディレクトリに一つの仮想OSであることに注意。作りたいディレクトリで初期化を実行する。
初期化には結構時間がかかるが慌てず、放置しておk。
起動後は、予め追加しておいたteratermプラグインで、
vagrant teraterm
で自動的にteratermへSSH接続してくれる。本来なら、いちいちポート番号とパスワードを要求してくるところを、一行でできるようになっている。便利な世の中である。
ちなみに、パスワードはvagrant。
-
- 仮想OSへpythonの仮想環境を構築
これは非常に簡単で、次を参照した。
Ubuntu14.04にpyenv,Anaconda,MeCabをインストールしPython3環境構築
{version}には、
pyenv install --list
で確認できるバージョンを入力してあげればおk。
sudo apt-get install git gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
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
exec $SHELL
pyenv install anaconda3-{version}
pyenv rehash
pyenv global anaconda3-{version}
以上。