概要
ホストマシンから、ゲストマシンのFlaskサーバへアクセスする環境を構築する手順を記載します。
まず、Virtual Box上にUbuntu18.04の仮想環境(=ゲストマシン)を構築します。あわせてゲストマシンにプログラムファイルを配置するために共有フォルダ設定を行います。
また、ゲストマシン上にFlaskをインストールし、Flaskで構築したサーバにホストマシンからアクセスできるように設定を行います。
今回、仮想環境構築にあたっては、Ubuntu18.04のisoを用いてインストールするのではなく、Vagrantを用います。Vagrantであればネットワーク設定が簡単に出来るからです。
※アプリケーションのバージョンが異なると環境構築に失敗する場合があります。
用語
・ホストマシン:PC本体・ゲストマシン:ホストマシン上にVirtual Boxで構築する仮想マシン
・Vagrant:Virtual Boxに仮想環境を構築するためのツール。
・Box:仮想マシンにインストールするOSやネットワーク設定などの1セット。技術者によって公開されているものがある。
・Flask:簡易にpythonサーバを構築できるOSSフレームワーク。
事前準備(前提とする環境)
【ホストマシン】・Windows10 Professional
・Virtual Box 5.2.6
【ゲストマシン】
(空)
構築する環境
【ホストマシン】・Vagrant 2.1.5
【ゲストマシン】
・ubuntu 18.04(python3.6.5含)
・pip3
・Flask 1.0.2
手順
Vagrantのインストールとセットアップ
以下からVagrantをインストールします。
https://www.vagrantup.com/downloads.html
Vagrantファイルを落とすディレクトリ(フォルダ)を作成します。
以下の例ではCドライブ直下にVagrantディレクトリ、Vagrantディレクトリは以下にubuntuディレクトリを作成していますが、好きなところに作成してOKです。
$ mkdir C:\Vagrant $ cd C:\Vagrant $ mkdir ubuntu $ cd ubuntu
VirtualBox上で構築するBoxを検索します。今回は、同サイトに掲載されているBoxの「ubuntu/bionic64」を用います。
https://app.vagrantup.com/boxes/search
構築するBoxを指定して、Vagrant初期化します。初期化を行うと「ubuntu」ディレクトリ配下にファイルが作成されます。
$ vagrant init ubuntu/bionic64
Vagrantを起動します。これでゲストマシン上にubuntu環境が構築されました。
$ vagrant up
ホストマシンとゲストマシンとの共有フォルダ作成
共有フォルダするディレクトリを指定します。指定は、下記ファイルの編集によって行います。
編集対象ファイル:C:\Vagrant\ubuntu\Vagrant
(修正前)# config.vm.synced_folder
(修正後)config.vm.synced_folder "./shared", "/home/vagrant/shared", owner: "vagrant", group: "vagrant"
共有フォルダ作成のためのvagrantプラグインをインストールします。
$ vagrant plugin install vagrant-vbguest
ここで、vbguestのバージョンを確認し、以下のように一致していればOKです。
$ vagrant vbguest [default] GuestAdditions 5.2.6 running --- OK.
ubuntuのバージョンが古い(14.04など)とhostとguestでバージョンアンマッチになる場合があります。その際は、以下のようにバージョンを揃えてください。
$ vagrant vbguest [default] GuestAdditions versions on your host (5.2.6) and guest (4.3.36) do not match. $ vagrant halt $ vagrant vbguest [default] GuestAdditions 5.2.6 running --- OK.
共有フォルダの設定が完了したら、Vagrantを再起動します。
$ vagrant up
Flaskのインストール
ゲストマシンにssh接続します。
$ vagrant ssh
username:vagrant
password:vagrant
ゲストマシンにFlaskをインストールするためにpip3をインストールし、その後にFlaskをインストールします。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt install python-pip python3-pip vagrant@vagrant-ubuntu-trusty-64:~$ sudo pip3 install Flask
ゲストマシンにFlaskをインストールするためにpip3をインストールし、その後にFlaskをインストールします。
sudo apt-get update
ホストマシンへのIPアドレス公開設定
一旦ゲストマシンからログアウトします。
vagrant@vagrant-ubuntu-trusty-64:~$ exit logout Connection to 127.0.0.1 closed.
ゲストマシンの接続先IPアドレスを「Vagrant」ファイルに設定します。
編集対象ファイル:C:\Vagrant\ubuntu\Vagrant
(修正前) # config.vm.network "private_network", ip: "192.168.33.11"
(修正後)config.vm.network "private_network", ip: "192.168.33.10"
vagrantをリロードと起動をします。
$ vagrant reload $ vagrant up
サーバサイドプログラムの配置とFlaskサーバへ接続
ホストマシンの共有フォルダ(C:\Vagrant\ubuntu\shared)にサーバサイドプログラム(以下)を配置します。
【プログラム】hello.pyfrom flask import Flask app = Flask(__name__)
@app.route('/') def hello_world(): return "Hello World!"
if __name__ == '__main__': app.run(host='0.0.0.0')
再度、ゲストマシンへsshログインします。
$ vagrant ssh
ゲストマシンからも「hello.py」を確認します。
vagrant@vagrant-ubuntu-trusty-64:~$ cd shared/ vagrant@vagrant-ubuntu-trusty-64:~/shared$ ls hello.py
ゲストマシンのrebootなどでフォルダ共有は解除されます。解除された場合はvegrantのreloadからやり直してください。
$ vagrant reload $ vagrant up
ゲストマシンから「hello.py」が確認できたら、サーバーを起動します。
vagrant@vagrant-ubuntu-trusty-64:~/shared$ python3 hello.py
これで準備完了です!ホストマシンから以下にアクセスしてください。ブラウザに「Hello World」が表示されます。
http://192.168.33.10:5000/
0 件のコメント:
コメントを投稿