如何在单台机器上管理/组合多台服务器?
Posted
技术标签:
【中文标题】如何在单台机器上管理/组合多台服务器?【英文标题】:How to manage/combine multiple servers on single machine? 【发布时间】:2014-03-20 11:23:12 【问题描述】:TLDR: “真正的服务器”(Apache?Flask?Django?)是否能够统一可读子目录(abc.work.com/svn、abc.work.com/hg)后面的各种服务,而不是使用端口号(abc.work.com/hg)。 com:8000, abs.work.com:8001)?
长版: 在过去的一年里,我学会了如何使用 Mongoose 提供文件,运行一个最小的 Python 网络服务器,使用 Subversion 和 Mercurial 托管版本控制存储库,以及托管一个 Trac 问题跟踪器/项目管理框架。
在每种情况下,我一直在使用每个工具提供的简单内置网络服务器在工作时从我的 Windows 7 笔记本电脑托管它(我是一名编码工程师,实际上并没有付钱成为一名“软件人” )。为了避免冲突,我为每个服务器使用了 8000 范围内的不同端口号来监听,并向我的同事发送了http://machinename.domain.com:8042 之类的链接来访问我创建的这些神奇的东西。
第一个明显的问题是我在命令提示符下运行了很多这些东西,只是让它在我的桌面上打开。我也知道如何从 VBScript 调用 cmd.exe 以隐藏命令提示符(如果这就是我想要的)。许多内置的网络服务器甚至具有作为服务运行的选项,这可能会因权限而变得困难,但更接近于托管任何类型的服务器的“正确”方式。
更大的问题是我用不同的端口号向我的机器发送链接。我同意他们必须使用我的机器名称 - 我假设我需要网络管理员添加一个 DNS 条目以将其命名为 TeamAwesome.company.com 而不是 machinename.company.com:8000?
更大的问题是,如果我做了一些花哨的东西,比如 Apache、Django 或 Flask 网络服务器,我是否可以像 machinename.company.com/trac 一样为 trac 服务器和 machinename.company.com/hg/project1 设置它对于 project1 的 HG 存储库?我正在研究 Apache、Django 和 Flask,因为我已经潜入 Python 2 年了,它们似乎最适合我的需求。
我知道理想情况下,这些东西应该托管在单独的 linux-y 服务器机器上,但我需要证明我正在开发的工具的有用性,然后再向我的老板(他雇用我做工程,而不是编程,或网络开发,或系统管理等)。
我看到this 看起来很相关。 http 代理、虚拟主机、nginx 和 WebSockets 有什么值得关注的吗?
查看Apache VirtualHost examples 看起来很有希望,但我无法解读其中一个示例是否真的符合我所说的。感谢您在我用这些东西进一步深入兔子洞时提出的任何建议!
【问题讨论】:
【参考方案1】:Apache 虚拟主机只能通过监听 ip 和/或端口号来区分。 如果您希望/让这些服务也单独运行,mod_proxy 模块可以做您想做的事情:
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
ProxyPass /folder_a http://backend_a:1234/ retry=5
ProxyPass /folder_b http://backend_b:8888/ retry=5
# etc
但是,如果您只想将不同的 url 指向服务器上不相关的文件夹,请检查 Location 和 Alias
指令
【讨论】:
【参考方案2】:无需代理设置。您可以使用单个虚拟服务器,但在某个子目录下运行每个应用程序:例如,对于 Django 或其他 wsgi 应用程序,您只需将 WSGIScriptAlias 设置为相关目录。
不过,有一个重要的说明:Django 绝不是服务器。事实上,您需要 Apache 或同等产品才能正确地为 Django 提供服务。
【讨论】:
我想我明白你的意思,如果我的 wsgi 应用程序是一个 python 模块或者可以在查询给定子目录时调用的东西,但是如果我的应用程序是在某个端口上运行的另一台服务器呢?存储库、网络服务器等所有服务器服务都可以作为 wsgi 应用程序存在吗?即使我可以将一些服务直接绑定到网络服务器,我仍然希望能够提供类似文件夹的访问权限,以访问在本地端口上单独提供的内容,因为这听起来很有用。还是我没有抓住重点?以上是关于如何在单台机器上管理/组合多台服务器?的主要内容,如果未能解决你的问题,请参考以下文章