作为ubuntu系统的新手,最近在配置系统环境真的头发都掉光了。

由于需要用到python在服务器上的cgi功能,但linux系统的配置也实在是太麻烦了(相对windows),在网上找了很多个教学说明,但不是找不到文件,就是服务器500错误,真的是快崩溃了。

真的是每个人的情况都会有不同,下面的是我最后的解决方法:

  1. 安装apache2
    首先,我的apache2是采用终端命令行安装
    sudo apt-get inatall apache2

  2. 修改apache的serve-cgi-bin.conf文件

文件目录:/etc/apache2/conf-enabled/serve-cgi-bin.conf

	<IfDefine ENABLE_USR_LIB_CGI_BIN>
		ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
		<Directory "/usr/lib/cgi-bin">
			AllowOverride None
			Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
			Require all granted
		</Directory>
	</IfDefine>

改为

	<IfDefine ENABLE_USR_LIB_CGI_BIN>
		ScriptAlias /cgi-bin/ /var/www/pytest/cgi-bin/
		<Directory "/var/www/pytest/cgi-bin">
			AllowOverride All
			Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
			Require all granted
			AddHandler cgi-script .cgi .pl .py .sh
		</Directory>
	</IfDefine>

这里有几个地方需要修改,我之前就
ScriptAlias /cgi-bin/ /var/www/pytest/cgi-bin/
<Directory “/var/www/pytest/cgi-bin”>
AllowOverride All           //我之前没留意到这个设置,这个默认是None的
AddHandler cgi-script .cgi .pl .py .sh   //新增

  1. 设置cgi.load的软链接
    在终端运行:
    sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load

  2. 设置完成,测试程序

#!/usr/bin/env python3
	
print('Content-type: text/html')
print()	#这句非常重要,没有空行将会出现500错误,我之前就漏了
print('hello, this is python')

测试成功

在这里插入图片描述


版权声明:本文为niklhy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/niklhy/article/details/109185005