2013-05-15 3 views
4

Django를 프로덕션 MySQL 데이터베이스 (읽기 전용)에 연결하여 실제 데이터를 사용하여 분석 응용 프로그램을 테스트 할 수 있습니다.프록시 뒤에 DB에 Django 연결

django가 ssh 프록시를 통해 db에 연결되도록 지정하는 방법이 있습니까? 예를 들어 Sequel Pro에서 사용자 이름과 암호를 사용하여 특정 SSH 프록시를 통해 연결하도록 지정할 수 있습니까?

그렇다면 DATABASES 항목은 어떻게 생겼을까요?

+0

나는'ssh'를 터널링하는 것이 더 낫다고 생각합니다. 'settings.py'에서 프록시 데이터를 보지 못했습니다. –

+0

안녕하세요 파올로, 어떻게하면됩니까? 실제 db로 터널링되는 로컬 mysql 인스턴스를 생성합니까? 제안 된 것처럼 보이지만 구현 방법을 몰랐습니다. – mgojohn

+0

먼저 데이터베이스를 프록시로 사용하고 로컬 네트워크 외부에서 들어오는 연결을 수락 할 수 없습니까? 그렇다면 어떤 프록시가 있습니까? 일반 방화벽? iptables? 외부 연결을 거부하는 것? –

답변

13

SSH 터널링 만 사용하십시오. 작업을 쉽게하기 위해 ssh 연결이 자동으로 연결되어 있는지 자동으로 확인하고 연결이 끊어지면 다시 설정하는 autossh을 설치할 수 있습니다.

그런 다음 다음과 같은 명령을 사용하여 터널을 열 수 있습니다

autossh -f -N -L LocalPort:MySQLAddress:MySQLPort [email protected]_server 

을 여기서

  • your_server - 당신은 ssh를
  • your_login를 통해 연결할 서버 - your_server
  • 에 로그인
  • LocalPort - 장고가 실행중인 컴퓨터에서 사용되지 않는 포트. 이 포트는 터널에 사용됩니다.
  • MySQLAddress - MySQL은 다음

에서 수신 대기 포트 - 그것은

  • MySQLPort (즉, MySQL은 your_server에서 실행되는 경우는 127.0.0.1 될 것입니다) your_server에서 도달로 MySQL 서버의 주소 Django 설정에서 MySQL IP를 127.0.0.1으로 지정하고 포트를 위에서 설정 한 LocalPort으로 지정합니다.

    는 예 :이 명령을 실행하면

    autossh -f -N -L 10000:127.0.0.1:3306 [email protected] 
    

    , 당신은 그래서 당신은 로컬 호스트에 연결하는 경우 로컬 포트 ​​10000에 듣고 SSH 터널을해야합니다 : 10000, 연결은 로컬 호스트에 터널링 될 것입니다 : 3306을 192.168.1.3 서버에 설치하십시오.