混合Windows和* nix环境 - “本地”后缀问题

时间:2009-11-15 15:16:04

标签: windows linux networking netbios

愚蠢的问题 - 提前道歉。

我有一个混合的Windows和Linux开发环境,服务器是Linux(Ubuntu)。假设服务器名为“myserver”。

我在Windows和* nix(Ubuntu和OS X)上开发,在* nix上引用myserver为'myserver.local',在Windows上引用'myserver'。

我有共享代码引用(例如MySQL连接字符串,HTTP远程引用等),我必须根据我所处的dev env进行更改,这很难。对于我的生活,我无法弄清楚如何强制Windows将'myserver.local'别名化为'myserver',让世界变得更美好。

有什么想法吗?

非常感谢, 奈德

3 个答案:

答案 0 :(得分:1)

/ system32中的某个地方是一个名为hosts的文件,您可以在其中输入您心脏内容的主机名,这些名称将由解析程序遵守。应该解决你的问题。

答案 1 :(得分:0)

Windows有一个hosts文件,您可以将其更改为myserver.local解析为127.0.0.1,与Linux相同。它隐藏在Windows\System32\drivers\etc\HOSTS中。但是,如果您总是希望使用本地服务器作为参考,那么为什么不简单地写localhost

通常,您应该将部署设置与应用程序区分开来,而不是共享它们。这取决于你当然在谈论什么语言/平台,但在我使用Python的情况下,我使用脚本来调用应用程序,如:

hostname= socket.gethostname()

if hostname=='devbox':
   def dbfactory():
       return MySQLdb.connect(db= 'myapp', user= 'foo', passwd= 'bar')
   myapp= mymodule.Application(dbfactory, debug= True)

elif hostname=='www':
   def dbfactory():
       return MySQLdb.connect(db= 'myapplive', unix_socket= '/usr/local/var/mysql/socket', user= 'baz')
   myapp= mymodule.Application(dbfactory, debug= False)

else:
    raise NotImplementedError('No known deployment config for machine %r' % hostname)

myapp.run()

答案 2 :(得分:0)

替代回答:

我曾遇到过类似的问题,并且厌倦了不得不一直重新配置我的应用程序。我的解决方案类似于bonince的建议:

我们的想法是让您的应用根据其位置进行不同的配置。不过,我不建议“嗅探”。我更喜欢更“官方”和“具体”的东西。也就是说,应该在两台机器上的同一位置找到一些数据,但内容不同。我想到了两种可能性:

  • 环境变量。它们在Java中被弃用,但它们在Linux和Windows下运行良好。如果您有权访问启动脚本,则可以设置您喜欢的任何内容,并从Java查询值。

  • 项目本身之外的属性/配置文件。我使用了一个名为/ local(linux)和C:\ Local(Windows)的目录来包含我想要特定于主机的配置。主目录也适用于这种事情;每个主机都有一个,Java通常知道如何/在哪里找到它。

相关问题