如何在单台机器上管理/组合多台服务器?

时间:2014-02-19 20:52:45

标签: django apache flask virtualhost

TLDR: “真正的服务器”(Apache?Flask?Django?)是否能够统一可读子目录(abc.work.com/svn,abc.work.com/hg)背后的各种服务,而不是使用端口号(abc.work。 com:8000,abs.work.com:8001)?

长版: 在去年,我学会了如何使用Mongoose提供文件,运行最小的python web服务器,使用Subversion和Mercurial托管版本控制存储库,以及托管Trac问题跟踪器/项目管理框架。

在每种情况下,我一直在使用每个工具提供的简易内置网络服务器来从我的Windows 7笔记本电脑上工作(我是一名编码的工程师,实际上没有付钱成为“软件人” )。为了避免冲突,我在8000范围内使用了不同的端口号,供每个服务器监听,并发送我的同事链接,如http://machinename.domain.com:8042,以访问我创建的这些神奇的东西。

第一个明显的问题是我在命令提示符下运行了很多这些东西,只是让它在我的桌面上打开。我也知道如何从VBScript调用cmd.exe,以隐藏命令提示符,如果这是我想要的。许多内置的Web服务器甚至可以选择作为服务运行,它可以获得权限,但更接近于托管任何类型服务器的“正确”方式。

更大的问题是我正在向人们发送带有不同端口号的机器链接。我很好,他们不得不使用我的机器名称 - 我假设我需要网络管理员添加DNS条目称为TeamAwesome.company.com而不是machinename.company.com:8000?

更大的问题是,如果我做了类似Apache,Django或Flask网络服务器的事情,我可以像tranet服务器和machinename.company.com/hg/project1一样设置machinename.company.com/trac对于project1的HG存储库?我正在研究Apache,Django和Flask,因为我已经潜入Python 2年了,这些对我来说似乎是最适用/最平易近人的。

据我所知,理想情况下,这些东西应该托管在一个单独的linux-y服务器上,但是我需要证明我正在开发的工具在我向老板请求服务器资源之前的有用性(他雇用了我做工程,而不是编程,或Web开发,或系统管理等。)。

我看到this看起来很相关。是要查看http代理,虚拟主机,nginx和WebSockets吗?

Apache VirtualHost examples看起来很有希望,但如果其中一个例子真正实现了我所说的话,我就无法破译。感谢您提出任何建议,因为我带着这些东西走进了兔子洞!

2 个答案:

答案 0 :(得分:0)

只能通过侦听ip和/或端口号来区分Apache虚拟主机。 如果您希望/让这些服务单独运行,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

但是,如果您只想将不同的网址指向服务器上不相关的文件夹,请检查LocationAlias指令

答案 1 :(得分:0)

无需代理设置。您可以使用单个虚拟服务器,但在某个子目录下运行每个应用程序:例如,使用Django或其他wsgi应用程序,您只需将WSGIScriptAlias设置为相关目录。

一个很大的澄清:Django绝不是服务器。实际上,您需要Apache或等效的才能正确地为Django提供服务。