linuxapacheweb服务器终极教程(编辑修改稿)内容摘要:

实现前提 这种方式需要在机器上设置 IP 别名,也就是在一台机器的网卡上绑定多个 IP 地址去为多个虚拟主机服务。 而且要使用这项功能还要确定在你的 LINUX 内核中必须支持 IP 别名的设 置,否则你还必须重新编译内核。 下面举一个拥有两个虚拟主机的服务设置,以供参考。 2.配置步骤 假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了 WEB 服务,现在将为新的一家公司 w 提供虚拟主机服务。 规划 IP 地址:为虚拟主机申请新的 IP 地址。 (假设本机 IP 地址为 ) 2) 让 ISP 作好相应的域名解析工作。 3) 为网卡设置 IP 别名: /sbin/ifconfig eth0:0 mask 4) 重新设置 /etc/d/conf/,在文件中加入: VirtualHost ServerAdmin DocumentRoot /home/d/ ServerName ErrorLog /var/log/d/ /VirtualHost 5)建立相应的目录。 mkdir /home/d/ mkdir /var/log/d/ 6)将相应的主页内容存放在相应的目录中即可。 3.不利因素 这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,就必须增加一个 IP 地址。 而由于 IP 地址空间已经十分紧张,所以通常情况下是无法取得这么多的 IP 地址的。 而且从某种意义上说,这也 是一种 IP 地址浪费。 设置实现基于名字的虚拟主机服务而基于名字的虚拟主机服务,是比较适合使用的一种方案。 因为它不需要更多的 IP 地址,而且配置简单,无须什么特殊的软硬件支持。 现代的浏览器大都支持这种虚拟主机的实现方法。 当然,这也就是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。 正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于 IP 地址的虚拟主机服务。 配置基于名字的虚拟主机服务需要修改配置文件 ?quot。 /etc/d/conf/,在这个配置文件中增加 以下内容。 NameVirtualHost VirtualHost ServerAdmin DocumentRoot /home/d/ ServerName ErrorLog /var/log/d/ /VirtualHost VirtualHost ServerAdmin DocumentRoot /home/d/ ServerName ErrorLog /var/log/d/ /VirtualHost 也就是在基于 IP 地址的配置基础上增加一句: NameVirtualHost 而已。 在本例中,为了体现只需要增 加一次,所以特别地设置了两个虚拟主机服务。 最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。 配置 CGI 1. 什么是 CGI CGI是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开发语言来实现,包括 C、C++、 Perl、 Shell脚本甚至 Java。 WEB 服务器从客户端得到某个 URL,它告诉 WEB 服务器,必须运行一个 CGI外部应用程序。 那么 WEB 服务器启动这一应用程序,等待它完成并返回输出结果。 最后,它将此应用程序的输出结果传输给另一端的 WEB 客户。 2. 为 CGI配置 Apache 那么如何使 Apache 能处理 CGI请求呢。 我们必须通过相应的配置过程告知 Apache 在哪里存储 CGI程序,指明 CGI程序的扩展等,以下我们逐一介绍一下设置的内容与步骤。 创建存储 CGI程序的目录 创建集中的 CGI程序目录只是建立 CGI环境的开始。 如果要考虑提高安全 性的话,应将集中的 CGI程序目录保存在 DocumRoot 目录外,使得访问者不能直接访问 CGI程序。 第一步:在 DocumentRoot 目录外创建一个目录,然后将所有的 CGI程序都集中存放在这个目录下。 例如,你可创 建一个 /home/d/public/apps 的目录作为 CGI程序的大本营。 第二步:为 CGI程序目录创建别名,也就是编辑配置文件 ,加入: ScriptAlias /cgibin/ /home/d/public/apps 这样做后,当客户访问 , WEB 服务器就会自动执行 WEB 服务器上的 /home/d/public/apps/。 第三步:为 CGI目录设置合适的权限,一般是只允许 Apache 有读取和执行的权限但没有写的权限。 允许用户访问 cgibin 我们已经在 小节中介绍了如何给用户开辟个人主页空间,但如果你的 用户需要使他的主页更具有活力,往往会向你申请 cgibin访问服务。 下面我们就介绍一个 Apache 服务器为用户提供的两种 cgibin访问方法。 1)使用 Directory 或 DirectoryMatch 容器 当在配置文件 中用 UserDir 命令被赋值为目录名称时, Apache 就 把它作为用户 WWW 站点的顶层目录。 例如: UserDir Public_html 当 Apache 接到 ~user 的请求,就到 /home/user/Public_html取出主页发送给客户。 如果要为每个用户添加 CGI支持就在 Apache 的配置文件 中添加下列配置: DirectoryMatch /home/[az]+/public_html/cgibin Options ExecCGI AddHandler cgiscript .cgi .pl /DirectoryMatch 注:将 DirectoryMatch 换成 Directory 亦可 在这种方法中, Apache 服务器将 ~user/cgibin请求翻译成为了 /home/user/Public_html/cgibin/,并允许执行任何带有正确扩展名 (.cgi或 .pl)的 CGI程序。 使用 ScriptAliasMatch 命令 通过使用 ScriptAliasMatch 命令,也可以为每个用户添加 CGI支持。 例如: ScriptAliasMatch ~([az]+)/cgibin/(.*) /home/$1/public_html/cgibin/$2 这个命令将用户名与 $1 相匹配,其中 $1 与 ~([az]+)相等。 将 /cgibin/后面的任何内容与 $2 相匹配,其中 $2 与 (.*)相等。 这个设置也就实现了将 ~user/cgibin/: /home/user/Public_html/cgibin/ 那么大家想一想,如果你想将这个请求解释为: /home/d/public/apps/ 该如何设置呢。 对,应该是: ScriptAliasMatch ~([az]+)/cgibin/(.*) /home/d/public /apps/$2 3. Apache 为 CGI提供的环境变量 Apache 服务器提供了许多环境变量可以用于 CGI程序的编写,了解它们也一定有助于写出充分利用 Apache 的 CGI程序,所以在此也对此作一简单介绍。 服务器变量 服务器变量由 Apache 设置用来通知 CGI程序有关 Apache 的情况。 通过使 用这些变量, CGI程序能确定有关服务器的不同信息: Apache 的版本,管理员的 EMail地址等。 SERVER_SOFTWARE 这个变量是 WWW 服务器 Apache 的版本号,它的值形如: Apache/Version,如 Apache/; GATEWAY_INTERFACE 这个变量的值是当前 CGI规范的版本号,其值形如: CGI/; SERVER_ADMIN 如果在 文件中有设置站点管理员的 地址的话,这个变量就会存放着这个 地址; DOCUMENT_ROOT 这个变量存放在是被访问的 WWW 站点的 DocumentRoot 命令指定的值。 客户请 求变量 Apache 提供的有关客户请求方的环境变量有许多,以下只是有选择性地介绍一些最常见的。 SERVER_NAME 此变量可以告诉 CGI程序它访问的是哪一个主机。 这个值可以是 IP 地址也可以是完整的主机名; HTTP_ACCEPT 此变量被赋值为客户所能接受的 MIME 类型的列表,如: HTTP_ACCEPT=image/gif; HTTP_ACCEPT_CHARSET 此变量被赋值为客户所能接受的字符集,如: HTTP_ACCEPT_CHARASET=iso88591.,*,utf8; HTTP_ACCEPT_LANGUAGE 此变量被赋值为客户所能接受的语言,如: HTTP_ACCEPT_LANGUAGE=en; HTTP_ACCEPT_AGENT 这个变量指定发出请求的系统正在运行的浏览器类型和操作系统; HTTP_PORT:服务端口; REMOTE_HOST:客户端的 IP 地址或 IP 名称信息; REMOTE_PORT:客户端的端口号; 4. 一点提示 若干年来,通过网关接口( CGI)已成为服务器端应用程序开发的事实标准。 但随着时间的推移,发现在沉重的 CGI负担下许多 WWW 服务器系统的表现不尽人意。 这是因为 CGI规。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。