Joe Brockmeier 在本文中将讨论 freeVSD,Linux 中的一种“虚拟服务器守护程序”,它允许多个虚拟服务器在同一个物理的机器上运行。每个虚拟服务器都有自己独立的 Web 托管环境。它通常用于托管工作,但您也可以将其部署为允许一台机器充当几个开发者的开发试验平台。
在生产部门中,系统管理员通常因太忙而没有足够的时间来处理开发者可能发出的每个请求。管理员没有时间去修改 Apache 的配置文件,或按开发者希望的速度重新启动 MySQL 守护程序。而且,向 Web 开发者赋予对服务器(甚至主要用于测试的服务器)根用户的访问权通常都是不切实际的,这是因为某一个开发者所作的修改可能会影响到其它开发者,进而导致整体生产力下降。唉,让每个开发者都拥有独立的测试机器通常也不太可能。
然而,如果您正在使用 Linux 环境,您就可以将机器设置为让多个开发者同时享有管理访问权,而不会影响其它开发者所在的环境。这被称为 freeVSD(Virtual Server Daemon,虚拟服务器守护程序),它还允许一个 Linux 服务器有多个“虚拟”服务器。使用 freeVSD 能够让公司进一步充分利用其资源,同时让每个开发者或一组开发者仍拥有自己的环境。虽然开发 freeVSD 的主要目的是托管公司,您仍然会发现它对生产环境可能也大有好处。
freeVSD 是什么?
当您听说“虚拟服务器”时,您可能会联想到 VMware 之类的软件,它会虚拟出一个完整的 x86 机器,您可以安装任何希望使用的操作系统。
freeVSD 并没有达到这个程度。它只是允许您赋予每个虚拟服务器它自己的 HTTP 服务器、IP 地址和文件系统等等。这些服务器仍然在原来的操作系统下运行,但它们并不共享同一个文件系统,而且每个虚拟服务器都可以有自己的管理员(伪根用户),这种用户几乎享有与真正的根用户相同的特权。这是通过创造性地使用 chroot 实现的。当然,这样做可能会有一些严重的安全性隐患 -- 所以,如果您真的安装了 freeVSD,那就一定要阅读分发包中的 security.txt 文件所给出的建议并加以实施;还要查看 freeVSD FAQ(请参阅本文后面部分的 参考资料,那里有相关的链接)中与安全性有关的信息。
举例来说,如果您在一台机器上有四个虚拟服务器,您就可以重新引导一个单独的 Apache 实例,而不会影响其它服务器。如果需要,其中一个开发者甚至可以有与其它开发者完全不同的 Apache 配置。如果某个享有管理员访问权的开发者意外地清除了一个虚拟服务器上的一半文件系统,其它虚拟服务器将不会受到影响。开发者甚至可以按照向常规 Linux 服务器添加用户的相同方式向虚拟服务器添加用户 -- 但添加的用户只会被目标虚拟服务器识别,真正的 Linux 主机或者其它任何虚拟服务器都无法识别该用户。其实,它完全是另外一个供开发者使用的 Linux 服务器。
最好的一点是,在 GNU General Public License 的许可之下,您可以免费获取 freeVSD(这也是它名称的由来......)(请参阅 参考资料),这样您不用支付任何许可费用,就能够部署一个或五十个,甚至上千个使用 freeVSD 的服务器。
使用 freeVSD 可能会碰到的一些问题
现在,freeVSD 特别针对 Red Hat 6.1 和 Red Hat 7.x 进行了修改。根据 freeVSD 站点上的说法,Red Hat 7.x 仍然处于“实验”阶段,所以,您试图在更新的 Red Hat 发行版上安装 freeVSD 时可能会碰到一些问题。我正在一台安装了 KRUD 7.2(请参阅 参考资料)的服务器上使用 freeVSD。KRUD 7.2 是一种几乎与 Red Hat 7.2 相同的分发包。我不得不从源代码安装 freeVSD,因为从 RPM 安装不合适。
按照 freeVSD 文档的描述,配置文件应该在 /etc/vsd 中,但(至少我的情况是)它们实际上是在 /usr/local/etc/vsd 中。我还是选择了从源代码安装,您的实际情况也会有所不同。
支持的服务
由于虚拟服务器运行的方式与真正的 Linux 服务器有一点不同,所以有一些程序在虚拟服务器下将不能运行 -- 或者说不能正确运行。freeVSD 并不能处理您可能希望在服务器上使用的每个程序,所以,在决定您希望开发者访问的目标时,一定要将这个因素考虑进去。
举例来说,DB2 不在测试过的能够使用 freeVSD 的应用程序之列,所以它可能不会在 freeVSD 虚拟服务器上运行。您仍然可以在原来的操作系统下运行 DB2,但它可能不会在任何虚拟服务器下运行。这并不是说 freeVSD 只支持一个或两个应用程序,我只是要指出某些应用程序可能无法在虚拟服务器上运行。也可能它们能够完全正常运行 -- 只是还没有经过测试。您可以在 freeVSD 站点(请参阅 参考资料)找到经过测试的应用程序的一个列表。
最常用的 Linux 应用程序 -- Apache、MySQL、PostgreSQL、PHP、Perl、BIND、Sendmail 还有很多其它应用程序 -- 都经过了测试,能够在 freeVSD 下顺利运行。不能仅仅因为一个应用程序没有经过测试就断定它不能在 freeVSD 下运行,关于这一点我已经说得够多了。如果您测试了一个不在 freeVSD 站点上列表中的服务,而它能够正常运行,请您一定要将这个消息告诉其他开发者,让他们知道您已经成功运行了这个服务。
multitude 于 2006-12-05 09:53:39发表:
启动和停止虚拟服务器。要启动或停止虚拟服务器,请使用 vsboot 命令。举例来说,要启动一个名为“fluffy”的虚拟服务器,您可以使用:
# vsdadm vsboot -start fluffy
# vsdadm vsboot -stop fluffy
如果要重新启动它,您可以使用: # vsdadm vsboot -restart fluffy
如果您省略了虚拟服务器名,命令就会对所有虚拟服务器生效。
安装软件包。您可以用管理员身份在虚拟服务器中编译程序的源代码,从而实现在虚拟主机上安装软件包, 也可以将 RPM 从主机服务器安装到虚拟服务器的目录结构中来实现安装软件包的目的。虚拟服务器不支持从 RPM 安装软件包。举例来说,如果您希望将软件包安装到虚拟服务器“fluffy”上,您可以使用:
# rpm -Uvh
--force --root=/home/vsd/vs/bob packagename.rpm
重新启动服务。要在服务器上重新启动服务,而不是重新启动服务器本身,请使用:
# vsdadm vs_reboot realhost.yourdomain.com fluffy
这样将重新启动“fluffy”上的服务 -- 与“vsboot -- reboot”所做的差不多。
更改用户密码。如果您需要在虚拟服务器上修改用户密码,您可以不必登录到虚拟服务器中就完成修改,使用的命令如下所示:
# vsdadm user_chpass realhost.yourdomain.com fluffy admin
oldpass newpass
总结
本文是对 freeVSD 的一个相当简短的概述。您已经看到了,在某些开发环境中,使用 freeVSD 可能非常有用:您可以将一个健壮的服务器转换成有着相同服务的多个一模一样的开发服务器以供随意使用,也可以将每个服务器定制为适合开发者的需求。一旦您将 freeVSD 定制为适合您的需求后,就可以马上轻易地衍生出很多新的虚拟服务器了。由于 freeVSD 是,怎么说呢, 免费的,那么就试着用用,看看它是否适合您的工作室。
multitude 于 2006-12-05 09:52:56发表:
安装 freeVSD
我在这里不会浪费时间讲述安装过程的每个步骤,因为您将发现 freeVSD 文档中已经非常详细地描述了这些步骤。不过,我会快速地简述一些基本信息。
要安装 freeVSD,您需要有一台只安装了 Red Hat 6.2 或 7.x 的服务器。您还需要在 /home 目录下(或您决定保存 vsd 目录的任何地方)有至少 750 MB 的可用空间,以及 32 MB 的 RAM 和两个 IP 地址。这当然仅仅是安装的最小系统要求。对于任何重要的开发测试,我都不会推荐这种安装配置。
您可以选择从源代码或者从 RPM 进行安装。如果您安装了 Red Hat 6.2 或 7.x 的标准版本,那么您就可能希望从 RPM 进行安装。一定要阅读安装指示,因为按正确的顺序安装 RPM 非常重要。
在安装后,要了解 freeVSD 守护程序(vsd)是否已安装好并已经运行,请运行 netstat -lt 看看 vsd 是否出现。如果 vsd 出现,那么情况一切正常。如果没有出现,就请开始诊断问题,查看您是否正确完成了所有步骤(我说过安装 RPM 的顺序非常重要吧?)。要进一步诊断问题,请查看 freeVSD FAQ 或搜索 freeVSD 邮件列表( 参考资料中列出了到这两者的链接)。
安装之后,不会有任何虚拟机器就绪,直到您自己创建一个:在安装之后运行的只有侦听请求等的 vsd 守护程序。
如果您打算使用 freeVSD,我建议您花几天时间去进行准备和运行工作。除非您在机器上只安装了 Red Hat 6.2 或 7.x 的标准版本,否则您很可能希望在机器上安装 freeVSD 之前对系统进行一些干净彻底的安装工作。如果您正在使用一个完全不同的分发版,您可以在 Red Hat 之上安装 freeVSD 机器,也可以为了让 freeVSD 在其它的分发版上运行而准备奋战。(如果您的确打算这么做,那就一定要通知使用 freeVSD 的其他人,让他们知道您的使用情况如何。)如果您特别具有社区精神(而且笔记做得很好),您甚至还可以考虑根据您的使用情况撰写一篇简短的使用指南。
创建虚拟服务器
安装 freeVSD 之后,您就可以创建虚拟服务器了。您可能不知道虚拟服务器的最大数量是多少 -- 根据 freeVSD 文档所示,大约为 250 个。这个数字应该足够了。如果这还不够,您只要添加另一个 Linux 主机就行了!
要创建虚拟服务器,我们将使用 vsdadm 实用程序和 vs_create 命令。要创建新的虚拟服务器,您需要指定虚拟服务器的主机名、IP 地址、虚拟服务器的全限定域名、要分配给服务器的用户 ID 以及用来创建虚拟服务器的 skel 的名称。(请注意,如果您愿意,还可以从 freeVSD 站点下载预先构建好的 skel。请参阅 参考资料,那里有关于这些的链接。) 如果您正在使用限额支持,您还可以指定从主机磁盘空间分配出来的磁盘空间的大小。
所以,要创建虚拟服务器,使用的命令应该和下面的差不多:
# vsdadm vs_create host.yourdomain.org virtual X.X.X.X 50 default
这里只是扼要地描述一下, vs_create 之后的第一个字段是虚拟服务器驻留所在的主机(换句话说,也就是运行 freeVSD 的机器)的名称。下一个字段是虚拟服务器的主机名。第三个字段是您为虚拟服务器指定的那个 IP 地址。我在 freeVSD 文档中没有看到任何有关 IPv6 支持的信息,所以我不能确定您是否可以在 freeVSD 上使用 IPv6。IP 地址后的下一个字段是要分配的用户标识数目,最后一个字段是用来创建新虚拟服务器的 skel。这几项 必须按照正确的顺序输入。
要完成操作,请运行 vsd-vsbatch.pl 脚本,它也应该在 /usr/local/sbin 目录下。一旦完成了这一步,您的 /home/vsd/vs 目录下就会多出一个名为“virtual”的新目录,新目录的名称也可以是您为虚拟服务器选择的其它任何名称。
在创建了虚拟机器之后,您就可以使用 bevs 直接登录到虚拟机器了。您将以管理员用户的身份登录,然后就可以开始在虚拟环境中工作了。
管理虚拟服务器
freeVSD 的管理命令很多,我不会试图在这里一一赘述。在这一部分,我们将看看您需要了解的一些常用命令。您将在 /usr/local/sbin 中找到使用 freeVSD 的实用程序。
您可以使用一些基于 Web 和 基于 Windows 的 GUI 工具来管理 freeVSD,但是出于本文的目的,我将重点描述命令行工具。如果您希望了解 PHP Web 管理工具,您可以在 freeVSD Web 站点(请参阅 参考资料)找到相关的信息。
删除虚拟服务器。我们已经讨论了如何使用 vsdadm 来创建虚拟服务器。如果您已经决定要删除虚拟服务器,请使用 vs_delete 命令。它的语法如下所示:
# vsdadm vs_delete real.host.com virtual
请注意,您需要运行 vsd_vsbatch.pl 来进行修改。这将从 /home/vsd/vs 目录删除虚拟服务器的文件系统并关闭帐户。所以,如果您碰巧在虚拟服务器中有重要文件,在删除帐户之前就一定要将这些文件备份起来。