背景
世間ではクローリングやスクレイピングが流行っているらしいじゃないか。どれどれやってみるか・・
ということで参考書にある通り下記の環境を作ることにした。
ホスト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しかやってこなかった事を後悔・・・