【问题标题】:How to deploy a simple python webserver in a right way?如何以正确的方式部署一个简单的 python 网络服务器?
【发布时间】:2012-09-05 05:06:57
【问题描述】:

我对 python 很陌生。我已经开始学习一些课程,现在,我正在尝试部署一个基于 web.py 的简单网络服务器。谁能帮我解答一下这两个问题:

  1. 我将 web.py 安装在 /home/.../public_html/cgi-bin/lib/python/web 目录中。 public_html - 我的网站开始的目录。那么我应该在顶部的python脚本中写什么?

    我的意思是,如果我只写import web,那么脚本只能在/public_html/cgi-bin/lib/python/ 目录中正常工作。我可以将脚本放在其他目录中,不是吗?在这种情况下我应该在导入部分写什么?

  2. 根据 webpy.org,一个简单的“Hello world”网络应用程序如下所示:

    import web
    
    urls = (
        '/(.*)', 'hello'
    )
    app = web.application(urls, globals())
    
    class hello:        
        def GET(self, name):
            if not name: 
                name = 'World'
            return 'Hello, ' + name + '!'
    
    if __name__ == "__main__":
        app.run()
    

当我运行它时,网络服务器将默认端口设为8080。如何将其更改为标准 80,这将使我的网站可以通过 url http://website.com 访问?

附:在我看来,格式化在stackoverflow上不能正常工作。很抱歉。

【问题讨论】:

  • 你应该阅读 web.py 手册中的this entry。

标签: python web-deployment web.py


【解决方案1】:

关于你的第二个问题:尝试覆盖运行。

import web

class MyApplication(web.application):
    def run(self, port=8080, *middleware):
        func = self.wsgifunc(*middleware)
        return web.httpserver.runsimple(func, ('0.0.0.0', port))

urls = (
   '/(.*)', 'hello'
)

class hello:
    def GET(self, name):
        if not name:
            name = 'World'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
    app = MyApplication(urls, globals())
    app.run(port=8888)

【讨论】:

  • 谢谢!但在那种情况下,我不能在 80 端口上运行它?我必须继续website.com:8888
  • 只需要修改端口:app.run(port=80)
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
相关资源
最近更新 更多