【发布时间】:2020-04-07 20:58:44
【问题描述】:
我有一个非常简单的test.py,位于/var/www/html/master.com/,我正在尝试在 Ubuntu 18.1 上的 Apache2 中运行
我的 Python 代码:
#!/usr/bin/env python
print("Content-type: text/html\n\n")
print("<h1>Hello</h1>")
到目前为止我已经运行了什么:
运行a2enmod cgi启用cgi:
ISimon@simon-EasyNote-TK85:~$ a2enmod cgi
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Module cgid already enabled
在/etc/apache2/conf-available/ 创建了文件cgi-enabled.conf,其中包含以下内容:
# create new
# process .cgi and .py as CGI scripts
<Directory "/var/www/html/master.com">
Options + ExecCGI
AddHandler cgi-script .cgi .py
</Directory>
用systemctl restart apache2重新启动Apache2
然后我去了http://localhost/test.py,它提供下载文件。它应该显示为纯 html。
如何正确配置我的服务器?
【问题讨论】:
-
通常 CGI 脚本只在文件夹
cgi-bin中执行。也许您应该将代码放在子文件夹cgi-bin并运行localhost/cgi-bin/test.py -
可能脚本必须设置为可执行文件 -
chmod a+x test.py。它应该在第一行有shebang(#!) 以告知哪个程序应该运行此代码 - 即#!/usr/bin/env python。 -
@furas 我有 shebang 行,我尝试了命令
chmod a+x test.py遗憾的是它完全一样 -
请始终添加有问题的代码、数据和错误消息,而不是在评论中 - 它们将更具可读性,所有人都会看到。
-
我检查了 apache 文档,它将您的配置显示为在主文件夹中运行它的方法。坦率地说,我不使用
CGI,而是使用像 Flask、Django 这样的 Web 框架,因为它更容易编写代码——它们有很多有用的元素。而且代码组织得更好。
标签: python apache server apache2 cgi