지역 Vagrant 상자에 대한 drush 별칭을 어떻게 작성합니까?


9

로컬 Vagrant 인스턴스에서 실행되는 Drupal 사이트에 연결하기 위해 간단한 drush 별칭을 작성하려고합니다.

파일이라는 파일에 다음이 있습니다 ~/.drush/l.aliases.drushrc.php.

$aliases['o'] = array(
  'parent' => 'l',
  'root' => '/vagrant/docroot',
  'remote-host' => '127.0.0.1',
  'remote-user' => 'vagrant',
  'ssh-options' => '-p 2222 -i ~/.vagrant.d/insecure_private_key',
  'uri' => '127.0.0.1:8080',
);

별명이 발견되었습니다. drush sa보고:

l
l.o

그러나 내가 drush @l.o status원격 호스트에 연결하지 않으면 :

PHP executable        :  /usr/local/bin/php
PHP configuration     :  /usr/local/etc/php/5.3/php.ini
PHP OS                :  Darwin
Drush version         :  6.1.0
Drush configuration   :

이 명령이 성공적으로 방랑자에 연결되어 있음을 확인했습니다.

ssh vagrant@127.0.0.1 -p 2222 -i ~/.vagrant.d/insecure_private_key

내가 알 수있는 한 디버깅 출력에는 SSH 명령이 표시되지 않습니다.

SIG-106:ilob justin$ drush --debug @l.o status
Bootstrap to phase 0. [0 sec, 3.78 MB]                               [bootstrap]
Drush bootstrap phase : _drush_bootstrap_drush() [0.01 sec, 3.98 MB] [bootstrap]
Loaded alias @l.o from file /Users/justin/.drush/l.aliases.drushrc.php [0.01 sec, 3.99 MB]                                                                        [notice]
Cache MISS cid: 6.1.0-commandfiles-0-807b6772846e18b2741e8d5b7119b4cc [0.01 sec, 4 MB]                                                                             [debug]
Cache SET cid: 6.1.0-commandfiles-0-807b6772846e18b2741e8d5b7119b4cc [0.01 sec, 4.02 MB]                                                                           [debug]
Bootstrap to phase 0. [0.05 sec, 9.56 MB]                                                                                                                      [bootstrap]
Found command: core-status (commandfile=core) [0.08 sec, 9.56 MB]                                                                                              [bootstrap]
Loading outputformat engine. [0.13 sec, 9.6 MB]                                                                                                                   [notice]
Calling hook drush_core_status [0.14 sec, 9.65 MB]                                                                                                                 [debug]
Returned from hook drush_core_status [0.14 sec, 9.66 MB]

나는 바보 같은 짓을해야한다는 것을 알고 있지만 그것을 볼 수는 없습니다.


무엇을 drush --debug @l.o status보여줍니까? 정확한 ssh 명령은 출력에 묻혀 있어야합니다.
mpdonadio

FWIW, 나는 항상 drush 옵션 대신 SSH 연결 정보를 설정하기 위해 .ssh / config를 사용합니다.
mpdonadio

흠, 디버그 출력에는 어떤 종류의 ssh 명령도 없습니다. 위에서 추가 된 디버그.
Justin

비 Vagrant이지만 원격의 별명이 작동합니까? '... SSH 된 invoke 백엔드'를 디버그 당신은 심지어 원격 연결 (당신이 '재발 dispatch를 통해 호출 프로세스를 시작합니다'라인이 시작 참조해야 시도하지 않았다 쇼를 게시
mpdonadio을

그렇습니다, 나는 많은 것을 가지고 있고 그들은 모두합니다.
Justin

답변:


6

다음 구성으로 drush alias를 사용할 수있었습니다.

두 가지를 가정 해 봅시다.

  • vagrant box에는 일종의 정적 ip가 있습니다 (예 : 192.168.56.101).

  • 방랑자의 IP는 기호 형식으로 제공됩니다 (예 : ip 및 호스트 이름을 가진 / etc / hosts에 단일 행이 있음). (예 : test.site.local).

1 단계 : vagrant ssh-config 명령으로 생성 된 설정을 $ HOME / .ssh / config에 복사해야합니다.

Host test.site.local
    IdentitiesOnly yes
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile [path to vagrant private insecure key]

2 단계 : 이러한 구성에서 내 별명은 다음과 같은 형식이었습니다.

$aliases['example'] = array(
   'root' => '/var/www',
   'uri' => 'test.site.local',
   'remote-host' => 'test.site.local',
   'remote-user' => 'vagrant',
   'ssh-options' => "-i path_to_insecure_private_key"
);

이것은 정말 좋은 해결책입니다. "vagrant ssh-config"를 사용한 별칭 파일에 ssh-options를 지정하지 않았습니다. 필요한 모든 것이 있습니다.
Angry Dan

내 경우에는 내가 지금처럼 설정 루트를 가지고 있지만이, 잘했다 '루트'=> '/ 방랑 / docroot에'
ognockocaten

/dev/null알려진 호스트 파일로 사용하면 drush가 실행될 때마다 경고가 발생합니다. HOME/.ssh/known_hosts_vagrant별도의 파일을 사용 하도록 지시합니다. 그런 다음 경고가 한 번만 표시됩니다.
Tim

3

캐릭터 ~는 Bash에 의해 확장됩니다. Drush는 동일한 서비스를 제공하지 않으므로 ~홈 디렉토리 경로로 바꿔야 합니다.

예를 들어,

$home = drush_server_home();
$aliases['o'] = array(
  'parent' => 'l',
  'root' => '/vagrant/docroot',
  'remote-host' => '127.0.0.1',
  'remote-user' => 'vagrant',
  'ssh-options' => "-p 2222 -i $home/.vagrant.d/insecure_private_key",
  'uri' => '127.0.0.1:8080',
);

그것은 테스트되지 않았지만 간단한 오타를 제외하고 작동해야합니다.

최신 정보:

여기에 Drush 버그가 있다고 생각합니다. Drush는 127.0.0.1이 로컬 시스템으로 돌아가고 있다고 가정하고 ssh-options에서 -p의 의미를 고려하더라도 ssh w / out을 사용하지 않기로 결정합니다. 이 문제를 해결하려면 Drush에 패치가 필요합니다. function drush_is_local_host()environment.inc .

GITHUB 문제 :

Github 문제에서 잠재적 수정 사항에 대한 의견을 적어주십시오. Drush 백엔드 호출은 로컬 대 원격을 결정할 때 포트 번호를 고려하지 않습니다 .


작동하지 않았습니다. 그러나 drush_server_home ()에 대해서는 몰랐습니다. 감사! 문제를 해결하고 있습니다.
Justin


3

난 그저 내에서 Drush에 대한 검사를 수행하여이 주위에있어 지역 settings.php 파일 을 통해 php_sapi_name() == 'cli'내 데이터베이스와 같은 방랑에 memcache에 연결 문자열을 업데이트 :

if (php_sapi_name() == 'cli') {
  $databases['default']['default']['port'] = '3307';

  $conf['memcache_servers'] = array(
    '127.0.0.1:11212' => 'default',
  );
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.