VagrantでFlask(Python)環境開発

「VagrantでFlask(Python)環境開発」のアイキャッチ画像

こちらが完了していないなら先に済ませてから
flaskの環境を開発していきます

Windows仮想環境構築

 

Pythonのインストール

まずは仮想環境に入ります
仮想環境に入るにはVagrantFileを生成したディレクトリに
移動する必要があります

vagrantコマンドが動かない場合は
必ず「mvp/centos7」のディレクトリにいるか確認しましょう

$ cd Documents/mvp/centos7/
$ vagrant up
$ vagrant ssh
[vagrant@localhost ~]$

仮想環境に入ることができたらpyenvをインストールします
Pythonのバージョンを簡単に変更できるツールです

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

# 環境変数を入れます
$ vim ~/.profile

 

このようなとくていのファイルが表示されるので
「a」ボタンを押して編集を有効化します

「a」ボタンを押すと左下に「INSERT」という文字が出てきます
これは編集中という意味です

 

次にこちらを追加します

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

追加するとこのような感じになります

追加が完了したらこの修正を反映させます

まずは「Esc」キーを押します
「INSERT」の文言がなくなり修正モードが終了しました

次はこの修正を適用するために「:wq」と打ち込んでエンターを押します
エンターを押すと元のターミナルに戻ります

 

ターミナルに戻ったらこちらを実行
先ほどの修正をVagrantで適用します

$ source ~/.profile

 

次は利用可能なPythonのバージョンを確認します

$ pyenv install -l

 

たくさん出てきますが今回は3.6.4をインストールします

$ pyenv install 3.6.4

 

次はPython3.6.4を使えるようにします

# Pythonのバージョン管理機能を作成
$ pyenv virtualenv 3.6.4 venv

# 起動
$ source /home/vagrant/.pyenv/versions/venv/bin/activate


# 起動すると[vagrant@localhost]の前に(venv)が付きます
[vagrant@localhost ~]$ source /home/vagrant/.pyenv/versions/venv/bin/activate
(venv) [vagrant@localhost ~]$

 

次はPythonのバージョンを確認します

$ python --version
Python 3.6.4

無事にインストールされています!

それでは次はPython用のディレクトリを作成していきます

# pythonプロジェクト用のディレクトリ
$ mkdir app_python

# 移動
$ cd app_python

# テスト用のプロジェクト作成
$ mkdir flask_test

# 移動
$ cd flask_test

# プロジェクトファイル作成
$ touch app.py

 

Visual studio codeでapp.pyを開きこのように修正します

from flask import Flask
app = Flask(__name__)


@app.route('/')
def hello():
    return "Hello World!"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

 

その後実行するためにこちらをターミナルで実行

$ python app.py
Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from flask import Flask
ModuleNotFoundError: No module named 'flask'

 

flaskがインストールされていないのでインストールします

$ pip install flask

 

完了したら再度サーバーを起動します

$ python app.py

localhost:5000にアクセスしても表示されないので、
こちらの設定を行います

 

 

※以下の修正方法はRuby on Railsで同じ問題を対処した方法です。私の環境では動きましたが、万が一動かなければコメントするかご連絡ください

 

それではこちらを直していきます

まずは仮想環境からでます

$ exit

 

次はVagrantFileにこちらを追加します

 # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  # config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network :forwarded_port, guest: 3000, host: 3000

Ctrl + S で保存してからvagrantに設定を反映させるためにこちらを実行

$ vagrant reload

実行が完了したら再度仮想環境に入ります

$ vagrant ssh

仮想環境へ入ったらこちらのコマンドを実行していきます

$ sudo systemctl stop firewalld.service
$ sudo systemctl mask firewalld.service
$ sudo systemctl list-unit-files | grep firewalld

実行が完了したら先ほど作成したプロジェクトに移動して
flaskを起動してみます
※source …..を実行してvenvに入ってから実行してください。venvはpython3.6.4を動かすことができるkんきょうです。

$ cd app_python/flask_test/
$ python app.py

以下のリンクでログインしたところできました!

http://192.168.33.10:5000/

 

無事つながりました!

お疲れさまでした、これでflaskの環境設定は完了です!

いろいろと細かい説明は省きましたが、気になるようであれば「参考記事」
で調べるか自分でgoogleで調べてみてください

参考記事

Vagrant(CentOS7) + Rails環境でホストのブラウザからサーバ接続できなかった時の対処

MacOSにVagrantとPyenvとpyenv-virtualenv使ってUbuntu16.04、Python3系の仮想環境を構築

Flask ImportError: No Module Named Flask