【问题标题】:Running a .py file on LAMP (CentOS) server - from a PHP developer's perspective在 LAMP (CentOS) 服务器上运行 .py 文件 - 从 PHP 开发人员的角度来看
【发布时间】:2013-11-30 14:58:13
【问题描述】:

我是第一次尝试 Python 的 LAMP 开发人员。我可以掌握语法,但我不知道如何在服务器上运行它!我已经尝试了以下

  • filename.py 上传到常规的网络/公共目录。 chmod 777, 711, 733, 773...(执行的变体)
  • filename.py 放入cgi-bin,chmod 同上..

输入 example.com/filename.py 只是加载一个文本文件 - 似乎没有任何东西被编译/解析/等等!

(我相信 python 已经安装了,因为 我服务器上的whereis python 在其他几个目录中显示/usr/bin/python

一个简单的问题就这么多了——如何在 CentOS 服务器上运行 python 文件?

【问题讨论】:

  • 这应该是服务器故障。但是,与此同时,您知道您的代码是 cgi 脚本还是使用mod_python?您可能想发布相同的代码。如果是cgi,可能需要使用AddHandlercgi-script .py。如果是 CGI,还要确保你有一个 shebang
  • 代码还没有编译(还)。只是一个用扩展名 .py 重命名的文本文件脚本......我有一个 shebang 作为第一行。如何检查脚本是否使用 mod_python?
  • @ina 首先,Python 解释器可能会缓存您的文件,但不会编译它们。其次,modpython.org 是一个 Apache HTTP Server 扩展。您按照哪些说明创建文件?
  • mod_python 这些天有点死了
  • 如果它被缓存了......这是否意味着它最终会被编译?真的有点迷失 - 在将它部署到服务器之前我必须离线编译它吗?我想我认为这就像 perl,除了语法差异之外,添加 shebang、chmod 和 presto!

标签: python centos


【解决方案1】:

这是对 PHP 的一次重大心理转变。 Python 文件不像 .php 文件[1] 那样简单地解释。我发现启动和运行 Python 的最简单方法是 Bottle 框架。

我建议您花一点时间阅读http://docs.python.org/howto/webservers.html。信息量很大。

[1]:注意:有 Python Server Pages 这样的东西,但没有被广泛使用。

【讨论】:

  • 换句话说,你不能通过输入地址来加载一个python文件,比如example.com/filename.py?
  • 并非如此,像在 PHP 世界中那样混合 Python 代码和 HTML 并不常见。如果您有兴趣了解事物的工作原理,web2py 是最容易学习的全功能 Python Web 编程框架之一。
  • 好吧,我打算使用 php 来格式化数据以进行显示,但是在需要时让 php 调用 python 文件...手动测试 python 文件是否有效,我认为最简单的方法可能是只需在浏览器上加载 URL - 但我想如果不安装 Bottle (?) 将无法工作......无论如何 php 文件如何调用 python 文件?
  • 哦,这是一个与我最初想的不同的问题。如果您希望 PHP 解释器调用 Python 解释器,我建议您进行搜索或提出新问题。在不知道细节的情况下,可能有两种方法可以做到这一点。 1) 请求操作系统执行,2) 请求 Web 服务器执行。 1) 将 python 的结果放到 PHP 可以找到它的某个地方 (file/stdout) 2) 引用 .py 文件的 URL,并配置网络服务器以调用 Python 解释器
【解决方案2】:

您可以使用 cgi,但它不会有很好的性能,因为它会为每个请求启动一个新进程。

更有效的替代方法是使用 fastcgi 或 wsgi

第三种选择是运行一个迷你 Python 网络服务器并使用重写规则代理来自 apache 的请求

【讨论】:

  • 另一个 n00b 问题 - 是 miniPython mod_python 吗?
  • @ina,mini 指的是像瓶子或 webpy 这样的东西,而不是像 django 或 zope 这样的大型框架
【解决方案3】:

我同意其他 cmets 的观点,即可能有更有效的方法来运行 Python 脚本。如果您只想通过将 Python 脚本拖放到 cgi-bin 目录中来运行 Python 脚本,可以尝试以下方法。您首先要找到您的 httpd.conf 文件。一种方法是:

locate httpd.conf

对于 CentOS,您的 httpd.conf 文件可能位于 /etc/httpd/conf/httpd.conf。编辑文件并确保 Python 文件被识别,特别是如果您将在 ScriptedAliased 目录之外使用它们:

AddHandler cgi-script .cgi .py

重新启动您的 Apache 网络服务器:

apachectl restart

在 /var/www/cgi-bin 目录(CentOS 默认)中创建以下 test.py 文件:

#! /usr/bin/python
print "Content-type: text/html"
print ""
print "Hello, World!"

您需要使用以下命令使文件可执行:

chmod 775 test.py

这就是您需要做的所有事情。您现在可以访问 http://{your-domain}/cgi-bin/test.py 和生成的“Hello, World!”应该会出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多