在过去的 6 到 8 个月里,我一直在使用 .NET。我了解了 Web 服务(尽管我不是专家),最近我对 Web 服务器产生了浓厚的兴趣,我真的很想建立自己的服务器。我有一台运行 Windows Server 2008 的旧台式计算机,但我住在宿舍里,没有静态 IP。我知道有解决方案,但我想先更好地了解我在做什么。我想设置的是一台多用途服务器,可以用来托管网站/Android 应用程序。
我听说 LAMP 服务器比 Windows/IIS 服务器更具可定制性(因此通常更高效)。这是真的吗?由于 Apache 如此普遍,我真的很想更多地了解它的工作原理,并真正学习如何使用它。唯一让我对采用 LAMP 路线感到紧张的是命令行(我 19 岁,在 GUI 的环境中长大)。我以前使用过 unix 命令行,并且熟悉基本命令/文件系统导航,但从命令行配置诸如 Web 服务器之类的东西让我头晕目眩。我可以获得几乎所有 Microsoft 软件的免费副本(必须喜欢做学生),但我不想仅仅为了 GUI 而牺牲我对 Web 服务器的理解。
有什么建议吗?我担心使用 Windows 会让我永远无法真正理解 Web 服务器,因为一切都会为我封装和简化。我还想知道一台出色而高效的服务器需要什么。有什么建议/书籍/资源推荐吗?
答案1
您选择的平台(Windows IIS、Linux 和 Apache)主要取决于您的需求。目前,您的需求基本上不存在,因为您只是设置一个 Web 服务器来试用。选择与您的长期目标最相关的技术堆栈(由于您已经使用过 .NET,因此可能会选择 Windows IIS)并使用它、深入研究和学习它。
使用 LAMP 堆栈并不会本质上让您成为超级管理员(就 LAMP 而言可能是超级管理员...),使用 IIS 也不会本质上让您成为超级管理员"never really understand web servers because everything would always be encapsulated and simplified for me"
。
你想学习多少以及你想理解多少给定的技术,很大程度上取决于你的兴趣和动机,而不是技术本身。
答案2
您想设置一个 Web 服务器吗?那就去做吧。这不需要花一年时间去学习,您可以在几分钟内运行 IIS,并在一两个小时内在虚拟机中安装 Linux 并使用 Apache 配置。
从命令行配置 Apache 大致意味着“yum install apache”,然后“使用文本编辑器编辑 /etc/httpd/httpd.conf”(特定于 Linux 发行版)。它不是一串庞大的控制台命令来更改大量设置。
我听说 LAMP 服务器更具可定制性(因此通常更高效)
这并不合理。更可定制,是的,更高效,完全取决于你对“高效”的定义。LAMP 中的 P 通常指“PHP、Perl、Python、(Ruby)”,如果你声称它们比 IIS/ASP.Net 更高效,你会遭到一些争论。
如果您想要一个轻量级(快速、高效?)的网络服务器,nginx 更值得一看。
对于该走哪条路,有什么建议吗?我担心使用 Windows 会让我永远无法真正理解 Web 服务器,因为一切都会为我封装和简化。
什么,没有人知道 IIS 是如何工作的?
我还想知道如何才能打造出一台出色而高效的服务器。
StackOverflow(Serverfault.com 及其朋友)在 Windows/ASP.Net/SQL Server 上运行,并且网络上有一些关于他们如何实现它的有趣帖子(例如http://highscalability.com/blog/2009/8/5/stack-overflow-architecture.html)
答案3
根据您所寻求的理解水平,有几种方法可以解决这个问题。
为了全面深入地理解,请仔细研究代码。显然,你需要一些高超的技能才能做到这一点。
否则,最好的学习方式就是阅读和尝试。以不同的配置建立网站。免费为一些朋友的网站提供托管服务(只要确保他们知道这是实验性的),托管一些你自己的网站。尝试不同的功能。阅读在线文档。在图书馆随便拿一本关于该主题的书,在通勤时阅读。
此外,Windows Web 服务器还具有一些非常高级的功能。认为 LAMP 必然具有更大的可定制性并不总是正确的。我自己是 Linux 用户,但我见过 Windows 用户使用 IIS 做非常高级的事情。使用 GUI 可以消除 1337-command-line-mad-skills 的印象,但请记住,这可能只是一种印象。
举个例子,据我所知,Stack Exchange 网络(包括这个网站)是在 Windows Web 服务器上运行的。这表明你可以用 Windows 做很多事情。
答案4
如果你学习并使用LAMP,你会比学习Windows+IIS更能理解各种技术。