0

我使用 web.py 创建了一个以 json 格式返回结果的 Web 服务。

我在本地盒子上运行它python scriptname.py 8888

但是,我现在想在 linux 机器上运行它。

如何在 linux 机器上将其作为服务运行?

更新

在回答之后,似乎问题不正确。我知道部署过程、框架和网络服务器。也许以下背景故事会有所帮助:

我有一个小的 python 脚本,它将一个文件作为输入,并基于一些逻辑将该文件拆分。我想将此脚本与我已经拥有的 Web 前端(Grails)一起使用。我想从 grails 应用程序中调用它,但不想通过执行命令行来调用它。因此,我将 python 脚本包装为 Web 服务。它接受两个参数并以 json 格式返回拆分文件的数量。这个 web 服务只会被我的grails前端使用,没有别的。

所以,我只是希望运行这个小的 web.py 服务,以便它可以响应我的 grails 前端。

如果我错了,请纠正我,但是在上面之后我还需要 ngix 之类的吗?这个脚本听起来微不足道,但最终我会为它添加更多逻辑,所以我希望它作为一个 Web 服务,可以被 Web 前端使用。

4

2 回答 2

1

一般来说,这有两个部分。

“远程和基于事件”部分:通过网络远程使用的服务需要一定的技能:能够接受(多个)连接、读取请求、处理、回复,至少会说基本的 TCP/HTTP,处理死连接,如果它不仅仅是小型私有 LAN,它还需要强大(想想 DoS),并且可能还执行某种身份验证。

如果您的脚本愿意处理所有这些,那么它就可以打开自己的端口并进行监听了。我不确定 web.py 是否提供所有这些功能。

然后是另一部分,“守护进程”,当您想在无人值守的情况下运行服务器时:在启动时运行,在正确的用户下运行,不阻止您的父级(ssh,init 脚本或其他),没有打开 ttys 但可能在某处登录...

像 nginx 和 Apache 这样的服务器就是为此而构建的,并提供像 mod_python 或 WSGI 这样的接口,因此更简单的应用程序可以尽可能多地放弃上述内容。

所以答案是:是的,你仍然需要 Nginx 或类似的东西,除非:

  • 你可以自己用 Python 实现它,

  • 或者您仅在 localhost 上使用脚本并且愿意承担一些不稳定的风险。

然后可能你可以自己做。

于 2013-10-08T19:43:55.450 回答
0

尝试这个

python scriptname.py 8888 2>/dev/null

它将作为守护进程运行

于 2013-10-12T09:19:45.377 回答