2019年6月12日水曜日

ゲストマシンに構築したFlaskサーバへホストマシンからアクセスする方法

概要

ホストマシンから、ゲストマシンの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.py
from 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 件のコメント:

コメントを投稿

FX自動トレード_2021年6月実績

      概要 2021年6月が終わり、FX自動トレードによる収益実績を取り纏めましたので振り返ってみたいと思います。 2021年6月結果 2021年6月の実績は、実利利益額:\66,761、実績利益率は1.42%でした。 今月もボラが全く出ず。利益率の連続過去最低記録更新は免...