我已经完成了一个简单的Flask应用程序,该应用程序试图在带有Apache2的AWS EC2实例上托管。我一直在关注this tutorial。在EC2上部署Flask应用程序以进行本地主机访问
只有我的开发过程(其中应用程序,当我运行它,然后尝试通过本地主机访问它运行完全正常)所做的更改是:
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
这里是应用程序。 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>
正如你从上面的文件中看到的,我只想在本地主机上使用容器应用程序。
当我运行apache并尝试访问网站my_site.com:5000
时,出现“无法连接错误”。我无法弄清楚为什么。任何帮助,将不胜感激。
而且,这里是我的瓶应用程序本身的目录结构,如果这是需要的:
/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
UPDATE:
所以,我的感觉是,我有办法我代码设置是有问题的。所以我把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
对不对?它应该是自动的,至少这是我所设想的。
好吧,所以我将代码移出并使用app.wsgi文件中的应用程序的绝对路径。重新启动apache,但仍然不起作用。它现在应该工作吗?另外,我还看到了很多其他示例,显示了位于/ var/www中的整个应用程序,您确定不允许其中存在代码? –
是的,绝对确定。你在'app'目录下没有'app',这就是为什么它不起作用。导入行应该引用你有'if __name__ =='__main __''行的模块。 –
Gah,所以我完全重构了我的代码,以便所有内容都包含在您的示例中的main.py中。我认为我做的一切都是正确的。但它仍然不会服务我的应用程序...更新的问题 –