2009-11-15 2 views
0

어리석은 질문 - 사과드립니다.혼합 된 Windows 및 * nix 환경 - 'local'접미사 문제

Windows와 Linux가 혼합 된 환경이 있고이 서버는 Linux (Ubuntu)입니다. 서버가 'myserver'라고 가정 해 봅시다.

Windows 및 * nix (Ubuntu 및 OS X)에서 개발되었으며 * nix에서는 myserver.local, Windows에서는 'myserver'로 참조됩니다.

나는 dev env가 어떤 것인가에 따라 변경해야하는 코드 참조 (예 : MySQL 연결 문자열, HTTP 원격 참조 등)를 공유했습니다. 이는 어떤 견해입니다. 내 인생에서 나는 'myserver.local'에서 'myserver'로 별명을 지정하고 Windows를 더 나은 곳으로 만드는 방법을 배울 수 없습니다.

아이디어가 있으십니까?

많은 감사, 네드/system32를에

답변

1

곳은 당신의 마음의 콘텐츠를 호스트 이름을 입력 할 수 있습니다라는 호스트가, 그 이름은 리졸버에 의해 존중하는 파일입니다. 문제를 해결해야합니다.

+0

나는 호스트가 ip 별칭에 불과하다고 생각 했습니까? 시도해 보겠습니다 ... 고마워! –

+0

MySQL URL의 시작 부분 근처에있는 것이 바로 그것입니다. MySQL이 어떻게 통신한다고 생각하십니까? ;) –

+0

그건 내가 의미하는 것이 아닙니다 ...내 모든 상자에 동적 IP를 사용하고 있기 때문에 모든 다양한 서비스 (MySQL, 몇 개의 Tomcat 인스턴스, ㅋ ㅋ)는 'http : \\ myservername.local : 8080'등으로 액세스 할 수 있습니다. 그러나 Windows에서 서비스 (또는 MySQL 또는 기타)를 사용하는 경우 'http : \\ myservername : 8080'에 코드를 엉망으로 만들 필요가 있습니다. 내가 말하는 호스트 항목을 만들 수있는 경우 : 127.0.0.1 localhost를 다음 myservername의 myservername.local 모든 좋은,하지만 난 당신이 할 수 있다고 생각하지 않았다. 방금 시도했는데 제대로 작동하지 않았지만 바보 같은 일을했을 수도 있으므로 확인하는 중입니다 ... 도움을 주셔서 감사합니다. –

0

Windows에 hosts 파일이 있으면 myserver.local으로 변경하여 127.0.0.1으로 변경할 수 있습니다. 이는 Linux와 동일합니다. 그냥 Windows\System32\drivers\etc\HOSTS에 숨겨져 있습니다. 그러나 항상 로컬 서버를 참조 용으로 사용하려는 경우 localhost을 쓰지 않는 이유는 무엇입니까?

일반적으로 배포 설정을 공유하지 않고 응용 프로그램과 차별화해야합니다. 그것은 당신이 과정에 대해 얘기하고 어떤 언어/플랫폼에 달려 있지만, 파이썬을 사용하여 내 경우에는 내가 좋아하는 응용 프로그램 무언가를 호출하는 스크립트를 사용

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() 
+0

답장을 보내 주셔서 감사합니다. 위의 의견을 참조하십시오. 이것은 로컬 호스트가 아닙니다. 저에게 여러 가지 서비스를 운영하는 서버가 몇 개 있습니다. 이것은 코드를 소비합니다. 예 - 내 구성이 완전히 분리되어있어서 관리가 불가능하지 않습니다. (업데이트가 완료되면 Windows에서 구성 파일을 체크 아웃하고 '참조 .local'문자열을 모두 제거한 다음 다시 체크인하지 마십시오). –

+0

그래, 내가 dev에 및 프로덕션 구성을 모두 체크하고, 애플 리케이션이 어떤 기계에 대한 냄새 맡는하여 사용하도록 결정하는 것이 좋습니다. – bobince

+0

이것은 정확히 동일한 dev 설정입니다. Windows와 Linux가 네트워크 내에서 서버 이름을 확인하는 방식의 성가신 차이 때문입니다. Windows는 http : \\ servername : port 형식을 원하고 * nix는 http : \\ servername.local : port를 원합니다. 그래서 저는 Windows 용 '.local'비트에서 앨리어싱을 생각하고있었습니다. –

0

대체 답 : 나는 한 번했다

비슷한 문제가 내 애플 리케이션을 항상 재구성해야하는 것에 지쳤다. 거기에 내 솔루션은 고의가 제안하는 것과 유사했다 :

아이디어는 귀하의 애플 리케이션이 다른 위치에 따라 구성하게하는 것입니다. 그래도 나는 "스니핑"을 권하고 싶지 않습니다. 나는 좀 더 "공식적인"것과 "특정한"것을 선호 할 것이다. 지혜롭게 말하자면 두 기계의 같은 위치에서 다른 내용으로 데이터를 찾아야합니다. 두 가지 가능성이 염두에 있습니다.

  • 환경 변수. Java에서는 더 이상 사용되지 않지만 Linux와 Windows에서는 잘 작동합니다. 시작 스크립트에 대한 액세스 권한이 있으면 원하는대로 설정할 수 있으며 Java에서 값을 쿼리 할 수 ​​있습니다.

  • 프로젝트 외부의 속성/구성 파일./local (linux) 및 C : \ Local (Windows)라는 디렉토리를 사용하여 특정 호스트가되고 싶었던 구성 비트와 구성을 포함 시켰습니다. 홈 디렉토리는 이런 종류의 일에도 잘 작동합니다. 모든 호스트에는 하나가 있으며, Java는 일반적으로 어떻게/어디에서 찾을 수 있는지 알고 있습니다.