我看过很多关于如何将Flask web应用程序部署到AWS的例子,但所有这些例子都是使用Ubuntu或EC2的Red hat实例。
有人能告诉我如何将flask应用程序部署到从Amazon Linux 2(免费层(实例化的EC2,并使用Python3 吗
更新
David Buck,谢谢你的链接,但我正在尝试将httpd与mod_wsgi一起使用;在经历了这么多谷歌搜索之后,我想出了以下步骤:
yum install python3-devel httpd-devel gcc
pip3 install mod_wsgi
mod_wsgi-express module-config >> /etc/httpd/conf/httpd.conf
但根据最后一个命令,我得到了mod_wsgi-express: command not found
一旦我通过了上述步骤,我就可以继续设置烧瓶应用
感谢
我遵循以下步骤,从amazon ec2实例(amazon Linux 2 AMI t2.micro(获得烧瓶应用程序
通过ssh登录到ec2实例,并运行以下命令:
01 sudo su
02 yum install python3-devel httpd-devel httpd gcc git
03 pip3 install mod_wsgi
04 mod_wsgi-express start-server
上面的命令不起作用,但它在重新启动实例后起作用
05 mod_wsgi-express module-config >> /etc/httpd/conf/httpd.conf
这又一次不起作用;不断出现拒绝权限的错误,即使我使用sudo运行时也是如此;所以我用管道连接到一个临时文件,并将该临时文件的内容复制到/etc/httpd/conf/httpd.conf
中
临时文件的内容应该像下面的
LoadModule wsgi_module "/usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so"
WSGIPythonHome "/usr"
重新启动http服务并确保一切正常
06 systemctl restart httpd
现在用于设置烧瓶应用
07 pip3 install flask
08 car /var/www
09 git clone https://github.com/nshathish/flask-lab2.git
10 cd flask-lab2
11 nano flask-lab2.wsgi
在上述文件中输入以下内容
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, "/var/www/flask-lab2")
from app import app as application
12 sudo nano /etc/httpd/conf.d/flask-lab2.conf
现在将以下内容复制到上述文件中
<VirtualHost *:80>
ServerName flask-lab2.myserver.com
ServerAdmin root@nshathish.com1
WSGIScriptAlias / /var/www/flask-lab2/flask-lab2.wsgi
WSGIDaemonProcess flask-lab2
<Directory /var/www/flask-lab2>
WSGIProcessGroup flask-lab2
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ErrorLog /var/log/httpd/error.log
LogLevel warn
CustomLog /var/log/httpd/access.log combined
</VirtualHost>
最终检查
13 curl http://localhost
如果你得到上面命令的Hello World
,一切都很好
如果有人能解释我为什么不能运行第5步,那将非常有用;对上述步骤的任何改进都是非常受欢迎的