操作系统:Ubuntu 16.04.4 LTS
硬件:AWS Lightsail实例
我正在运行一个Web应用程序,该Web应用程序将Nuxt.js用于网站的前端,并使用Flask Python接收帖子并获取来自Axios的请求。目前,我遇到的问题是我无法通过Apache托管Flask应用程序。
这是flask应用程序中的相关代码。
from flask import Flask, render_template, request
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# Test get request
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(threaded=True)
到目前为止,我已经尝试了一些不同的方法:
修改bitnami-apps-prefix.conf文件
这是我最初将流量重定向到前端nuxt应用程序的方式。
我将此行添加到前端文件中
包括“ /opt/bitnami/apps/mywebapp/conf/httpd-prefix.conf”
然后在该文件路径的conf文件夹中创建了两个文件。
httpd-prefix.conf
包括“ /opt/bitnami/apps/mywebapp/conf/httpd-app.conf”
httpd-app.conf
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
问题
这适用于前端,因为我可以访问用户界面。但是,当我尝试对烧瓶应用程序执行相同的操作时...
bitnami-apps-prefix.conf
包括“ /opt/bitnami/apps/mywebapp-API/conf/httpd-prefix.conf”
httpd-prefix.conf
包括“ /opt/bitnami/apps/mywebapp-API/conf/httpd-app.conf”
httpd-app.conf
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
...它不起作用。该应用程序未显示为在5000端口上运行。
使用apache wsgi模块
老实说,我不太了解自己在这里所做的工作或应该如何工作。
我通过从git下载,提取文件然后运行make来安装mod_wsgi。我添加了一个名为mywebapp-API.wsgi的文件,并向其中添加了以下代码:
import sys
sys.path.insert(0, '/opt/bitnami/apps/mywebapp-API')
from main import app as application
在/opt/bitnami/apache2/conf/httpd.conf下的httpd.conf文件中,我添加了此语句以将模块加载到apache中。
LoadModule wsgi_module "/usr/local/lib/python3.5/dist-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so"
并转到/opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf:
<VirtualHost *:5000>
ServerName #the IP address
WSGIScriptAlias / /bitnami/stack/apps/mywebapp-API/mywebapp-API.wsgi
<Directory /bitnami/stack/apps/mywebapp-API-API>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
问题
但是由于某种原因,从未将mod_wsgi的.so文件添加到 / opt / bitnami / apache2 / modules /文件夹。
每当我尝试重新启动apache时,我都会收到一条错误消息,说 “ WSGIScriptAlias”不存在。
该API仍未托管在端口上,并且无法访问。
关于我的问题的任何想法吗?