Har*_*rsh 6 python ubuntu cgi apache2 server-side-scripting
我是新手,所以我看了一些教程。我有一个 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
请告诉我如何执行以及这里发生了什么?提前致谢。
ano*_*knr 13
要从头开始在Ubuntu上的apache2 服务器上编写python cgi脚本(在 Ubuntu 20.04 上测试),请按照以下步骤操作(预计 python 已安装并完美运行)。
安装apache2服务器。
sudo apt install apache2
Run Code Online (Sandbox Code Playgroud)
启用CGI模块。
sudo a2enmod cgi
Run Code Online (Sandbox Code Playgroud)
这里我们设置
/var/www/cgi-bin/为cgi-bin目录。如果您想要不同的目录,请适当更改文件。
打开 Apache 服务器配置文件 [ /etc/apache2/apache2.conf],
sudo gedit /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)
并将以下行添加到文件末尾。
######### Adding capaility to run CGI-scripts #################
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py
Run Code Online (Sandbox Code Playgroud)
打开文件/etc/apache2/conf-available/serve-cgi-bin.conf,
sudo gedit /etc/apache2/conf-available/serve-cgi-bin.conf
Run Code Online (Sandbox Code Playgroud)
更改线路:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
到 :
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin/">
AllowOverride None
Options +ExecCGI
</Directory>
Run Code Online (Sandbox Code Playgroud)
现在重新启动apache2 服务器,
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
现在创建 python 脚本,例如,在目录中的
first.py/var/www/cgi-bin/,
sudo gedit /var/www/cgi-bin/first.py
Run Code Online (Sandbox Code Playgroud)
并添加以下示例代码:
#!/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>")
Run Code Online (Sandbox Code Playgroud)
并通过以下方式向first.py授予可执行权限:
sudo chmod +x /var/www/cgi-bin/first.py
Run Code Online (Sandbox Code Playgroud)
现在curl可以工作了。
:~$ curl http://localhost/cgi-bin/first.py
<H1> Hello, From python server :) </H1>
Run Code Online (Sandbox Code Playgroud)
或者打开浏览器并浏览http://localhost/cgi-bin/first.py。这应该可以工作并且将显示网页显示“ Hello, From python server :) ”。
希望它有帮助......快乐编码:)
可能是你在 Python 3 中运行的问题,而你的代码是用 Python 2 编写的,将标题更改为 python2:
#!/usr/bin/python
print "Content-type: text/html\n"
print "Hello, world!"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19147 次 |
| 最近记录: |