Linux系统安装Apache以及如何配置cgi
作者:U友50089076 | 来源:互联网 | 2014-05-28 10:53
Apache中的提交了一种利用扩展应用程序执行动态网页的机制.称为CommonGatewayInterface(通用网关接口)简称CGI.本文假定你已经安装好linux(本文的linux版本为FedoraCore3),并具有root权限.1,安装apache首先到apache的主页下载最新版本的apachehttpse
Apache 中的提交了一种利用扩展应用程序执行动态网页的机制. 称为Common Gateway Interface
(通用网关接口)简称CGI.
本文假定你已经安装好linux(本文的linux版本为Fedora Core3), 并具有root权限.
1,安装apache
首先到apache的主页下载最新版本的apache http
server,地址为 http://httpd.apache.org/
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的地方如下:
Options +ExecCGI
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.
该文件的第一段非注释部分如下:
Options Indexes IncludesNOEXEC
AllowOverride None
大家注意到这一部分是以开头,以 结束的。其中开头的部分表示下面的设定是针对 /home 目录的。Options 这一命令有很多的参数,各参数的功能如下:
All 所有的选项除了MultiViews功能。
ExecCGI 开启执行CGI程序的功能。
FollowSymLinks 开启一个动态的链接,当有客户访问到该目录时会自动
的链接到另一个相关的目录中去。
Includes 开启服务端的引用功能。
IncludesNOEXEC 开启服务端的引用功能,但是#exec和CGI程序的引用将
被禁止。
Indexes 如果没有index.html文件在目录中,就会显示文件列表。
SymLinksIfOwnerMatch 只有在链接的目标文件或目录与当前的目录属于同一用
户时,才开启链接。
接着是AllowOverride参数,该参数是设定访问控制的。这里把他设置成None,表示没有开启该功能。
第二部分是:
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
第三部分是:
AllowOverride None
Options ExecCGI
表示对/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文件的内容。将原文档的目录更改为新的文档目录。
例如如下的更改:
?
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
?
AllowOverride None
Options ExecCGI
如上做相应的更改,注意 /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
推荐阅读
本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ...
[详细]
蜡笔小新 2024-11-22 19:32:32
随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ...
[详细]
蜡笔小新 2024-11-22 19:15:42
计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ...
[详细]
蜡笔小新 2024-11-22 11:13:36
本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ...
[详细]
蜡笔小新 2024-11-21 19:01:54
本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ...
[详细]
蜡笔小新 2024-11-21 18:13:22
对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ...
[详细]
蜡笔小新 2024-11-21 17:01:54
本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ...
[详细]
蜡笔小新 2024-11-22 18:44:25
Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ...
[详细]
蜡笔小新 2024-11-22 18:18:57
本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ...
[详细]
蜡笔小新 2024-11-22 16:43:30
本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ...
[详细]
蜡笔小新 2024-11-22 16:27:56
本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ...
[详细]
蜡笔小新 2024-11-22 00:07:45
本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ...
[详细]
蜡笔小新 2024-11-21 18:58:31
对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ...
[详细]
蜡笔小新 2024-11-21 18:30:23
本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ...
[详细]
蜡笔小新 2024-11-21 17:32:44
publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ...
[详细]
蜡笔小新 2024-11-21 16:25:41
U友50089076
这个家伙很懒,什么也没留下!