[英]How do I run python cgi script on apache2 server on Ubuntu 16.04?
我是新手,所以我看到了一些教程。 我有一个 python 脚本作为first.py
#:/usr/bin/python3 print "Content-type, text/html\n" print "Hello, world!"
我的电脑上有多个版本的 python。 我不知道我的 cgi 启用目录所以我将这段代码粘贴在三个地方
/usr/lib/cgi-bin/first.py
/usr/lib/cups/cgi-bin/first.py
/var/www/html/first.py
现在当我在终端中运行这段代码时它工作正常但是当我输入
curl http://localhost/first.py
它只吐出简单的文本并且不执行。
我已经给了 first.py 的所有权限
我已经通过命令启用并启动了服务器
a2enmod cgi systemctl restart apache2
请告诉我如何执行以及这里发生了什么? 提前致谢。
从头开始在Ubuntu上的apache2 服务器上编写python cgi脚本(在 Ubuntu 20.04上测试),请按照以下步骤操作(预计 python 已安装并运行良好)。
安装apache2服务器。
sudo apt install apache2
启用CGI模块。
sudo a2enmod cgi
这里我们将
/var/www/cgi-bin/
为 cgi-bin 目录。 如果您想要不同的目录,请适当更改文件。
通过以下方式打开 Apache 服务器配置文件 [ /etc/apache2/apache2.conf
]
sudo gedit /etc/apache2/apache2.conf
并在文件末尾添加以下行。
######### Adding capaility to run CGI-scripts ################# ServerName localhost ScriptAlias /cgi-bin/ /var/www/cgi-bin/ Options +ExecCGI AddHandler cgi-script .cgi .pl .py
通过以下方式打开文件/etc/apache2/conf-available/serve-cgi-bin.conf
,
sudo gedit /etc/apache2/conf-available/serve-cgi-bin.conf
更改线路:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted </Directory>
至:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin/"> AllowOverride None Options +ExecCGI </Directory>
现在重新启动apache2服务器,
sudo service apache2 restart
现在创建python脚本说, first.py在目录/var/www/cgi-bin/
,
sudo gedit /var/www/cgi-bin/first.py
并添加以下示例代码:
#!/usr/bin/env python import cgitb cgitb.enable() print("Content-Type: text/html;charset=utf-8") print ("Content-type:text/html\\r\\n") print("<H1> Hello, From python server :) </H1>")
并通过以下方式授予first.py可执行权限,
sudo chmod +x /var/www/cgi-bin/first.py
现在curl
将起作用。
:~$ curl http://localhost/cgi-bin/first.py
<H1> Hello, From python server :) </H1>
或者打开浏览器浏览http://localhost/cgi-bin/first.py 。 这应该可以工作,并将显示显示“你好,来自 python 服务器:) ”的网页。
希望它有帮助...快乐编码:)
这些行需要在您的 apache2 站点配置文件中(例如/etc/apache2/sites-available/default-ssl.conf
如果您的网站使用 HTTPS):
<Directory /var/www/yoursite/yourdir/>
Options +ExecCGI
PassEnv LANG
AddHandler cgi-script .py
</Directory>
将它们添加到您想要的目录并重新启动 apache2。 您可能还需要添加
AddHandler python-program .py
如果尚未存在,则添加到您的 httpd.conf。
关于 python 脚本和 apache2 的更详细的讨论可以在这里找到: 在 Apache2 中执行 Python 脚本。
可能是您在 Python 3 中运行并且您的代码是用 Python 2 编写的问题将标题更改为 python2:
#!/usr/bin/python
print "Content-type: text/html\n"
print "Hello, world!"
对于概念验证,请使用此 python 脚本; 无需输入,也无需输入 output。
#!/usr/bin/env python3
import cgitb
cgitb.enable()
outputfile = open("javascriptPython.out", "a")
outputfile.write("Hello from Python\n\n")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.