0

愚蠢的问题 - 提前道歉。

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

我在 Windows 和 *nix(Ubuntu 和 OS X)上都进行开发,在 *nix 上将 myserver 称为“myserver.local”,在 Windows 上将其称为“myserver”。

我有共享代码引用(例如 MySQL 连接字符串、HTTP 远程处理引用等),我必须根据我所在的开发环境进行更改,这很疯狂。对于我的生活,我无法弄清楚如何强制 Windows 将“myserver.local”别名为“myserver”并让世界变得更美好。

有任何想法吗?

非常感谢,内德

4

3 回答 3

1

/system32 中的某处是一个名为 hosts 的文件,您可以在其中输入主机名到您心中的内容,这些名称将被解析器尊重。应该解决你的问题。

于 2009-11-15T15:20:32.357 回答
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()
于 2009-11-15T15:31:52.500 回答
0

替代答案:

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

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

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

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

于 2009-11-15T19:10:21.497 回答