将Python作为CGI脚本运行

2020年12月31日19:40:21 发表评论 56 次浏览

介绍

有多种使用Python创建Web应用程序或生成Web内容的方法。在本教程中, 我们将介绍在浏览器中查看Python脚本输出的最简单, 最基本的形式。

要求

  • 将Apache配置为允许CGI脚本的云服务器。

有关在Cloud Server上启用CGI脚本的分步说明, 请参阅我们的文章在Apache上启用CGI脚本.

总览

除了将Python脚本作为CGI脚本运行之外, 还有几种更好, 更强大的替代方法。根据你的需求, 我们建议你使用Apache的mod_wsgi或安装Python网络框架(如CherryPy)。

相关文章:

  • 使用mod_wsgi在CentOS 7上将Python作为Web应用程序运行
  • 安装CherryPy Python Web框架

但是, 某些用户可能不希望麻烦来设置和管理这些替代方案。在某些情况下, 将Python作为CGI脚本运行可能是一个不错的选择:

  • 该脚本小巧轻便。
  • 你刚刚开始学习Python, 并想从一个简单的解决方案开始。
  • 你只需要在浏览器中进行最基本的测试即可。

将Python作为CGI脚本运行

验证服务器配置为允许CGI脚本后, 可以将Python脚本上载到指定的cgi-bin目录。

  • CentOS 7:默认的CGI目录是var / www / cgi-bin /
  • Ubuntu 16.04:默认的CGI目录是/ usr / lib / cgi-bin

有关此过程的更多信息, 请参见我们的文章在Apache上启用CGI脚本.

授予文件可执行权限:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi
  • 现在, 你可以使用域名或IP地址在浏览器中查看脚本:
http://example.com/cgi-bin/example.cgi
http://192.168.0.1/cgi-bin/example.cgi

文件扩展名

要将Python脚本作为CGI脚本运行, 你可以:

  • 为脚本命名.cgi文件扩展名 (example.cgi)。
  • 配置Apache以识别并允许.py文件扩展名作为CGI脚本。

要添加.py配置到Apache, 编辑Apache配置文件。在Ubuntu 16.04上, 默认情况下已设置。你无需进行任何更改即可运行.py文件作为CGI脚本。

在CentOS 7上, 打开httpd.conf用于编辑的文件:

sudo nano /etc/httpd/conf/httpd.conf

查找本节:

#

#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>

加.py到AddHandler组态:

#

#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .py
    Require all granted
</Directory>

保存并退出文件。然后重新启动Apache, 以使更改生效:

sudo systemctl restart httpd

故障排除

为了进行测试, 我们建议你使用以下示例脚本:

#!/usr/bin/env python
print "Content-Type: text/html"
print
print '<h1>Hello world.</h1>'

另存为example.py并将其上传到你服务器的指定位置吉宾测试目录。然后在浏览器中使用域名或IP地址查看脚本:

http://example.com/cgi-bin/example.py
http://192.168.0.1/cgi-bin/example.py

你将看到" Hello world"。

404错误:这意味着在你指定的URL上找不到该文件。确保脚本在正确的目录中。

  • CentOS 7:默认的CGI目录是var / www / cgi-bin /
  • Ubuntu 16.04:默认的CGI目录是/ usr / lib / cgi-bin

服务器500错误:这通常表明文件的权限是错误的。确保脚本具有可执行文件(chmod 755)权限:

jdoe@localhost:/etc/apache2# ll /usr/lib/cgi-bin/test.cgi
rwxr-xr-x 1 jdoe jdoe 85 Jul 22 16:53 /usr/lib/cgi-bin/test.cgi*

该文件的正确权限是rwxr-xr-x。如果不是, 请授予文件可执行权限:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: