作为ubuntu系统的新手,最近在配置系统环境真的头发都掉光了。
由于需要用到python在服务器上的cgi功能,但linux系统的配置也实在是太麻烦了(相对windows),在网上找了很多个教学说明,但不是找不到文件,就是服务器500错误,真的是快崩溃了。
真的是每个人的情况都会有不同,下面的是我最后的解决方法:
安装apache2 首先,我的apache2是采用终端命令行安装 sudo apt-get inatall apache2
修改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 //新增
设置cgi.load的软链接 在终端运行: sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
设置完成,测试程序
#!/usr/bin/env python3 print('Content-type: text/html') print() #这句非常重要,没有空行将会出现500错误,我之前就漏了 print('hello, this is python')测试成功