【问题标题】:run python3 script on linux apache 2.4在 linux apache 2.4 上运行 python3 脚本
【发布时间】:2017-05-22 23:05:56
【问题描述】:

我到处寻找并尝试了许多建议的解决方案,但仍然没有所需的结果:从我的灯服务器运行 python 文件。我似乎无法整合所有的拼图......使故事复杂化的是,许多解决方案要么使用旧的 apache 版本(executing-a-python-script-in-apache2 没有帮助;但是大于 3 的 python 版本也很复杂。

规格:

  • linux Kubuntu、apache 2.4、python 3.5
  • apache 正在运行
  • 网站文件位于 root/var/www/html/ 中,我对这个文件夹有 sudo 访问权限。
  • apache2 cgi 模块已启用:a2enmod cgi
  • python 3.5 路径是 usr/bin/env python3
  • python 脚本,最简单的脚本,已成为可执行文件

    #!/usr/bin/env python3
    
    print ("Content-type: text/html\n")
    print ("Hello world!")
    

让我们把它归结为最简单的情况:我想让 apache 解释 spark.py 脚本并输出 html:“Hello world!”

问题:

  • 脚本文件是否正确?
  • 我需要更改哪些配置文件,我需要在这些配置文件中添加什么?

我知道出于安全原因,您的根目录中不应有 apache 运行脚本。

【问题讨论】:

  • 看看mod_wsgi,它比普通的旧CGI要好得多。主要的 Ubuntu 档案有一个 libapache2-mod-wsgi-py3 包,我相信 Kubuntu 也有一个。
  • 我正在研究 wsgi 模块,但这似乎更难实现。也许您有一个非常基本的简单示例?
  • 我已经把它用谷歌搜索了,相信我,因此我的回复延迟了 :) 不要忘记 youtube,也很有帮助,但没有一个例子能真正解释 a-to- z,wsgi 脚本在哪里,apache 服务器设置是什么,你的实际应用程序在哪里?谷歌“基本 python wsgi 示例”显示了 155,000 个结果,我只是检查了一下,实际上我已经访问了大约 60 个链接,但仍然无法正常工作:(无论如何,感谢您的能量,我将发布一个新问题...

标签: python linux apache cgi


【解决方案1】:

modwsgi 的 python 文档似乎符合您的要求。以下网页有一个非常简单的示例和 python3-apache2 设置的必要配置。

http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-guide.html

您需要安装 mod_wsgi 才能使配置生效。注意 apt 和 pip3 中使用的不同的“_”下划线和“-”破折号。

$ sudo apt install apache2-dev libapache2-mod-wsgi-py3
$ sudo pip3 install mod_wsgi

libapache2-mod-wsgi-py3 和 mod_wsgi 似乎是一回事。但是,我的测试部署仅在安装 mod_wsgi 后才有效。可能是配置问题。以下是我在 Ubuntu 16.04.2 上测试过的配置详情。

应用文件/home/user/wsgi_sample/hello.wsgi:

def application(environ, start_response):
    status = '200 OK'
    output = b'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

Apache2 配置 /etc/apache2/sites-available/000-test.conf

<VirtualHost *:80>
  ServerName testmachine
  <Directory /home/user/wsgi_sample>
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
  WSGIScriptAlias /hello /home/user/wsgi_sample/hello.wsgi
</VirtualHost>

在 apache2 中启用该站点。

sudo a2ensite 000-test.conf

打开浏览器到testmachine/hello

wsgi 也可以使用passenger 部署在Apache2 上。它需要更长的配置。如果需要passenger/python3,请提出一个新问题。

【讨论】:

  • 欢迎来到 Stack Overflow。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
【解决方案2】:

是的,您的最低代码似乎是正确的。 Apache 配置信息在这里得到解答 https://stackoverflow.com/a/57531411/4084546

【讨论】:

    猜你喜欢
    • 2019-11-17
    • 2015-02-18
    • 2020-05-10
    • 2017-04-02
    • 1970-01-01
    • 2017-03-25
    • 2018-10-14
    • 2015-10-17
    • 2020-04-01
    相关资源
    最近更新 更多