【问题标题】:how to deploy flask apps to ubuntu如何将烧瓶应用程序部署到 ubuntu
【发布时间】:2015-08-10 12:44:03
【问题描述】:

我知道这个问题有一个关于 digitalocean 的文档,但由于某种原因它并没有真正起作用。

Ubuntu:14.04
HTTP 服务器: apache2
模块:wsgi

状态

按照整个教程并相应地编辑了文件以匹配我的烧瓶项目,问题是即使所有内容都根据文档部署,域或服务器 ip 也会显示任何响应。

代码

文件名:numiCloud.wsgi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/numiCloud/")

from numiCloud import app as application
application.secret_key = 'Add your secret key'

文件名:/var/www/numiCloud/numiCloud/__init__.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def root():
    return "Deployed!"

if __name__=="__main__':
    app.run()

文件名:/etc/apache2/sites-available/numiCloud.conf

<VirtualHost *:80>
     ServerName 183.83.199.118

    WSGIDaemonProcess numiCloud user=devx136 threads=5
    WSGIScriptAlias / /var/www/numiCloud/numicloud.wsgi

    <Directory /var/www/numiCloud/>
        WSGIProcessGroup numiCloud
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

文件名:/var/log/apache2/error.log
link

wsgi 模块已启用,apache 的虚拟主机也已启用,但我仍然没有看到我不希望它返回的文本。无论如何,该网站都会显示 404 not found 错误。

更新:好吧,似乎没有人知道解决方案..

【问题讨论】:

  • 你的烧瓶默认端口是什么,你不能在单个端口上提供超过 1 个。
  • 默认端口是 5000,我可以保证该端口上没有其他任何东西,因为它正在部署到像 apache 这样的 http 服务器,我认为它不使用它的端口。
  • 你应该去掉if __name__ == "__main__": app.run(),因为它会创建一个本地wsgi服务器。查看此文档:flask.pocoo.org/docs/0.10/deploying/mod_wsgi
  • @Leandro 文档说要么使用 if 块,要么将其完全移动到另一个文件中。
  • Apache 日志文件中是否有与此站点相关的内容。此外,如果您发布 Apache 站点文件可能会有所帮助,它可能配置错误。

标签: python apache ubuntu deployment flask


【解决方案1】:

只是希望没有其他人遇到这个问题,但我唯一做的就是将 Web 服务器更改为 nginx 并使用 gunicorn 来配置 python 脚本执行。

对于那些能够让它在 apache 上运行的人,如果我在配置中做错了什么,请报告。

【讨论】:

  • 您最初使用 Apache 的问题可能是因为如果使用基于名称的虚拟主机,那么 ServerName 不应以 IP 地址开头。但是,缺少信息,例如您是否启用了该站点,仅将其粘贴在站点可用中是不够的。
  • 它说我关注了有关此设置的 DO 帖子,并且启用了包括 mod 和站点在内的所有内容。我不能在这里写一篇巨大的博文。
  • 如果 DO 说要将 ServerName 设置为 IP 地址,那么他们给出的建议是错误的。如果系统上定义了多个 VirtualHost,这将不起作用。唯一可行的机会是,如果只有一个 VirtualHost 和 Apache 不知道该怎么做,因为 ServerName 不匹配,会回退到使用第一个 VirtualHost。
  • 我在这里发现了作者与我们分享相同案例的一件事alex.nisnevich.com/blog/2014/10/01/setting_up_flask_on_ec2.html
  • 可以试试sudo apachectl restart
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多