読者です 読者をやめる 読者になる 読者になる

備忘録

なんとなく暇なときにでも....

Vagrant+Flaskでローカル開発環境を構築する。

やってみた python 環境構築

なんとなくpythonの勉強もしていきたいなーと考えていまして。
最初はローカルのマシンにそのまま環境構築していこうかと思ったのですが、
ひさしぶりにVagrantでローカルに仮想環境(CentOS 6.4)を構築して、その上でFlaskでHello Worldまでやってこうかなと!

1. Vagrant, VirtualBoxのインストール Vagrant by HashiCorp
Oracle VM VirtualBox
(*詳しい記事は「Vagrant VirtualBox Mac などで検索すればいろいろ出てくるかと...」)

2. CentOS6.5のBoxを取得し、初期化。仮想環境にアクセス。

$ mkdir -p ~/Vagrant/centos
$ cd ~/Vagrant/centos
$ vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
$ vagrant init centos6.5

この段階で、~/Vagrant/centosVagrantファイルが生成される。これは簡単にいうと設計図で、この設計図を仮想環境を立ち上げる。

//以下がコメントアウトされていると思うので、コメントアウトをなくす。
config.vm.network "forwarded_port", guest: 5000, host: 8080

これはポートフォワーディングの設定で、Hostマシン(自分のPC)のポート8080でローカルホストにアクセスすると、Guestマシン(仮想環境を構築したマシン)のポート5000に転送されるように設定する。
Flaskはサーバーを立ち上げた際に、デフォルトでは5000番ポートで動作しているため、Gurstのポートを5000に設定しておく。
ここまでできたら仮想環境を立ち上げ、アクセスする。

$ vagrant up
$ vagrant ssh


3. Flaskをインストール ところで、pythonフレームワークはいろいろありますが、私が1番有名なDjangoを選択しなかった理由としては、以下のYES/NOチャートを参考にしました。
Python Webフレームワーク Django vs Pyramid vs Flask 2015年12月 - Qiita

いろいろな意見や考えがあると思いますが、極力学習コストが低いものでやってこうかなと。
というわけで、さっそくインストールしていこうと思います。
Flaskの公式リファレンスを参考に進めていきます。
インストールについて — Flask v0.5.1 documentation
まずはeasy_install, pipなどをインストールします。
w.builwing.info
インストールが完了したら

$ sudo easy_install virtualenv

などでvirtualenvをインストールします。
これは、プロジェクトごとに環境を個別に作ることができます。(今のところ複数プロジェクトを作る予定がないので、特に必要性を感じませんでしたが、念のため。)

$ mkdir project
$ cd project
$ virtualenv env
New python executable in env/bin/python
Installing setuptools............done.

個別の環境を作成する準備が整ったところでFlaskをインストールします。

$ easy_install Flask

インストールが終わりましたら、Hello Worldを表示するファイルを作成します。

// projectディレクトリ以下で
$ vi {path_to_project}/hello_world>py

from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
    app.run()
$ python hello_world.py
 * Running on http://127.0.0.1:5000/


Vagrantfileでローカルホストの8080番ポートにアクセスすれば、ゲストの5000ポートにポートフォワーディングするように設定したはずなので、ブラウザで127.0.0.1:8080にアクセスすればHello Worldの文字が....

f:id:tomAn:20160730181859p:plain

見えない。
解決方法は簡単でした。
python - Having problems accessing port 5000 in Vagrant - Stack Overflow

$ python hello_world.py
 * Running on http://0.0.0.0:5000/


これでHello Worldの文字が表示されるようになるかと思います
f:id:tomAn:20160730183352p:plain
今日はここまで。