【发布时间】:2013-12-26 18:40:36
【问题描述】:
我已经完成了一个简单的 Flask 应用程序,我正在尝试使用 Apache2 在 AWS EC2 实例上托管该应用程序。我一直在关注this tutorial。
我在开发过程中所做的唯一更改(当我运行应用程序然后尝试通过 localhost 访问它时,应用程序运行完全正常)是:
1) Moved all the code in to /var/www
2) Changed it so that
if __name__=='__main__':
app.run(debug = False) #Now False instead of True
3) Added a app.wsgi file
4) Added file my_app to /etc/apache2/sites-available
5) Ran these commands:
$ sudo a2dissite default
$ sudo a2ensite sitename.com
$ sudo /etc/init.d/apache2 restart
这里是 app.wsgi 文件:
import sys
sys.path.insert(0, '/var/www/my_app')
from app import app as application
这是/etc/apache2/sites-available中的my_app文件:
<VirtualHost *:5000>
WSGIDaemonProcess app
WSGIScriptAlias / /var/www/my_app/app.wsgi
<Directory /var/www/my_app>
WSGIProcessGroup app
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from 127.0.0.1
</Directory>
</VirtualHost>
从上面的文件可以看出,我只希望烧瓶应用在 localhost 上可用。
当我运行 apache 并尝试访问位于 my_site.com:5000 的网站时,我收到“无法连接错误”。我真的不知道为什么。任何帮助,将不胜感激。
另外,如果需要的话,这里是我的 Flask 应用程序本身的目录结构:
/var/www/my_app/
app/
__init__.py
static/
css/
bootstrap.css
favicon.ico
js/
bootstrap.js
templates/
base.html
index.html
search.html
views.py
app.wsgi
flask/ #my virtualenv
#Your typical virutalenv structure
flask_util_js.py #File that is a FLask entension for client-side generation of URLs
requirements.txt
run.py
virtualenv.py #Creates virutalenv flask
更新:
所以,我觉得我设置代码的方式存在问题。所以我把run.py、__init__.py和views.py中的所有东西都拿走了,然后做了一个大的main.py。我已将app.wsgi 更新为如下所示:
app.wsgi
import sys
activate_this = '/home/achumbley/flask/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, '/home/achumbley/new_flask_app')
from main import app as application
现在,我的/etc/apache2/sites-available/new_flask_app 看起来像:
<VirtualHost *>
ServerName dev.east.appliedminds.com
WSGIDaemonProcess app
WSGIScriptAlias / /var/www/app.wsgi
<Directory /home/achumbley/new_flask_app>
WSGIProcessGroup main
WSGIScriptReloading On
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
最后,他是我最新的目录结构:
/home/my_username/new_flask_app/
logging.log
flask_util_js.py
main.py
static/
templates/
还是不行。但是,我可能不明白如何运行整个事情。我应该运行python main.py 对吗?它应该是自动的,至少我是这么认为的。
【问题讨论】:
标签: python apache amazon-ec2 flask