首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux相关>apache>正文

Linux Apache Web 服务器(续2)

http://www.oklinux.cn  2007-03-23  来源:    会员收藏  游客收藏  【 】 

  五、为用户开辟个人主页空间

如果我们利用了LINUX系统架设了一台WEB服务器,我们不仅可以存放公司的主页,而且还可以为公司的每一个员工提供一块个人主页的空间。


首先,为需要个人主页空间的员工在LINUX上开设一个帐号。这样,它就拥有了一个用户主目录“/home/用户帐号名”。

addusr 用户帐号名
passwd 用户帐号名


在用户主目录下建立一个目录“public_html”,然后为其设置相应的权限。

cd ~用户帐号名
mkdir public_html
chmod 755 public_html


确认在srm.conf文件中的UserDir命令设置的是public_html目录。

让员工将自己的个人主页上传到自己用户主目录下的public_html目录中。


现在就可以使用“http://www.company.com/~用户帐号名”来访问员工的个人主页了。

六、用Apache实现虚拟主机服务

6.1 什么是虚拟主机服务

所谓的虚拟主机服务就是指将一台机器虚拟成多台WEB服务器。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用虚拟主机的形式,提供多个企业的WEB服务,虽然所有的WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获得WEB服务一样。

具体地说,就是,我们可以利用虚拟主机服务将两个不同公司www.company1.com与www.company2.com的主页内容都存放在同一台主机上。而访问者只需输入公司的域名就可以访问到它想得到的主页内容。

用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟主机,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够选择最合适的实现方法。

6.2 设置实现基于IP地址的虚拟主机服务

实现前提

这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个

IP地址去为多个虚拟主机服务。而且要使用这项功能还要确定在你的LINUX内核中必须支持IP别名的设置,否则你还必须重新编译内核。

下面举一个拥有两个虚拟主机的服务设置,以供参考。

2.配置步骤

假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了WEB服务,现在将为新的一家公司www.company1.com提供虚拟主机服务。


规划IP地址:为虚拟主机申请新的IP地址。(假设本机IP地址为202.101.2.1)

www.company1.com 202.101.2.2

2) 让ISP作好相应的域名解析工作。

3) 为网卡设置IP别名:

/sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0

4) 重新设置“/etc/httpd/conf/httpd.conf”,在文件中加入:

<VirtualHost 202.101.2.2>
ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log
</VirtualHost>

5)建立相应的目录。

mkdir /home/httpd/www.company1.com
mkdir /var/log/httpd/www.company1.com/error.log

6)将相应的主页内容存放在相应的目录中即可。

3.不利因素

这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是无法取得这么多的IP地址的。而且从某种意义上说,这也是一种IP地址浪费。

6.3 设置实现基于名字的虚拟主机服务

而基于名字的虚拟主机服务,是比较适合使用的一种方案。因为它不需要更多的IP地址,而且配置简单,无须什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。

正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于IP地址的虚拟主机服务。配置基于名字的虚拟主机服务需要修改配置文件:“/etc/httpd/conf/httpd.conf”,在这个配置文件中增加以下内容。

NameVirtualHost 202.101.2.1
<VirtualHost 202.101.2.1>
ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log
</VirtualHost>
<VirtualHost 202.101.2.1>
ServerAdmin [email protected]
DocumentRoot /home/httpd/www.company2.com
ServerName www.company2.com
ErrorLog /var/log/httpd/www.company2.com/error.log
</VirtualHost>

也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个虚拟主机服务。

最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。

七、配置CGI

7.1 什么是CGI

CGI是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开发语言来实现,包括C、C++Perl、Shell脚本甚至Java

WEB服务器从客户端得到某个URL,它告诉WEB服务器,必须运行一个CGI外部应用程序。那么WEB服务器启动这一应用程序,等待它完成并返回输出结果。最后,它将此应用程序的输出结果传输给另一端的WEB客户。

7.2 为CGI配置Apache

那么如何使Apache能处理CGI请求呢?我们必须通过相应的配置过程告知Apache在哪里存储CGI程序,指明CGI程序的扩展等,以下我们逐一介绍一下设置的内容与步骤。


创建存储CGI程序的目录

创建集中的CGI程序目录只是建立CGI环境的开始。如果要考虑提高安全

性的话,应将集中的CGI程序目录保存在DocumnetRoot目录外,使得访问者不能直接访问CGI程序。

第一步:在DocumentRoot目录外创建一个目录,然后将所有的CGI程序都集中存放在这个目录下。例如,你可创建一个/home/httpd/public/apps的目录作为CGI程序的大本营。

第二步:为CGI程序目录创建别名,也就是编辑配置文件httpd.conf,加入:

ScriptAlias /cgi-bin/ /home/httpd/public/apps

这样做后,当客户访问www.xxx.com/cgi-bin/li.cgi时,WEB服务器就会自动执行WEB服务器上的/home/httpd/public/apps/li.cgi文件。

第三步:为CGI目录设置合适的权限,一般是只允许Apache有读取和执行的权限但没有写的权限。

允许用户访问cgi-bin

我们已经在4.5小节中介绍了如何给用户开辟个人主页空间,但如果你的

用户需要使他的主页更具有活力,往往会向你申请cgi-bin访问服务。下面我们就介绍一个Apache服务器为用户提供的两种cgi-bin访问方法。

1)使用Directory或DirectoryMatch容器

当在配置文件srm.conf中用UserDir命令被赋值为目录名称时,Apache就

把它作为用户WWW站点的顶层目录。例如:

UserDir Public_html

当Apache接到www.xxx.com/~user的请求,就到/home/user/Public_html取出主页发送给客户。

如果要为每个用户添加CGI支持就在Apache的配置文件access.conf中添加下列配置:

<DirectoryMatch “/home/[a-z]+/public_html/cgi-bin”>
Options ExecCGI
AddHandler cgi-script .cgi .pl
</DirectoryMatch>

注:将DirectoryMatch换成Directory亦可

在这种方法中,Apache服务器将www.xxx.com/~user/cgi-bin请求翻译成为了/home/user/Public_html/cgi-bin/,并允许执行任何带有正确扩展名(.cgi或.pl)的CGI程序。

使用ScriptAliasMatch命令

通过使用ScriptAliasMatch命令,也可以为每个用户添加CGI支持。例如:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2

这个命令将用户名与$1相匹配,其中$1与~([a-z]+)相等。将/cgi-bin/后面的任何内容与$2相匹配,其中$2与(.*)相等。

这个设置也就实现了将www.xxx.com/~user/cgi-bin/xxx.cgi请求解释为:

/home/user/Public_html/cgi-bin/xxx.cgi

那么大家想一想,如果你想将这个请求解释为:

/home/httpd/public/apps/xxx.cgi

该如何设置呢?对,应该是:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/httpd/public /apps/$2

7.3 Apache为CGI提供的环境变量

Apache服务器提供了许多环境变量可以用于CGI程序的编写,了解它们也一定有助于写出充分利用Apache的CGI程序,所以在此也对此作一简单介绍。

服务器变量

服务器变量由Apache设置用来通知CGI程序有关Apache的情况。通过使

用这些变量,CGI程序能确定有关服务器的不同信息:Apache的版本,管理员的E-Mail地址等。


SERVER_SOFTWARE

这个变量是WWW服务器Apache的版本号,它的值形如:Apache/Version,如Apache/1.3;


GATEWAY_INTERFACE
这个变量的值是当前CGI规范的版本号,其值形如:CGI/1.1;


SERVER_ADMIN
如果在httpd.conf文件中有设置站点管理员的e-mail地址的话,这个变量就会存放着这个e-mail地址;


DOCUMENT_ROOT

这个变量存放在是被访问的WWW站点的DocumentRoot命令指定的值。


客户请求变量

Apache提供的有关客户请求方的环境变量有许多,以下只是有选择性地介绍一些最常见的。


SERVER_NAME

此变量可以告诉CGI程序它访问的是哪一个主机。这个值可以是IP地址也可以是完整的主机名;


HTTP_ACCEPT
此变量被赋值为客户所能接受的MIME类型的列表,如:HTTP_ACCEPT=image/gif;

HTTP_ACCEPT_CHARSET
此变量被赋值为客户所能接受的字符集,如:
HTTP_ACCEPT_CHARASET=iso-8859-1.,*,utf-8;

HTTP_ACCEPT_LANGUAGE
此变量被赋值为客户所能接受的语言,如:HTTP_ACCEPT_LANGUAGE=en;

HTTP_ACCEPT_AGENT
这个变量指定发出请求的系统正在运行的浏览器类型和操作系统

HTTP_PORT:服务端口;

REMOTE_HOST:客户端的IP地址或IP名称信息;

REMOTE_PORT:客户端的端口号;

7.4 一点提示

若干年来,通过网关接口(CGI)已成为服务器端应用程序开发的事实标准。但随着时间的推移,发现在沉重的CGI负担下许多WWW服务器系统的表现不尽人意。这是因为CGI规范存在瓶颈问题:每当客户系统请求CGI应用程序时,WWW服务器就必须启动新的CGI进程,直到完成任务后结束进程。这在负载不高时,会工作正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。

所以现在开始出现新的标准来弥补这一不足,其中FastCGI是很有前途的一种新的开放式标准。

你可以在Apache中通过添加mod_fastcgi.c模块来支持FastCGI。

上一篇:Linux下Apache-Tomcat整合安装   下一篇:Linux下安装PHP,APACHE,MYSQL,PERL方法


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux下Apache-Tomcat整合安装
·Apache-2.0.43+Php-4.2.3+Mysql-3.23.53在linux下的安
·如何集成Linux/Apache/PHP4/FastCGI/Oracle/MySQL环境
·在Linux下安装PHP,APACHE,ORACLE,PERL的方法
·在Linux下安装PHP,APACHE,MYSQL,PERL的方法
·Linux下安装PHP,APACHE,MYSQL,PERL方法
·在一些基于glibc的Linux系统上编译Apache1.2.x的时候
·Linux Apache+MySQL+PHP简明指南v2
·如何集成Linux、Apache、PHP4、FastCGI、Oracle、MySQ
·Linux下Apache、php3、MySQL的整合
·Linux下Apache+PHP+MySql+Cgi
·Linux Apache Web 服务器
·Linux Apache Web 服务器(续一)
·Linux Apache Web 服务器终极教程
·Linux下Apache Proxy与Cache功能的配置
·在一些基于glibc的Linux系统上编译Apache 1.2.x的时候
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Ubuntu用Apache2管理Subversion控制系
·在Linux操作系统下为Apache目录添加密
·Linux服务器应用:关于Apache配置和日
·AS4服务器下 Apache随系统自启动的方法
·详细解析:Apache服务器实现的用户验证
·Debian:为Apache启用某个你需要的模块
·Fedora Linux+Apache+MySQL+PHP安装配
·Debian下Apache2+Mysql5+Php5的安装配
·Linux操作系统下 Apache安装
·apache 2.2.2 + PHP5.1.4 不能运行的解
·Apache Beehive——Workshop运行时的发
·Apache2 httpd.conf 中文版
  阅读排行
·Apache+Tomcat负载平衡设置方法详细解
·Apache下服务器虚拟主机的设置方法介绍
·Linux系统Apache用户授权和访问控制
·Linux下Apache-Tomcat整合安装
·静态和动态编译Apache+php+mysql全过程
·Linux+Apache+Mysql+PHP典型配置方案
·Apache用户认证简单配置方案集
·在Linux系统中Apache与Tomcat的整合
·解决与HTTP 500 – 内部服务器错误错误
·如何集成Linux、Apache、PHP4、FastCGI
·Linux系统上把PHP编译进Apache静态内核
·一步一步教你如何在linux下配置apache+
·让使用Apache的网站速度更快
·Linux Apache+MySQL+PHP简明指南v2
·Linux下安PHP,APACHE,MYSQL,PERL方法
网摘收藏: