Python
Ubuntu
vagrant
VirtualBox

VagrantでUbuntu仮想環境を作成したときの備忘録

背景

世間ではクローリングやスクレイピングが流行っているらしいじゃないか。どれどれやってみるか・・
ということで参考書にある通り下記の環境を作ることにした。

ホストOS:windows10
ゲストOS:Ubuntu
仮想化技術:VirtualBox+Vagrant

流れ

1.自前のPCが仮想化技術についていけるかを確認。
2.Hyper-Vを停止する。
3.VirtualBoxをインストール。
4.Vagrantをインストール。
5.Ubuntuのイメージファイル的なものを下記コマンドで取得

vagrant box add ubuntu/trusty64

これは仮想環境立ち上げるフォルダとは別なところにストックされている。次回同じ名称の環境を立ち上げると参照されるので、無駄にダウンロードはされない。

6.初期化をする

vagrant init ubuntu/trusty64

こうすると実行したディレクトリにvagrantfileたるものが生成される。実態はRubyで書かれているようだ。
このvagrantfileをvagrantさんは読み込んで環境の設定をVirtualBoxにお願いしてくれる。

7.設定

Vagrant.configure("2") do |config|
 config.vm.box = "ubuntu/trusty64"
 config.vm.box_check_update = false
 config.vm.network "forwarded_port", guest: ポート番号, host: ポート番号
 config.vm.provider "virtualbox" do |vb|
  vb.memory = "1024"
 end
end

上から、デフォルトの環境は「ubuntu/trusty64」ですよ。今度vagrant upっていったらこれにしてねの意味。
ボックスのアップデートを毎回確認するかしないか。(私はネット難民なのでfalseだけど非推奨)
ゲストOSとホストOSのポート共有。フォワードマッピングっていうのかな。
最後はメモリー量指定。他にもいろいろあるからコメントブロック読んで頑張ろう。

8.仮想環境立ち上げ

vagrant up

9.仮想への接続

vagrant ssh

10.pythonのバージョン確認

python -V
python3 -V

入っているけどだまされちゃいけない・・・これにはバグがあるかもしれないのだ。
↓これがうまくいけばいいのだが

python3 -m venv scraping

↑うまくいかない場合はもしかすると、OSにもともと入っているpythonにはensurepipというものが入っていないのが原因かもしれない。だからこっちを入れろということだ→python3.4-venv

sudo apt-get install -y python3 python3.4-venv

sudoっていのは管理者に格上げってこと。vagrantで作成した環境はvagrantっていうユーザーで入ることになるが、このユーザーはsudoコマンドを許可されているので(そーゆう環境にしてくれてるんだろうと想像)のでできるみたい。aptっていのはゲストOS自体のパッケージ管理ソフトって感じかな?
そのあと勢い余ってこんなことはしない事。

sudo python3 -m venv scraping

こうして作られた仮想環境は、なにかと管理者権限を要求してくる。それってもう仮想環境の意味ないかも。
仮想環境をホームディレクトリに作ること(管理者権限いらないとこ)。ホームディレクトリは 単にこうすると行ける。

cd

そもそもホームディレクトリっていうのは、ユーザー固有のものにするっていう思想らしい。そのユーザーは配下のディレクトリに対してすべての操作が可能。ほかのユーザーは書き込めない。

vagrantユーザーは、デフォルトでは

 /home/vagrant

がホームディレクトリと呼ばれるものになる。
仮にrinrenというユーザーが登録されていたとしたら

 /home/rinren

というディレクトリがある事になる。
それで話は戻って、これをホームディレクトリで実行すると

python3 -m venv scraping

/home/vagrant/scraping

というディレクトリ(仮想環境)が出来上がる。
この仮想環境に入るには

. scraping/bin/activate

その状態で確認してほしい

which python

どこのpythonを実行する気でいるか結果が返ってくる。
その結果が、仮想環境の配下なら成功だ。
仮想環境抜けるには

deactivate

ssh終了するには

exit

仮想環境閉じるには

vagrant halt

仮想環境削除するには

vagrant destroy

管理者権限の事とかディレクトリの事とかlinux系は初めてだったから。疲れた。windowsしかやってこなかった事を後悔・・・