建 立 自 己 的Web 服 务 器朱 东 鸣---- 您 是 否 想 过 把 自 己 的 电 脑 建 成 一 台Web 服 务 器 ? 其 实 非 常 简 单。 它 并 不 需 要 额 外 的 硬 件 和 软 件 投 资, 只 需 利 用Windows 95 OSR2 中 提 供 的“ 个 人Web 服 务”(Personal Web Server) 即 可。 如 果 想 功 能 更 加 完 善, 就 得 用Windows NT Server 4.0 了。 您 甚 至 还 可 以 设 计 出 自 己 的HomePage 来 发 布 信 息、 进 行 文 件 传 送 或 开 展 网 上 讨 论。 总 之, 过 去 我 们 只 能 在Internet 上 看 见 的, 现 在 都 可 以 自 己 来 实 现。 一、Web 服 务 器 功 能 的 设 置---- 首 先, 我 们 应 该 让 电 脑 拥 有Web 服 务 器 的 功 能。 当 我 们 安 装Windows 95 OSR2 后, 应 该 考 虑 让 别 人 用 什 么 样 的 方 法 来 访 问 我 们 的Web 服 务 器, 如 用 电 话 拨 号 来 访 问, 就 应 该 安 装 像Plus 之 类 的 电 话 拨 号 服 务 软 件。 如 果 只 能 提 供 电 话 拨 号 服 务, 建 议 采 用 后 一 种 方 案, 即 用Windows NT Server 4.0, 因 为 它 能 提 供256 条 电 话 线 同 时 拨 号。 当 然 我 们 也 可 以 自 己 先 连 上 一 个 公 共 的 网 络 服 务 器, 让 别 人 从 这 个 服 务 器 访 问 我 们 的Web 服 务 器, 但 必 须 要 有 一 个 固 定 的IP 地 址, 并 在 这 个 服 务 器 的DNS( 域 名 服 务 器) 中 注 册。 如 果 只 有IP 地 址, 但 没 有 在DNS 中 注 册, 那 么 局 域 网 以 外 的 用 户 就 不 能 访 问 该 个 人Web 服 务 器。 不 管 用 什 么 方 式, 我 们 都 要 为 计 算 机 设 置TCP/IP 协 议 和Web 个 人 服 务 器 功 能。 这 可 以 在“ 网 上 邻 居” 中 设 置。 方 法 非 常 简 单, 只 需 在“ 网 上 邻 居” 的“ 属 性” 中 添 加TCP/IP 协 议, 然 后 在“TCP/IP 属 性” 中 的“IP 地 址” 标 签 中 选 择“ 指 定IP 地 址” 并 输 入 正 确 的IP 地 址。 在“DNS 配 置” 标 签 中 选 择“ 使DNS 无 效”。---- 安 装 个 人Web 服 务 器 的 方 法 如 下: ---- (1) 在“ 网 上 邻 居” 的“ 属 性” 对 话 框“ 配 置” 标 签 中 单 击“ 添 加” 按 钮; ---- (2) 在 弹 出 的“ 选 择 网 络 组 件 类 型” 对 话 框 中, 在“ 厂 商” 栏 中 选 择“Microsoft”, 在“ 网 络 服 务” 栏 中 选 择“Personal Web Server”, 然 后 单 击“ 确 定” 按 钮。 ---- 这 时Windows 95 将 自 动 配 置 系 统。 机 器 启 动 后, 在Windows 95 所 在 驱 动 器 的 根 目 录 下 面 将 建 立 一 个 名 为Webshare 的 子 目 录, 其 下 还 有 三 个 子 目 录:WWWroot、Scripst 和FTProot, 分 别 存 放HTML 超 文 本 文 件、CGI 脚 本 文 件 和FTP 文 件 传 送 文 件。 ---- 安 装 完 成 后, 先 可 以 进 行 一 下 测 试。 启 动 机 器, 在“ 控 制 面 板” 中 双 击“ 个 人Web 服 务 器” 图 标, 在“ 服 务” 选 项 栏 中 分 别 选 择 “HTTP” 和“FTP” 并 单 击“ 启 动”, 这 样 就 开 启 了 这 两 项 服 务 功 能。 也 可 以 设 成“ 自 动 方 式”, 这 样 每 次 开 机 后, 就 自 动 启 动Web 服 务 器 功 能。 启 动Web 服 务 器 功 能 后, 我 们 可 以 打 开WWW 浏 览 器( 如IE), 在 地 址 栏 中 键 入 我 们 的IP 地 址, 马 上 就 会 出 现Web 个 人 服 务 器 中 自 带 的 一 个 主 页。 然 后 可 以 在 一 个 局 域 网 中( 如Intranet 网) 进 行 测 试。 方 法 是 在 网 上 的 其 他 计 算 机 中, 用WWW 浏 览 器 键 入 用 作 个 人Web 服 务 器 的 计 算 机 的 注 册 名, 这 时 应 当 出 现 同 样 的 主 页。 如 果 不 能 看 见, 可 以 在 个 人Web 服 务 器 上 用DOS 方 式 运 行 一 下winipcfg 命 令, 看 一 看 这 台 计 算 机 的IP 地 址 是 不 是 正 确。 ---- 下 面 介 绍 怎 样 在Windows NT Server 4.0 中 文 版 中 设 置Web 服 务 器 功 能。Windows NT Server 4.0 中 文 版 中 的Web 服 务 功 能 通 过IIS 2.0(Internet Information Server 2.0) 来 实 现。 在 安 装Windows NT Server 4.0 中 文 版 的 过 程 中, 系 统 会 提 示“ 是 否 安 装IIS 2.0 ?”, 应 回 答“ 安 装”。 这 样 启 动Windows NT Server 4.0 中 文 版 后, 就 有 了Web 服 务 器 的 功 能。 和Windows 95 中 的 情 况 一 样, 在Windows NT 中 也 同 样 存 在 用 什 么 样 的 方 法 让 别 人 访 问Web 服 务 器 的 问 题。 如 果 是 在 局 域 网 中, 要 安 装 网 卡、 设 置 协 议 及IP 地 址 等。 如 果 准 备 用 调 制 解 调 器 让 别 人 拨 号 访 问, 则 要 安 装 调 制 解 调 器、 电 话 线 路。 还 要 在“ 服 务 项 目” 中 添 加“RAS 远 程 服 务” 功 能, 并 在 这 个 功 能 的“ 属 性” 中 设 置 协 议 等 等。 如 果 对 这 些 设 置 不 太 清 楚 的 话, 可 以 参 考 有 关Windows NT 的 书 籍。 安 装 完 成 后, 可 以 按 照 前 面 在Windows 95 OSR2 中 的 方 法 进 行 一 下 测 试, 看 看 能 不 能 在 另 外 的 计 算 机 中 用WWW 浏 览 器 看 到IIS 2.0 提 供 的 一 个 主 页 例 子。 二、 制 作 自 己 的 主 页---- 要 制 作 主 页, 先 要 安 装 一 些 必 要 的 网 页 制 作 软 件, 笔 者 使 用 的 是FrontPage 97。 先 把 个 人Web 服 务 器 中 自 带 的 主 页 修 改 成 自 己 的 主 页。 方 法 是 进 入 这 个 主 页 的 目 录(Windows 95 在Webshare 目 录 的WWWroot 子 目 录 中,Windows NT 在InetPub 目 录 的WWWroot 子 目 录 中), 找 到default.htm 文 件 双 击 打 开 后, 选 中 工 作 条 中 的“ 编 辑”, 系 统 会 自 动 调 出FrontPage 97, 这 时 就 可 以 发 挥 自 己 的 才 能 进 行 一 番 设 计 了( 见 图1)。![]() 图1 ---- 在 这 个 主 页 中, 我 们 能 够 向 外 发 布 消 息, 让 别 人 下 载 放 在Webshare 目 录 下FTProot 子 目 录 中 的 文 件, 但 是 还 不 能 实 现 双 向 交 流, 接 收 访 问 者 的 信 息。 三、 安 装CGI 系 统---- 要 使Web 服 务 器 能 为 别 人 提 供“ 写” 的 功 能, 必 须 在 服 务 器 上 安 装CGI( 通 用 网 关 接 口) 系 统。 通 用 网 关 接 口 是 一 个 信 息 服 务 器 主 机 对 外 信 息 服 务 的 标 准 接 口( 见 图2)。![]() 图2 ---- 事 实 上, 任 何 一 种 程 序 语 言 所 设 计 的 应 用 程 序 可 以 在 服 务 器 主 机 上 执 行, 并 利 用CGI 接 口 来 传 送 应 用 服 务 信 息, 皆 称 之 为“CGI 程 序 语 言”, 而 用 这 种 语 言 编 写 的CGI 程 序 又 被 称 为“ 脚 本”。 现 在 常 用 的 有Shell、VB、C/C++、Java、Perl 等 语 言。 以Perl for Win32 为 例, 您 可 以 从Internet 上 下 载 自 解 压 文 件pw32i316.exe, 然 后 安 装。 ---- 我 们 先 来 看 看 怎 样 在Windows 95 OSR2 版 中 的“ 个 人Web 服 务” 上 安 装Perl 系 统: ---- 启 动Windows 95 后, 用 鼠 标 双 击 下 载 下 来 的pw32i316.exe, 自 解 包 就 会 自 动 运 行 解 压 并 进 行 安 装, 整 个 安 装 过 程 可 以 全 部 回 答“Y” 完 成。 完 成 后 一 般 会 在C 盘 根 目 录 下 建 立 一 个 名 为Perl 的 目 录, 并 在 其 下 建 立 几 个 子 目 录, 其 中 在Bin 子 目 录 中 有 一 个 名 为perl.exe 的 可 执 行 程 序, 这 就 是Perl 系 统 的 主 程 序。 但 是 这 时 的Perl 主 程 序 并 不 能 运 行 按Perl 语 言 方 法 编 写 的CGI 脚 本, 所 以 还 必 须 修 改Windows 95 的 注 册 表。 方 法 是 先 运 行 注 册 表 编 辑 器regedit, 然 后 依 次 打 开“HKEY_LOCAL_MACHINE\System\Currentcontrlset \Services\W3svc\Parameters\ScriptMap\”, 加 入“.pl ‘C:\PERL\BIN\perl.exe %s %s’”。 退 出 注 册 表 文 件 后, 重 新 启 动 计 算 机, 然 后 进 入Perl 目 录 下 的Eg 子 目 录, 从 中 任 选 一 个 扩 展 名 为.pl 的 文 件 并 双 击, 这 时 系 统 会 出 现 一 个 列 表 窗 口, 询 问 使 用 什 么 程 序 来 打 开 这 个 文 件, 这 时 应 该 在 可 选 的 可 执 行 文 件 列 表 中 找 到“perl”( 如 果 找 不 到 可 以 在“ 其 他” 项 中 按 路 径 来 指 定), 并 选 定“ 始 终 使 用 该 软 件 打 开 这 种 类 型 的 文 件” 项, 单 击“ 确 定” 即 可。 在Windows NT Server 4.0 中 的 安 装 过 程 与Windows 95 基 本 一 样, 只 是 修 改 注 册 表 时 应 运 行regedit32, 加 入 的 内 容 为:“.pl:REG_SZ:C:\Perl\Bin\perl.exe %s %s”。 ---- 安 装 完 成Perl 系 统 后, 我 们 就 可 以 写 一 个CGI 脚 本 试 一 试 了。 下 面 的 例 子 中, 程 序1 是 用Perl 语 法 规 则 写 成 的 一 个CGI 脚 本, 这 是 一 个ASCII 文 本 文 件, 可 用 一 般 的 记 事 本 来 编 写, 完 成 后 用sample.pl 文 件 名 存 盘。 注 意 不 论 是 在Windows NT Server 4.0 还 是 在Windows 95 中, 都 应 把 这 个 文 件 放 在Scripts 的 子 目 录 中。 程 序2 是 相 应 的HTML 文 件, 这 个 文 件 应 放 在WWWroot 子 目 录 中。 ---- 接 下 来 我 们 可 以 运 行 测 试。 打 开WWW 浏 览 器, 在 地 址 栏 中 键 入:http:// 您 的Web 服 务 器 名/ 程 序2 的 文 件 全 名, 会 出 现 一 个 填 写 界 面( 见 图3), 当 输 入 数 据 完 成 后, 单 击“ 确 定” 按 钮, 马 上 就 会 把 您 填 写 的 这 些 内 容 写 在 屏 幕 上( 见 图4)。 当 然, 我 们 也 可 以 从 网 上 的 另 一 台 计 算 机 来 测 试。 这 仅 仅 是 一 个 很 简 单 的 例 子, 要 想 得 到 更 好 的 结 果( 如 问 卷 调 查、 网 上 留 言、BBS 等), 就 要 进 一 步 学 习 一 些 有 关Perl 语 言 的 知 识 了。 总 而 言 之, 通 过 不 懈 努 力, 完 全 可 以 使 我 们 的 个 人Web 服 务 器 达 到 专 业 水 平。 ![]() 图3
图4
程 序1(for Perl)
# 文 件 名:sample.pl
$|=1;
print“Content-type:text/html\n\n”;
read(STDIN,$buffer,$ENV{‘CONTENT_LENGTH’});
@pairs=split(/&/,$buffer);
foreach $pair(@pairs){
($name,$value)=split(/=/,$pair);
$value= ~tr/+//;
$value= ~s/%([a-fA-F0-9][a-fA-F0-9])/pack(“C”,hex($1))/eg;
$FORM{$name}=$value;
}
print“< title > 使 用Perl 来 写CGI 的 例 子< /title >”;
print“< h1 > 使 用Perl 来 写CGI 的 例 子< /h1 >”;
print“< P >1. 姓 名:$FORM{‘name’}”;
print“< P >2. 性 别:$FORM{‘sex’}”;
print“< P >3. 电 话:$FORM{‘id’}”;
print“< P >4. 职 业:$FORM{‘job’}”;
print“< P >5. 爱 好:$FORM{‘idol1’},$FORM{‘idol2’},$FORM{‘idol3’}”;
程 序2(for HTML)
< HTML >
< title > 使 用Perl 来 写CGI 的 例 子< /title >
< h1 > 使 用Perl 来 写CGI 的 例 子< /h1 >
< FORM METHOD=“POST” action=“/scripts/sample.pl”>
< P >1. 姓 名:< input type=“text” name=“name”size=12 >
< P >2. 性 别:< select name=“sex”>
< option selected > 男< option > 女< /select >
< P >3. 电 话:< input type=“text” name=“id” size=12 >
< P >4. 职 业( 单 选):
< input type=“radio” name=“job” value=“ 学 生” > 学 生
< input type=“radio” name=“job”value=“ 教 师” > 教 师
< input type=“radio” name=“job” value=“ 其 它” > 其 它
< P >5. 爱 好( 可 复 选):
< input type=“checkbox” name=“idol1” value=“ 音 乐” > 音 乐
< input type=“checkbox” name=“idol2” value=“ 体 育” > 体 育
< input type=“checkbox”name=“idol3” value=“ 其 它” > 其 它
< P >
< input type=submit value=“ 确 定” >
< input type=reset value=“ 重 新 输 入” >
< /FORM >< /HTML >
---- ( 作 者 地 址: 四 川 省 绵 阳 市 西 南 工 学 院 基 科 系,621002; 收 稿 日 期:1998.05) 中国计算机世界出版服务公司版权所有 |