Python 在Openshift中部署烧瓶

Python 在Openshift中部署烧瓶,python,flask,openshift,pymongo,wsgi,Python,Flask,Openshift,Pymongo,Wsgi,以下代码在我的系统的本地主机中正常工作。。。但是在OpenShift上没有做这项工作。。 我的wsgi.py有点问题。。我必须使用环境变量传递用户名和密码,还是需要更改本地主机 以下是目录/存储库的树 myflaskaws ├── requirements.txt ├── setup.py ├── static │   ├── assets │   │   ├── style.css │   └── images │   ├── no.png │   └── yes.png ├─

以下代码在我的系统的本地主机中正常工作。。。但是在OpenShift上没有做这项工作。。 我的wsgi.py有点问题。。我必须使用环境变量传递用户名和密码,还是需要更改本地主机

以下是目录/存储库的树

myflaskaws
├── requirements.txt
├── setup.py
├── static
│   ├── assets
│   │   ├── style.css
│   └── images
│       ├── no.png
│       └── yes.png
├── templates
│   ├── index.html
│   ├── login.html
│   ├── searchlist.html
│   ├── update.html
├── test.py
├── test.pyc
└── wsgi.py`

wsgi.py

#!/usr/bin/python
import os
virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
    pass
from test import app as application
if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('localhost', 8051, application)
    print("Serving at http://localhost:8051/ \n PRESS CTRL+C to Terminate. \n")
    httpd.serve_forever()
    print("Terminated!!")
from flask import Flask
app = Flask(__name__)

test.py

#!/usr/bin/python
import os
virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
    pass
from test import app as application
if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('localhost', 8051, application)
    print("Serving at http://localhost:8051/ \n PRESS CTRL+C to Terminate. \n")
    httpd.serve_forever()
    print("Terminated!!")
from flask import Flask
app = Flask(__name__)

PS:我没有在test.py中使用“ifname='main':”是的,您确实需要使用Openshift的环境变量来设置IP和端口

#!/usr/bin/python
import os
virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
    pass
from test import app as application
if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('localhost', 8051, application)
    print("Serving at http://localhost:8051/ \n PRESS CTRL+C to Terminate. \n")
    httpd.serve_forever()
    print("Terminated!!")
from flask import Flask
app = Flask(__name__)
请尝试添加以下代码,以根据您是在操作系统上还是在本地主机上设置正确的IP和端口

Import os

if 'OPENSHIFT_APP_NAME' in os.environ:              #are we on OPENSHIFT?
    ip = os.environ['OPENSHIFT_PYTHON_IP']
    port = int(os.environ['OPENSHIFT_PYTHON_PORT'])
else:
    ip = '0.0.0.0'                            #localhost
    port = 8051

httpd = make_server(ip, port, application)

是的,您确实需要使用Openshift的环境变量来设置IP和端口

请尝试添加以下代码,以根据您是在操作系统上还是在本地主机上设置正确的IP和端口

Import os

if 'OPENSHIFT_APP_NAME' in os.environ:              #are we on OPENSHIFT?
    ip = os.environ['OPENSHIFT_PYTHON_IP']
    port = int(os.environ['OPENSHIFT_PYTHON_PORT'])
else:
    ip = '0.0.0.0'                            #localhost
    port = 8051

httpd = make_server(ip, port, application)

解释它是如何工作的,你看到了什么错误,在哪里。如果
myflaskaws
是您的回购协议的子目录,那么这将不起作用。OpenShift 2希望该目录中的所有内容都位于repo的根目录。此外,对于OpenShift 2,静态文件需要位于相对于repo root的目录
wsgi/static
,而不是
static
。@GrahamDumpleton:myflaskaws是应用程序名。。你的意思是我需要将静态文件移动到wsgi(新文件夹?)。。。wsgi文件夹中还有什么?您还没有解释它是如何工作的。您在哪里看到错误,浏览器还是日志?错误是什么?或者问题只是css和其他静态不起作用?至于
static
location,您需要的是
mkdir wsgi;mv静态wsgi/
。请尝试解释问题的第一个方面。@GrahamDumpleton错误说“500内部服务器错误”。。。它在我的系统上运行得很好……如果您看到来自Apache的一个通用500错误,并且Apache记录的错误中没有任何内容(您已经查看了吗?),那么失败的将是您的Flask应用程序代码。尝试暂时启用Flask debug,以便在浏览器中显示错误的详细信息,或将Flask设置为将其错误的详细信息正确记录到标准错误中,以便在Apache错误日志文件中捕获。解释它是如何工作的、您看到的错误以及在何处。如果
myflaskaws
是您的回购协议的子目录,那么这将不起作用。OpenShift 2希望该目录中的所有内容都位于repo的根目录。此外,对于OpenShift 2,静态文件需要位于相对于repo root的目录
wsgi/static
,而不是
static
。@GrahamDumpleton:myflaskaws是应用程序名。。你的意思是我需要将静态文件移动到wsgi(新文件夹?)。。。wsgi文件夹中还有什么?您还没有解释它是如何工作的。您在哪里看到错误,浏览器还是日志?错误是什么?或者问题只是css和其他静态不起作用?至于
static
location,您需要的是
mkdir wsgi;mv静态wsgi/
。请尝试解释问题的第一个方面。@GrahamDumpleton错误说“500内部服务器错误”。。。它在我的系统上运行得很好……如果您看到来自Apache的一个通用500错误,并且Apache记录的错误中没有任何内容(您已经查看了吗?),那么失败的将是您的Flask应用程序代码。尝试临时启用Flask debug,以便在浏览器中显示错误的详细信息,或者设置Flask,将其错误的详细信息正确记录到标准错误中,以便在Apache错误日志文件中捕获。只有在不使用内置Apache/mod_wsgi且您在
app.py
文件中提供自己的可运行web服务器/应用程序时,该端口才相关。他们没有提供一个
app.py
文件,但有一个
wsgi.py
文件,这是Apache/mod_wsgi将使用的文件。问题可能在它所在的位置,但由于还没有解释错误,所以很难说。只有在不使用内置Apache/mod_wsgi并且您在
app.py
文件中提供自己的可运行web服务器/应用程序时,端口才相关。他们没有提供一个
app.py
文件,但有一个
wsgi.py
文件,这是Apache/mod_wsgi将使用的文件。问题可能出在哪里,但由于还没有解释错误,很难说。