Führen Sie den Flow aus, um die flask-Anwendung mit apache
auszuführen.
Mit Werkzeug
ist es ziemlich einfach zu starten, aber
Sobald es zu "Apache" + "Mod_wsgi" wird, steigt die Hürde, also habe ich es grob zusammengefasst.
Alle sind für Mac, lesen Sie daher bitte den entsprechenden Pfad usw.
Geben Sie virtualenv ein, das sich auf diesen Bereich bezieht. http://qiita.com/k2tanaka/items/5f111612ec1b6d7584a6
mkvirtualenv -p ~/.pythonz/pythons/CPython-2.7.6/bin/python2.7 v2.7.6
workon und pip
bis flask.
workon v2.7.6
pip install flask
Der Inhalt ist sehr gut geeignet. Vorerst mit einem minimalen Beispiel.
Ordnen Sie den Dateipfad danach der Konfektion von "Apache" zu.
/Users/kuryu/workspace/test/flask
├── app.wsgi
├── app_templates
│ └── index.html
└── main.py
app.wsgi
# -*- coding:utf-8 -*-
import sys, os
import logging
#Erforderlich, um Apache zu protokollieren
logging.basicConfig(stream = sys.stderr)
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from main import app as application
main.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
from flask import Flask, render_template
from jinja2 import FileSystemLoader
app = Flask(__name__)
#Versuchen Sie, das Vorlagenverzeichnis von jinja2 zu ändern
#Es muss nicht getrennt sein.
#Wenn nicht angegeben, dieselbe Hierarchie wie diese Datei"templates"werden.
app.jinja_loader = FileSystemLoader(
os.path.join(os.path.abspath(os.path.dirname(__file__)), 'app_templates')
)
@app.route("/")
def index():
from flask import render_template
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()
app_templates/index.html
hogehoge
mod_wsgi
einWurde weggelassen. Vielleicht kommt Linux mit "apt" oder "yum" oder von Anfang an mit "apache".
auf Mac
brew tap homebrew/apache
brew install mod_wsgi
Tu es
brew info mod_wsgi
Wenn Sie dies tun, kennen Sie den Pass.
Da vitualenv verwendet wird, geben Sie den Speicherort von python
mit WSGIPythonHome an.
flask.conf
## mod_wsgi
LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/3.5/libexec/mod_wsgi.so
WSGIPythonHome /Users/kuryu/.virtualenvs/v2.7.6
WSGIDaemonProcess test user=kuryu group=staff threads=5
WSGIScriptAlias /test /Users/kuryu/workspace/test/flask/app.wsgi
WSGISocketPrefix /var/run/wsgi
<Directory /Users/kuryu/workspace/test/flask>
Options +ExecCGI
SetHandler wsgi-script
AddHandler wsgi-script .wsgi
Order deny,allow
Allow from all
</Directory>
apache
Neustart.
sudo apachectl restart
Da / test
in WSGIScriptAlias angegeben ist, ist die URL wie folgt.
curl localhost/test/
curl localhost/test/foo
curl localhost/test/foo/bar
das ist alles.
90% der Ursachen für Ärger sind "Apache" ...
Recommended Posts