linux Apache CGI 安装配置

本文假定你已经安装好linux(本文的linux版本为Fedora Core3), 并具有root权限.
1,安装apache
首先到apache的主页下载最新版本的apache http server,地址为 http://httpd.apache.org/
本文写于2006.4.29,apache版本为2.2.0 .如果你也想用这一个版本的话请点击:http://mirror.vmmatrix.net/apache/httpd/httpd-2.2.0.tar.gz
安装apache:
切换到httpd-2.2.0.tar.gz所在目录,然后:
# tar xvzf httpd-2.2.0.tar.gz
此时在该目录下有一个文件夹 httpd-2.2.0,切换到该文件夹:
# cd ./httpd-2.2.0
我不知道你想把apache安装到哪个文件夹,我们假定想安装到 /usr/local/apache2/ 下面,则
输入下面的命令:
# ./configure --prefix= /usr/local/apache2
# make
# make install
执行完这3条命令之后,apache就安装到你的 /usr/local/apache2目录下了.
切换到该目录看看有什么咚咚吧;)
# cd ./usr/local/apache2
# ls
可以看到里面有 /bin ,/conf , /htdocs, /cgi-bin 等目录.此时apache还没有启动,我们通过/bin目录下的工具apachectl来启动,首先切换到/bin目录:
# cd ./bin
然后启动:
# ./apachectl start
这时候在地址栏输入 http://localhost/ 看看是不是有成功的信息?(笔者看到的是 "It works!") 的信息, 当然不同的版本会不同,根据你 /htdocs 下的index.html内容而定.
把/usr/local/apache2/htdocs/index.html 替换成你的页面文件就可以了.
到了这里,我们假定你的apache服务器已经安装成功.如果还有问题请在网上搜索一下或者联系我:
lonestep AT gmail D。T com
2, 配置apache使之执行cgi程序
默认下,cgi程序必须放在cgi-bin目录下,我们先来配置使得cgi-bin下的cgi程序能得到正确执行,
后面将会介绍怎么让apache执行放在别的目录下的cgi程序.
1),承上,我们已经把apache安装到 /usr/local/apache2 目录下,切换到/usr/local/apache2/conf 目录,里面有一个 httpd.conf 文件, 编辑这个文件:
# cd /usr/local/apache2/conf
# vi httpd.conf (假定你的文本编辑器是vi, 如果你用别的编辑器如emacs, gedit, kedit 之类,把vi 替换成它们的命令即可)
寻找其中一行如:
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
把这行前面前面的'#'去掉,然后重新启动apache :
# cd ./bin (or cd /usr/local/apache2/bin)
# ./apachectl restart
ok, 假如你放了一个cgi程序'test.cgi'到cgi-bin的话,在地址栏
输入 http://localhost/cgi-bin/test.cgi 看看是否能够执行>?
如果不能,请发邮件给我:)
2),如果你想改变执行cgi的目录(不用默认的cgi-bin目录),则该变刚才的
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" 为:
ScriptAlias /SomeOtherDirectory/ "/usr/local/apache2/cgi-bin/"
然后重新启动apache.
以上的过程都是比较简单的,如果您遇到了本文未曾涉及的问题,或者与本文假设不同的条件,
请先到Internet上查找解决办法,如果还不行(once and once again)可以发邮件给我:)
一. CGI 的配置过程

1.CGI执行目录设置. 一般在 /usr/local/apache/cgi-bin/文件夹中. 在httpd.conf配置文件中能找到相关信息. 例如我把的CGI 程序是test.pl 那么地应的HTTP请法地址就是:http://localhost/cgi-bin/test.pl

2.CGI 的执行目录出于全安考虑一般只给读权限.对应的httpd.conf 中的配置可执行CGI的地方如下:

<Directory /usr/local/apache/htdocs/somedir>
Options +ExecCGI
</Directory>

3.htaccess文件
阿.htaccess文件是一种方法,一套配置指令对每个目录的基础。 当Apache服务的资源,它看起来在目录中由它提供的文件的文件要求.htaccess ,如果它认为有,它将适用于指示发现的。 .htaccess文件可以被允许的AllowOverride指令,其中具体规定哪些类型的指令可以出现在这些文件,或者,如果他们也不允许的。 允许指令,我们将需要为此目的,下面的配置将需要在您的主服务器配置.

二, 配置文件的内容和参数意思

在配置目录中有三个文件,分别是:
1. conf/httpd.conf :
ServerType :有两个值可供选择standalone 和inetd
Standalone : 表示你的httpd进程,是以一个单独的守护进程(daemon)的方式 在后台侦听是否有客户端的请求。
Inetd :表示你的httpd进程不是以守护进程(daemon)的方式运行,而是由Inetd 这个 internet services的进程侦听,一旦有客户的请求,他会自动的启动httpd这个进程来提供相应的服务 默认的是Standalone方式,如果你不是对 ARPA Berkeley Services 不是很了解的 话,不要更改。
Port : 你分配给你的WEB SERVER 的端口号。
Httpd 的默认端口是80,也可以分配给自己的WEB SERVER 一个大于1024 的
端口号。如果你这样作,你必须在你的URL后面跟上你的端口号才能访问到你
的页面。比如你分配给你的服务的端口号是8888,那么你访问时需要输入
http://domainname:8888
ServerAdmin :服务管理员的email 地址,默认的是本机的root用户,所以是
root@localhost
ServerRoot :用来存放服务的配置、出错和记录文件的目录。
BindAddress :虚拟主机的IP地址。用一台机子虚拟多台机子。
ErrorLog :用来存放你WEB SERVER的出错信息的文件。
TransferLog :用来存放记传输过的文件名的记录文件。
PidFile :该指定的文件存放了httpd进程的进程号,用来停止WEB SERVER。
ScoreBoardFile :用来存放进程的信息。
ServerName :你机子的名称,如果你有域名,填入你本机的域名。如果没有,就
填入你的主机名或IP地址。
Timeout :传输或接收的延时。大于这个时间SERVER 会断开这个链接。
KeepAlive :(on or off)是否允许一个链接同时发出多的请求。
KeepAliveTimeout :(default is 15)等待下一个请求的时间。
MaxClients :(default is 150)允许的最大客户个数。
通常上面的参数的默认值是不用改的,但是如果你同时在一台机子上开几个WEB SERVER 时要注意。第一,你要给每一个WEB SERVER 分配不同的port 号。第二,要分别指定他们的errorlog文件和pidfile文件。第三,不懂的参数不要随意改动,即使改动也要一次改一个,并留有记录以便恢复。

2. /conf/access.conf :
主要是对目录的功能和访问的控制的设定。下面我针对默认的页面的配置文件进行说明。该文件的位置是:/etc/httpd/conf/access.conf.
该文件的第一段非注释部分如下:
<Directory /home>
Options Indexes IncludesNOEXEC
AllowOverride None
</Directory>
大家注意到这一部分是以<Directory /home>开头,以</Directory>结束的。其中开头的部分<Directory /home>表示下面的设定是针对 /home 目录的。Options 这一命令有很多的参数,各参数的功能如下:
All 所有的选项除了MultiViews功能。
ExecCGI 开启执行CGI程序的功能。
FollowSymLinks 开启一个动态的链接,当有客户访问到该目录时会自动
的链接到另一个相关的目录中去。
Includes 开启服务端的引用功能。
IncludesNOEXEC 开启服务端的引用功能,但是#exec和CGI程序的引用将
被禁止。
Indexes 如果没有index.html文件在目录中,就会显示文件列表。
SymLinksIfOwnerMatch 只有在链接的目标文件或目录与当前的目录属于同一用
户时,才开启链接。
接着是AllowOverride参数,该参数是设定访问控制的。这里把他设置成None,表示没有开启该功能。
第二部分是:
<Directory /home/httpd/html>
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
</Directory>
第三部分是:
<Directory /home/httpd/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>
表示对/home/httpd/cgi-bin 不进行访问控制,允许执行CGI程序。这就表明这是一个用来存放CGI程序的目录

3. /conf/srm.conf
主要是用来指定你的文档的位置。
第一个参数是:DocumentRoot 。用来指定主文档的地址。
第二个参数是:UserDir 。用来指定个人主页的位置。如果你有一个用户的home目录为 /home/jon 当在URL中输入 http://yourdomain/~jon 系统就会到 /home/jon/X/中去取这个用户的个人主页。其中X为UserDir 所指定的目录。
第三个参数是:DirectoryIndex。用来声明查找的索引文件的名称。
其他的不改也无防。通常用到的就是上面的几个选项。

具体示例
需要建立一个开机启动的web server。假定你的文档目录为/home/jon/html。
首先,更改/etc/httpd/conf/access.conf文件的内容。将原文档的目录更改为新的文档目录。
例如如下的更改:

代码如下:

<Directory /home/httpd/html> ? <Directory /home/jon/html>
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
</Directory>
<Directory /home/httpd/cgi-bin> ? <Directory /home/jon/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>

如上做相应的更改,注意 /home/jon/cgi-bin为你的cgi程序的目录。
接着,修改 /etc/httpd/conf/srm.conf文件。
将DocumentRoot /home/httpd/html 改为DocumentRoot /home/jon/html
最后,修改 /etc/httpd/conf/httpd.conf文件。
将ServerName 这一个参数后面的原来的内容替换为你的本机ip地址或主机名,同时去掉前面的注释符 “#”。这里的配置为:
ServerName jon (jon 为我的主机名)
从新启动httpd进程:
#/etc/rc.d/init.d/httpd restart

四. CGI 程序的编写

首先,所有输出从您的CGI程序之前,必须由一个MIME类型的标题
1. 首先要确定Content-type: text/html

(0)

相关推荐

  • Python执行Linux系统命令的4种方法

    (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码 代码如下: system(command) -> exit_status Execute the command (a string) in a subshell. 如果再命令行下执行,结果直接打印出来 复制代码 代码如下: >>> os.system('ls') 04101419778.CHM   bash      document    media      py-django

  • Linux下为PHP添加扩展库的方法

    加上会出什么问题,不加会报什么错:所以在编译PHP的时候除了必要的目录指定,好多参数都没有加--等我在安装web程序的时候,才发现,很多参数是要加上的,但是我lnmp已经搭建好了,也不想重新编译,重新安装..于是就在网上找到了此文 一.添加FTP扩展 1.找到原来的源码包解压一下如:php-5.2.13进入到到FTP的扩展目录/root/lnmp/php-5.3.0/ext/ftp 2.调用phpize程序生成编译配置文件 复制代码 代码如下: root@dns ftp]# /usr/local

  • Linux ls命令参数详解

    -a -- 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录.      -l -- 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向.      -F -- 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:@ 表明是到其它文件的符号链接:* 表明是一个可执行文件.    

  • Linux下MySQL安装配置 MySQL配置参数详解

    一.下载编译安装 #cd /usr/local/src/ #wget http://mysql.byungsoo.net/Downloads/MySQL-5.1/mysql-5.1.38.tar.gz #tar –xzvf mysql-5.1.38.tar.gz ../software/ #./configure --prefix=/usr/local/mysql //MySQL安装目录 --datadir=/mydata //数据库存放目录 --with-charset=utf8 //使用UT

  • linux shell数组深入学习理解

    bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 数组赋值:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array[0]=var1    arrya[1]=var2    ...    array[n]=varN 计算数组元素个数:${#

  • Linux系统下如何查看及修改文件读写权限

    查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是类型 中间那三个 rw- 代表的是所有者(user) 然后那三个 rw- 代表的是组群(group) 最后那三个 r-- 代表的是其他人(other) 然后我再解释一下后面那9位数: r 表示文件可以被读(read) w 表示文件可以被写(write) x 表示文件可以被执行(如果它是程序的话)

  • linux shell脚本学习xargs命令使用详解

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs 的实用例子. 1.

  • Linux 详解 /var/log/xferlog的各个字段解析

    Linux 详解 /var/log/xferlog的各个字段解析 /var/log/xferlog的各个字段解析 Thu Dec 1 17:40:46 2016 8 10.11.40.147 32035942 /home/chb/1.txt b _ o r dxpanalysis ftp 0 * c 字段 含义 Thu Dec 1 17:40:46 2016 日期和时间 8 下载文件所花费的秒数 10.11.40.147 远程系统 320359 文件大小 /home/chb/1.txt 本地路径

  • linux Apache CGI 安装配置

    本文假定你已经安装好linux(本文的linux版本为Fedora Core3), 并具有root权限. 1,安装apache 首先到apache的主页下载最新版本的apache http server,地址为 http://httpd.apache.org/ 本文写于2006.4.29,apache版本为2.2.0 .如果你也想用这一个版本的话请点击:http://mirror.vmmatrix.net/apache/httpd/httpd-2.2.0.tar.gz 安装apache: 切换到

  • Linux服务器下安装配置Nginx的教程

    Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. 在高连接并发的情况下,Nginx是Apache服务器不错的替代品. Nginx 安装 一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先要安装 PCRE PCRE 作用是让 N

  • Linux下Hbase安装配置教程

    目录 Linux下Hbase安装配置 1. Hbase安装包下载 2. 安装 3. 配置JAVA_HOME环境变量 4. (可选)配置hbase-site.xml 5. 启动Hbase Phoenix安装和配置 1. Hbase安装包下载 2. 安装 3. 配置 4. 运行 Linux下Hbase安装配置 首先要安装Hadoop Linux Hadoop 2.7.3 安装搭建 1. Hbase安装包下载 点击进入Hbase官网页面下载 http://hbase.apache.org/downlo

  • CentOS7下 Apache的安装配置方法

    前些天安装了Nginx,为了好玩我就又安装Apache,Apache的安装还算顺利.在此做一下学习记录和经验分享. 一.安装httpd 1.先查看一下系统有没有已经安装了httpd的,如果啥都没查到,那就是没安装呗.如果有#rpm -e 查到的rpm报名,进行删除即可. #rpm -qa | grep httpd 2.我这里就直接使用yum安装了(会自动安装依赖包),为了简单方便. yum -y install httpd 3.httpd -v 查看安装版本,安装成功之后,查找配置文件位置,对h

  • linux系统下安装配置解压版的MySQL数据库图解

    一.解压文件到当前目录 命令:tar -zxvf mysql....tar.gz 二.移动解压完成的文件夹到目标目录并更名mysql 命令:mv mysql-版本号 /usr/local/mysql 添加系统mysql组和mysql用户 添加系统mysql组 sudo groupadd mysql 添加mysql用户 sudo useradd -r -g mysql mysql  添加完成后可用id mysql查看 然后进入/usr/local/mysql目录 设置mysql用户组对该文件夹操作

  • Win9x/ME下Apache+PHP安装配置

    Apache Server是众多的WEB服务器软件中的一种,已经成为目前Internet上最流行的web服务器软件之一.比起其它web服务器软件(如PWS.IIS.UNIX),Apache有安装方便,配置简单,便于管理等优点.更重要的是它和PHP一样是完全免费的!所以受到了众多朋友的青睐,下面我就来讲讲如何安装及配置Apache和PHP,来吧,跟我STEP BY STEP! 第一步:下载Apache Server.Apache Server的最新版在Apache的官方网站(http://www.

  • Linux中JDK安装配置教程

    JDK在官网下载,也可以从某个文件服务器进行下载. 1.在usr目录创建一个java文件夹: mkdir java 2.进入刚创建的java文件夹,下载jdk: cd /usr/java 例如: wget http://www.xxxx.com...jdk-8-linux-x64.tar.gz 3.解压jdk,在/usr/java目录下看到一个jdk1.8.0的目录: tar -zxvf jdk-8-linux-x64.tar.gz 4.删除原压缩包: rm -rf jdk-8-linux-x6

  • linux虚拟机上安装配置redis3.0.7

    我们给大家列出详细的图文步骤教给大家在linux虚拟机上安装redis以及相关的配置流程. 将redis-3.0.7.tar.gz上传到linux虚拟机上编译: a)  因为redis是C语言开发,所以需要先编译,在linux上编译需要依赖gcc环境,如果没有安装gcc环境,需要安装gcc: 执行命令:yum install gcc-c++ Redis数据类型 b) 在/usr/local创建redis目录(mkdir redis) 将redis-3.0.7.tar.gz复制到此目录下(cy /

  • Linux下从零开始安装配置Nginx服务器+PHP开发环境

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新. 因此我打算用其替代Apache应用于Linux服务器上.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.那么我们必须使用FastCGI方式来执行PHP程序. 下面是我成功地配置Ngi

随机推荐