【问题标题】:launch tornado app on port 80 on remote server [duplicate]在远程服务器上的端口 80 上启动龙卷风应用程序 [重复]
【发布时间】:2015-07-23 17:20:35
【问题描述】:

我有一个封装在 tornado 服务器中的烧瓶应用程序,当我遇到此错误时,我正试图在远程服务器上运行应用程序:

Traceback (most recent call last):
  File "run.py", line 7, in <module>
    server.listen(80)
  File "/home/ec2-user/gatekeeper/local/lib/python2.7/site-packages/tornado/tcpserver.py", line 126, in listen
    sockets = bind_sockets(port, address=address)
  File "/home/ec2-user/gatekeeper/local/lib/python2.7/site-packages/tornado/netutil.py", line 187, in bind_sockets
    sock.bind(sockaddr)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied

所以我尝试使用 sudo 并得到了这个:

Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from tornado.wsgi import WSGIContainer
ImportError: No module named tornado.wsgi

所以我想知道我是否必须以 root 身份安装 tornado,这反过来意味着我的 virtualenv 实际上毫无用处。

【问题讨论】:

  • 我强烈建议不要监听 80 端口(因为它可能会导致一些安全问题)。在另一个端口上监听并使用反向代理怎么样。
  • 现在使用 nginx,谢谢

标签: python amazon-ec2 flask virtualenv tornado


【解决方案1】:

您究竟是如何启动应用程序并与 virtualenv 交互的? Sudo 删除了大多数环境变量,这将有效地停用任何“激活的”virtualenv。如果您使用的是source $ENV/bin/activate,则需要在sudo 之后使用。或者你可以通过运行 virtualenv 的 python 可执行文件来避免使用activate:sudo $ENV/bin/python run.py。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 2014-08-02
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多