愚蠢的问题 - 提前道歉。
我有一个混合的Windows和Linux开发环境,服务器是Linux(Ubuntu)。假设服务器名为“myserver”。
我在Windows和* nix(Ubuntu和OS X)上开发,在* nix上引用myserver为'myserver.local',在Windows上引用'myserver'。
我有共享代码引用(例如MySQL连接字符串,HTTP远程引用等),我必须根据我所处的dev env进行更改,这很难。对于我的生活,我无法弄清楚如何强制Windows将'myserver.local'别名化为'myserver',让世界变得更美好。
有什么想法吗?
非常感谢, 奈德
答案 0 :(得分:1)
答案 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通常知道如何/在哪里找到它。