奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

有需要服务器方面的需求和咨询,可以联系博主QQ 7271895(收费)

我擦!这两天可把我累的够呛,心累的那种,用python写了个API想放在Apache服务器上面利用CGI使用,但是整了两个晚上,经过无数次尝试和失败,最终终于搞定了,最终豁然开朗的感觉,才觉得这特么真是非常的坑。

先简单介绍一下Apache的CGI

Apache都不知道是啥的大兄弟就自己去百度吧。。CGI你可以理解为它的一个接口,利用CGI你可以实现各种脚本的运行,只要你的服务器可以运行的脚本都可以,通过服务器运行脚本,然后将允许结果最终以HTML的形式显示给浏览器。Apache根目录如下:

  • bin:Apache服务器软件所在地
  • cgi-bi:保存自己写的CGI脚本程序
  • conf:保存服务器设置的信息
  • error:网站发送错误的处理
  • htdcocs:保存HTML程序
  • icons:保存开发Apache程序用的图标
  • include:保存开发web程序用到的一些头文件
  • lib:保存的是开发web程序用到的一些库
  • logs:日志
  • manual:Apache服务器语言的设置
  • modlules:保存一些动态链接库

一般我们常用的文件夹就是上面标红的那两个。、

开始配置:

声明一下,一般Apache的默认配置CGI都是开启的,可以在服务器的Apache的配置文件中看到配置情况,这里以Ubuntu14.4的Apache2为例看一下。
先进入apache2的主目录并查看文件夹,默认的apache2的默认目录在/etc/apache2

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

可以看到在这个目录下面有很多的文件夹和配置文件,Apache2其实是将各个模块的配置分文件夹保存了,这个CGI的配置文件在上图箭头指向的那个文件夹内,现在进入这个文件夹

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

这个serve-cgi-bin.conf文件就是我们要找的文件,使用vim编辑器打开这个文件

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

上图第一个箭头指向配置

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

这句话是用来设置别名的,就是说你在使用url访问的时候,当遇到/cgi-bin/这个目录的时候服务器会自动去/user/lib/cgi-bin/目录下面查找要访问的文件,这句话有时候可以不写,但前提是cgi的文件目录要在web的根目录下第二个箭头指向的配置

<Directory "/usr/lib/cgi-bin">
      AllowOverride None     #显示目录
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch    #可以运行的模块
      Require all granted   #允许所有的请求
</Directory>

注意上面标红的位置,/usr/lib/cgi-bin/要和上面的别名一致,这个地方是个可以改动的,你可以自己选定别的文件夹,当作CGI的根目录,只要设置好目录可以访问就好,然后+ExecCGI要有,这个是加载CGI模块的选项,没有是不行的。可以看到,我们并没有声明可以运行那些脚本,所以Apache会全面默认运行。只要在脚本中指定执行程序的路径即可。下面我们会讲到。好了,文件的配置完并保存之后重启服务器,然后就可以去测试一下了。

Apache2的重启命令:

sudo /etc/init.d/apache2  restart

Apche CGI 文件测试

根据上面配置的别名,我们在浏览器访问一下试试

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

可以看到提示的是403然后说没有权限访问这个目录而不是404,说明找到了这个文件,只不过我们没有访问脚本文件,又不允许列出目录,所以提示403,下面我们编写一个CGI脚本测试一下,这里我使用Python来测试,代码如下:

#!/usr/bin/python           #CGI运行程序的目录
# -*- coding: UTF-8 -*-

print "Content-type:text/html"
print                               # 空行,告诉服务器结束头部,CGI必须的部分
print '<html>'
print '<head>'
print '<meta charset="utf-8">'
print '<title>Hello Word - 我的第一个 CGI 程序!</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>'
print '</body>'
print '</html>'

上面的两个人注释的部分必须注意,规则不可以变。

写在python文件里面命令为t2.py,然后对文件进行权限的设置,让它具有可执行权限,注意,这一块很重要,要不然会提示500错误的

chmod  777 /usr/lib/t2.py

然后再浏览器中访问测试

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

仍然是500错误,其实这个才是我这篇博文的重点,这个坑我觉得肯定是坑死过很多人,这个流程明明没有问题,怎么还会出现问题呢?经过我多次的尝试,多次的失败,多次的googl,多次的baidu,就特么差放弃了,我特么成功了。我觉得我的配置没有问题,那么问题肯定出在CGI文件上面,通过测试发现,有两个地方必须要注意:

注意1

# -*- coding: UTF-8 -*-
上面这句话是用来声明utf8编码的,若文件中存有中文必须声明utf8编码格式,但是在这,这句话似乎不管用了,必须使用’

#coding:utf8
用上面的生命替换以前的代码之后,重新访问浏览器,结果仍然是500。重点在下面

注意2

在linux中新建的文件和在windows上面新建的文件是不同的,在CGI中运行的文件必须是unix文件编码格式,所以会出现500错误的!对于这个问题我测试了很久,虽然说vim编辑器有将文件编码格式转换为unix命令:set ff = unix ,但是结果还是不行,依然是500错误!但是,在linux上面使用vim新建的文件却可以正常运行。具体这个问题到底是怎么回事我也没有具体搞清楚,但是最不会出错的方法就是在linxu上面直接新建和编辑文件,或者在linux上面新建文件之后拿到本地用IDE编辑,注意!最好不要使用记事本,在测试中发现有时候记事本的BOM头也会影响程序执行。

既然知道了问题的原因,那么我们在linux上面使用vim新建文件并将代码复制过去,然后运行测试。

奇怪的Apache配置CGI&解决提示500错误-Linux运维-学派吧

可以看到这样就成功了。两个晚上,闹心的,就是解决不了的问题,坑太多了,最终还好解决了,不然就要骂娘了。。!

如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/server/606.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2018年9月30日 下午2:01
下一篇 2018年9月30日 下午2:01

相关推荐

  • win2008 WEB环境配置之MYSQL5.6.22安装版安装配置方法教程-学派吧

    这篇文章主要介绍了win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法,需要的朋友可以参考下 版本选择 因为MySql的版本越来越多,而作为中小网站者可能没有足够的经济去购买商业版本,所以一般选择免费版,而且功能也是足够使用的。 有钱任性就下载企业版,哈哈。 目前使用最多的版本是mysql installer community,…

    服务器运维 2018年12月10日
    3.1K00
  • Linux服务器下MySQL自动备份脚本的使用方法教程-学派吧-

    问题说明 如何对 ECS Linux 系统中部署的 MySQL 进行自动备份。 处理办法 在 ECS Linux 系统中搭建了 MySQL 服务,用户可以使用如下脚本实现 MySQL 的定期自动备份。 使用方法如下: 1. 将以下脚本拷贝到本地,上传到服务器上,名称叫 “autoback.sh” #!/bin/bash #——————…

    数据库运维 2019年1月1日
    2.4K00
  • 学派吧-Linux/centos中SSH客户端断开后保持进程继续运行配置方法的具体教程

    在云服务器 ECS Linux 系统中,通常我们在执行一些运行时间比较长的任务时,必须等待执行完毕才能断开 SSH 连接或关闭客户端软件,否则可能会导致执行中断。本文介绍几种保障程序在用户退出登录后持续运行的方法。 使用管理终端执行 通过 管理终端 会登录服务器的本地会话(console)口,在该终端执行的程序不会受到 SSH 登录用户退出的影响。具体操作方…

    服务器运维 2018年12月12日
    3.6K00
  • 如何查看云服务器 ECS 公网流量统计总和-linux运维-学派吧

    本篇文章给大家带来的内容是关于如何查看云服务器 ECS 公网流量统计总和,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 查看云服务器 ECS 公网流量统计总和 您可以在云服务器控制台导出使用记录的 CSV 文件查看云服务器每天/每小时的公网流量统计总和。 登录云服务器控制台。 单击费用 > 进入费用中心。 单击左侧导航栏消费记录 &g…

    服务器运维 2018年11月21日
    2.1K00
  • 如何在Tomcat中创建VirtualHost的教程分享-学派吧

    本篇文章介绍的内容是关于如何在Tomcat中创建VirtualHost(虚拟主机),下面我们来看具体的内容。 为什么选择虚拟主机? 虚拟主机允许我们在一台服务器上承载多个域(网站)。它是多个主机帐户之间资源共享的概念。虚拟主机的最佳用途是共享主机服务器,多个用户可以在一台服务器上承载多个网站。 安装细节 我们已经为Tomcat主机服务创建了一个IP为192.…

    服务器运维 2019年5月7日
    3.7K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----