さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

vagrantにpython2.7系をインストールしてFlaskの開発環境を構築する

目次

1.概要

今回はVagrantを用意して、その中にFlaskアプリケーションの開発閑居を作成してこうと思います。
 
以下すべてroot権限で実施
 

2.pipのインストール

以下のコマンドを実行してpipをインストールします。
 

3.virtualenvとvirtualenvwrapperのインストール

pipをインストールしたら以下のpipコマンドでvirtualenvとvirtualenvwrapperをインストールします。
$ pip install virtualenv virtualenvwrapper
  

3-1.virtualenv用のディレクトリを作成 

※今回はvagrantの共有フォルダ内に作成
$ mkdir flask
 

3-2.virtualenvの作成 

$ virtualenv --no-site-packages flask
 

3-3.virtualenvの起動方法と停止方法 

起動
$ source bin/activate
 
停止
$ deactivate
 
あとは、仮想環境の中にプロジェクトを作成する。
 

4.mod_wsgiのインストール

$yum install mod_wsgi
 

4-1.mod_wsgi.soの場所

/etc/httpd/modules
 

4-2.wsgiファイルの作成 

/vagrant/project/flask/app
(flask) [vagrant@localhost app]$ ls
app.wsgi  main.py  templates
 

4-3.wsgiファイルの中身

/vagrant/project/flask/app/app.wsgi
# -*- coding:utf-8 -*-
 
import sys, os
import logging
 
# apacheのログに出すために必要
logging.basicConfig(stream = sys.stderr)
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from main import app as application
 

4-4.起動ファイルの中身

/vagrant/project/flask/app/main.py 
import os
from flask import Flask, render_template
from jinja2 import FileSystemLoader
 
app = Flask(__name__)
app.jinja_loader = FileSystemLoader(
    os.path.join(os.path.abspath(os.path.dirname(__file__)), 'templates')
)
 
@app.route("/")
def index():
    return render_template('index.html')
 
@app.route("/foo")
def foo():
    return "foo"
 
@app.route("/foo/bar")
def foo_bar():
    return "foobar"
 
if __name__ == "__main__":
    app.run(host='0.0.0.0')
 

4-5.htmlファイルの中身(今回はサンプルなので、、、)

/vagrant/project/flask/app/templates/index.html
hogehoge
 

4-6. ApacheのVirtualHostの設定ファイル

/etc/httpd/conf./flask.conf
## mod_wsgi
WSGIPythonHome /usr/bin/python2.7
WSGISocketPrefix /var/run/wsgi
 
<VirtualHost *:5000>
LoadModule wsgi_module /etc/httpd/modules/mod_wsgi.so
WSGIDaemonProcess app user=apache group=apache threads=5
WSGIScriptAlias /flask /vagrant/project/flask/app/app.wsgi
<Directory /vagrant/project/flask/app>
  Options +ExecCGI
  SetHandler wsgi-script
  AddHandler wsgi-script .wsgi
  Order deny,allow
  Allow from all
</Directory>
</VirtualHost>

5.Flaskアプリの起動

main.pyのあるディレクトリ内で下記のコマンドを叩く
$python main.py
  

6.Tips

.confの設定でapache側でエラーが出ている場合は、以下のコマンドでエラー詳細が確認できる。
http -t
 
 以上