查了一堆资料,都是说得乱七八糟的,没搞清楚怎么运行那个中间价,包括官网!
终于弄出来了!
目录结构如下:
app1.py和app2.py的文件内容就是简单的程序了,示例如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello 1'
#from werkzeug.serving import run_simple
if __name__ == '__main__':
#run_simple('localhost', 5000, app, use_reloader=True, use_debugger=True, use_evalex=True)
app.run()
run_simple的这段是用来测试的时候用的,如果用ide的话其实也可以完全不用。
2个__init__.py都是空文件。
然后是根目录的那个app.py
from werkzeug.wsgi import DispatcherMiddleware
from app1.app import app as app1
from app2.app import app as app2
app = DispatcherMiddleware(app1, {'/app2': app2})
最后是在文件夹下,还有一个run_server.py,其实是一个wsgi脚本
目录结构如下:
run_server.py的内容其实和以前的那个一样,贴出来吧:
activate_this = 'D:/PythonProjects/FlaskEnv2/Scripts/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import site
import sys
# Remember original sys.path.
prev_sys_path = list(sys.path)
# Add site-packages directory.
site.addsitedir('D:/PythonProjects/FlaskEnv2/Lib/site-packages')
# Reorder sys.path so new directories at the front.
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_path
sys.path.insert(0, 'D:/PythonProjects/TestInApache')
from app import app as application
apache下的httpd-vhosts.conf的内容还是原来的一样
<VirtualHost *:80>
ServerName example.com
WSGIScriptAlias / "D:/PythonProjects/TestInApache/run_server.py"
<Directory "D:/PythonProjects/TestInApache">
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>
搞定!