我正在尝试在dotcloud上部署我的web.py应用程序,但无法弄清楚如何操作。
我完成了本教程:http://docs.dotcloud.com/static/tutorials/firststeps/
然后我看了http://docs.dotcloud.com/static/components/python/ ......
python服务可以托管任何python 与Web应用程序兼容的 WSGI标准。
包括所有现代Python网站 框架:Django,Pylons,web.py, web2py等。
...
python与Nginx + uWSGI一起运行, 由supervisord管理。静态资产 由Nginx直接提供 更好的表现。
...
DotCloud依靠完善的工具和惯例来构建您的应用。 调整任何应用程序以在DotCloud上运行应该是微不足道的。
...
部署应用时,DotCloud 查找名为wsgi.py的文件。使 一定要在根目录下创建该文件 您的应用程序目录。
谷歌搜索“web.py wsgi”导致http://webpy.org/install有一个非常令人眼花缭乱的指令数组。我在页面上尝试了一些建议,但无法正常工作。
最有希望的前景似乎是创建一个名为wsgi.py的文件,如下所示:
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()
我还在它旁边创建了一个空的__init__.py
。
然后我做了:
dotcloud create jca_hello.py
dotcloud deploy -t python jca_hello.www
dotcloud push jca_hello.www .
但现在当我去http://www.jca_hello.dotcloud.com/时,我看到的只有:
uWSGI错误
找不到wsgi应用程序
有什么想法吗?
答案 0 :(得分:12)
我是web.py的用户,顺便说一下我在DotCloud工作: - )
我们使用uWSGI来运行您的WSGI应用程序。关键是uWSGI正在寻找一个名为“application”的变量。
这是我通常做的事情:
app = web.application(urls, globals())
if __name__ == '__main__':
app.run()
else:
web.config.debug = False
application = app.wsgifunc()
因此,您可以继续在本地计算机上使用您的应用程序:
$ python ./wsgi.py
在禁用调试模式的情况下将其推向生产(当然是在DotCloud上;)。
这是你更正的wsgi.py文件:
import web
urls = (
'/(.*)', 'Hello'
)
class Hello(object):
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
app = web.application(urls, globals())
if __name__ == '__main__':
app.run()
else:
web.config.debug = False
application = app.wsgifunc()
谨防正确使用你的wsgi.py。
还要确保您的Approot中包含名为“requirements.txt”的文件包含:
web.py
与此同时,如果您的部署有任何问题,请随时联系DotCloud支持。