我正在为家庭成员构建一个 Web 应用程序,并且我需要学习 Linux 管理,因为我将自己设置服务器。
我听说过很多服务器虚拟化,但我有一个非常基本的问题:
我为什么要这么做?
我的意思是,我已经可以直接在 上安装我需要的一切Ubuntu 12.04
,为什么创建某种虚拟机来在其上运行另一台服务器是个好主意。
例如,我可能需要安装类似 virtualbox 的东西,然后在其上运行 lamp?
那么其他服务,例如 SSH、FTP 等,可以直接安装到 Ubuntu 吗?或者(如果我使用虚拟化)为它们每一个都创建虚拟机吗?
我一直在搜索,但我无法弄清楚,因为大多数文章都很高级,但我只想对这个概念有一个基本的了解。
感谢大家的回答,我对此很陌生。
干杯!
答案1
在这个特定的用例中,进行虚拟化没有任何意义。在我拥有专用的机器之前,我曾经在 Windows 上运行过 ubuntu 服务器虚拟机,如果你运行的是 Linux 系统,那么就没有必要单独运行它们。不过,在某些情况下,你可能需要考虑虚拟化
你不知道自己在做什么——好的虚拟机软件会让你做快照(也就是说,如果你搞砸了,你可以将虚拟机回滚到以前的状态)或克隆
您需要向用户授予更多您认为合适的权利 - 您可以让用户处于 chroot jail 中,或者处于不会尝试虚拟化整个系统的较轻的“容器”VM 中,但完整的 VM 也可以在这里工作。
您拥有大量 IP 地址,并且需要在同一端口上运行多台服务器。容器类型的虚拟化在这里也适用,或者您可以在 VM 主机上运行操作系统的单独实例。但这里并非如此。
当您问“我为什么要这样做?”时,最好只在服务器上运行您需要的东西 - 如果您在想“也许我需要一个可以承受错误并且不会弄乱主系统的环境”,那么您需要查看虚拟机。
答案2
除了 intelis 答案之外,还有几个其他原因需要考虑(至少在 KVM 下)
稳定性增强。我在一台机器上运行多个虚拟机,有时,某个服务会导致虚拟机崩溃(内存问题)。这些问题仅限于这台虚拟机,因此其余服务可以继续运行而不会中断。
安全性更高。通过虚拟化各种服务,运行 1 组服务的服务器受到攻击不会危及整个系统,即攻击仅限于虚拟机。
资源控制——我可以通过虚拟化来限制特定系统的滥用和资源利用率。
抽象 - 通过虚拟化我的机器,我可以在机器之间迁移它们,从而提供对各种故障的稳健性和更高的正常运行时间。我也不太依赖硬件细节,因为一些关键驱动程序(首先是磁盘、网络)是虚拟化的,所以即使底层硬件发生变化(在限制范围内),虚拟机仍将正常工作而无需修改。
答案3
如果您在一台机器上运行多个应用程序并希望使用隔离环境,您才真正需要可视化,如果您为家庭成员设置 Web 应用程序,您可以设置一个标准的 Linux 机器,在非 root 帐户上部署网站并授予家庭成员访问该帐户的权限,而无需 sudo 访问权限。SSH/FTP 登录将明确链接到他们的帐户。
如果你想使用虚拟机在本地复制生产环境,可以看看 docker,它很棒
注意不要使用 FTP,它不安全
使用较新的 ubuntu LTS 服务器,如 14 或 16