はじめての仮想環境構築(Vagrant + Ubuntu +Teraterm )

ゴール

Windowsばかり使っていたアナログ人間でも仮想環境を構築できること


ローカルではなく、仮想環境を構築して開発に取り組もうと思ったきっかけ

Pythonを使えば、データ収集、解析などを自動化できるということを友人のエンジニアから聞き、Pythonで数字をこねくり回したいなと思ったためです。


仮想環境を構築するうえで最初に用意するもの、ツール


・Virtualbox:VirtualBox-5.2.8-121009-Win.exe


・Vagrant:Vagrant 2.0.3


・Teraterm:teraterm-4.98.exe



※Ubuntuはコマンドで仮想環境下にインストールするので、ここではダウンロード先を記載しません。



ubuntuで仮想環境を構築するまでの流れ


1..VirtualBoxをインストール

ここからダウンロードしました。
https://www.virtualbox.org/wiki/Downloads


2.Vagrantをインストール

ここからダウンロードしました。
https://www.vagrantup.com/downloads.html


3.ubuntuをインストールするための下準備
コマンドプロンプトを「管理者として実行」し、下記のとおりコマンドを入力します。

「管理者として実行」すると、コマンドプロンプトの左上に、「管理者」と表示されます。


何をやっているか?

というと、1行目では、ubuntuというLinuxディストリビューションのひとつをインストールするためのディレクトリをmkdirコマンドで作り、2行目ではcdコマンドでインストールするディレクトリに移動するということをやっています。


$ mkdir %USERPROFILE%\vagrant\ubuntu64_16
$ cd %USERPROFILE%\vagrant\ubuntu64_16

※ 一番左の「ドル」マークは入力しなくておk。

この「ドル」マークは、コマンドということをアナウンスしてくれるしるしのようなもの。

また上記では、ディレクトリ名とディレクトリ名とのあいだには、\(バックスラッシュ)がありますが、windows上でのコマンドプロンプトの画面では、「円のマーク」が表示されます。

なお、noteでも円マークが表示できません(泣)。

※ディレクトリ名とディレクトリ名のあいだは、\(バックスラッシュ)。

/(スラッシュ)ではないので要注意。


コマンド、コマンドプロンプトってなに?
コマンドプロンプトとは、コマンドと呼ばれる命令文を用いてWindowsの操作や設定をおこなうためのツールのこと。

普段、マウスを使ってデスクトップからchromeを開いたり、音楽データを再生したりしているが、あれをキーボードで操作するというのがコマンドです。

コマンドを入力する場所がwindowsではコマンドプロンプト、あるいはpowershellと呼ばれ、Macではターミナルと呼びます。

友人のエンジニア曰く、

コマンドプロンプトを「グラフィカル」にしたものがデスクトップ。

とのこと。

Googleに「コマンド 一覧 linux」などと聞くと教えてくれるので、電車に乗っている暇なときなどにチラ見しておくと、コードを書くときに困らないかもです。

たとえば、、、。

ブクマ必至!Linuxコマンド一覧表【全33種】


今さら聞けない!コマンドプロンプトの使い方【初心者向け】


4.ubuntuをインストール

ではでは、

ユーザー名\vagrant\ubuntu64_16>

の横に、vagrantから始まる下記のコマンドを入力しましょう。

(最初は$を打ちたくなるけど打たないように!!)

$ vagrant box add ubuntu/xenial64 https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/v20180329.0.0/providers/virtualbox.box


最新バージョンをインストールするようにしていますが、下位のバージョンをインストールしたい場合は、下記のコマンドの<バージョン名>を変更すればおk


$ vagrant box add ubuntu/xenial64 https://app.vagrantup.com/ubuntu/boxes/xenial64/versions/バージョン名/providers/virtualbox.box


バージョンはここから確認できます。


5.ubuntuを起動

それではLinuxを起動してましょう。

ディレクトリの場所は、

ユーザー名\vagrant\ubuntu64_16

のままで、下記のコマンドを入力。

$ vagrant up

セキュリティの問題であれこれ質問されると思いますが、Yesでおk

こんな感じの一文が出てくれば無事起動できました。

==> default: Machine booted and ready!


コマンドプロンプト全体をスクリーンショットしてみましたので、ご参考までに。


6.ubuntuに接続

5まででは、あくまでubuntuをインストールしただけなので、続いてubuntuに接続しましょう。

先ほど

vagrant up

と入力したディレクトリで、下記のコマンドを入力してください。

$ vagrant ssh-config


このようなのが表示されると思います。

Host default
 HostName <数字H>
 User <ubuntu環境のユーザー名U>
 Port <数字P> 
 UserKnownHostsFile /dev/null
 StrictHostKeyChecking no
 PasswordAuthentication no
 IdentityFile "C:/Users/<PCユーザー名など>/vagrant/ubuntu64_16/.vagrant/machines/default/virtualbox/private_key"
 IdentitiesOnly yes
 LogLevel FATAL


上記のような文字列が確認できたら、Teratermを使います。

お持ちでない方は、ここでダウンロードしてください。

※僕は、teraterm-4.98.exe というバージョンをダウンロードしました。

Teratermを起動すると、このような

コマンドプロンプト??

わたし、まちがった?

と思わせる画面が出てくると思います。

(コマンドプロンプトではないので、ご安心ください。)

左上の「ファイル」というタブをクリックし、次に「新しい接続」をクリックてください。


「新しい接続」をクリックすると、このような画面が表示されます。

ここで、先ほど

$ vagrant ssh-config

と入力した後、コマンドプロンプト上で表示された文字列を入力していきます。

「ホスト」の右枠のなかには、「HostName」 <数字H>の<数字H> 

TCPポート#(P)の右枠のなかには、Port <数字P>の <数字P>

をそれぞれ入力しましょう。

あとは何もいじらず、「OK」ボタンをクリックしてください。


※ここでコマンドプロンプトの画面を閉じてしまったり、

$ vagrant halt

$ exit

などで仮想環境を抜けてしまった場合、OKを押しても「接続が拒否されました」と表示されてTeratermの画面も消えます。


さて、「OK」ボタンをクリックすると、このような画面が表示されます。

さて、先ほどと同様に、上記の画面の項目とコマンドプロンプト上に表示された項目と照らし合わせて入力していきます。


ユーザー名(N)の右枠には、User <ubuntu環境のユーザー名U>の<ubuntu環境のユーザー名U>

※おそらく、ubuntuやvagrantとなるかと。


パスフレーズ(P)はスルーし、パスワードをメモリ上に記憶するの左枠の✔をクリックし、チェックを外す。

RSA/DSA/(中略)鍵を使うの左丸をクリックし、浮き上がった「秘密鍵」ボタンをクリック。

「秘密鍵」ボタンをクリックすると、このような画面になります。

ここでは、下部の「ファイル名(N)」の右枠に、ある文字列をコピペします。

コピペしてほしい文字列は、いよいよ鉄板になりつつある先ほどのコマンドプロンプトのなかにあります。

具体的には、

$ IdentityFile "C:/Users/<PCユーザー名など>/vagrant/ubuntu64_16/.vagrant/machines/default/virtualbox/private_key"

private_keyです。

このprivate_keyを「ファイル名(N)」の右枠にコピペするのですが、おそらくコピペせずとも、「pri」と打つだけでPCが予測変換してくれるので、それをクリックしましょう。


こんな感じに入力できたら、「OK」ボタンをクリックしましょう。

Teratermの画面に下記のような文字列が確認できれば、ubuntuを無事起動することができました。

$ vagrant@ubuntu-xenial:~$


ubuntu環境を日本語対応させる

下記のコマンドは1行ずつ入力して、都度Enerしてください。

$ sudo locale-gen ja_JP.UTF-8

上のコマンドの意味:日本語環境を作成する

$ echo export LANG=ja_JP.UTF-8 >> ~/.profile

上のコマンドの意味:起動時に日本語として起動する

以上の設定内容を反映させるべく、こちらのコマンドも。

$ source ~/.profile

日本語対応しているか確かめるために、dateとコマンド入力し、こんなかんじに返ってきたら、OKです。

2018年  3月 30日 金曜日 10:18:04 UTC


いよいよ、ラストです!

最後は仮想環境でフォルダやファイルを作成したことを共有するように設定します。


ローカルディレクトリと仮想環境ディレクトリとを共有する


まず、

pwd

とコマンド入力してみてください。

これで

home\vagrant\などと表示されればOKです。

それでは共有する親フォルダを作りましょう。

pwdとは、現在自分がどこのディレクトリにいるのか教えてくれるコマンドです。

ローカルと仮想環境とを共有フォルダはできるだけ上位にあったほうが何かといいと思うので、まず確認しました。

つまり、たとえば

home\vagrant\abc\

と表示された場合、abcディレクトリのなかに保存されたファイルをはじめとするデータは共有されないということになります。

1つ上のディレクトリに移動する場合は、

$ cd ../

2つ上の場合は、

$ cd ../../

となります。


反対に1つ下位のディレクトリに移動する場合は、

$ cd <移動したいディレクトリ名>

2つ下位の場合は

$ cd <移動したいディレクトリ名aの上位ディレクトリであるディレクトリ名A>\<移動したいディレクトリ名a>

となります。


あるいは、同じレイヤー層だけど、違うディレクトリに移動する場合は、

$ mv <移動したいディレクトリ名x>

となります。


ディレクトリの移動関連でまとめるとこのようになります。

上位ディレクトリなら、cd ../

下位ディレクトリなら、cd <移動したいディレクトリ名>

同じレイヤー層だけど違うディレクトリに移動するなら、cd <移動したいディレクトリ名>


さて共有したい場所に辿り着いたら、下記のコマンドで共有するディレクトリを作りましょう。

※ディレクトリとフォルダはほぼ同義です。

$ mkdir <共有したいディレクトリ名>


続いて、AtomやVisual Studio Codeなどエディタでubuntu64_16フォルダのなかにあるVagrantfileを開いてください。

41行目のコメントがない行に、下記のコードを入力してください。

※<共有したいディレクトリ名>は自分がmkdirコマンドで作ったディレクトリ名を入力してください。

config.vm.synced_folder "./<共有したいディレクトリ名>", "/home/vagrant/<共有したいディレクトリ名>"

次に42行目が空白になるようにEnterで調整したら、下記のコードを入力してください。

config.vm.synced_folder "./workspace", "/home/vagrant/workspace"
config.vm.provider :virtualbox do |vb|
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//home/vagrant/workspace","1"]
end


ここまできたら、Teratermでは

$ exit

と入力して閉じてください。

コマンドプロンプトでは

$ vagrant halt

と入力した後、

$ exit

と入力して閉じてください。


改めてコマンドプロンプトを管理者として立ち上げ、下記のコマンドを入力してください。

$ fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
$ cd %USERPROFILE%\vagrant\ubuntu64_16
$ vagrant reload --provision

コマンドプロンプトでvagrantが起動が完了したら、Teratermでubuntuコンソールを立ち上げれば、共有完了です。


おつかれさまでした。


毎日プログラミングの勉強に勤しんでいるので、お気持ちいただければうれしいです(笑)。

BTC ビットコイン
3KDN2smFNx5qxc2tTUmSQ9WaHBjasun6w3

ETH イーサリアム
0x4959767640B9C45cd92370aA200e77E8836fCa59

#python #プログラミング初心者 #プログラミング #日記


ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?