Heroku bash 셸에서 사용할 수있는 텍스트 편집기는 무엇입니까? [닫은]


120

Cedar 기반 Heroku 앱에서 httpd.conf를 업데이트하려고합니다. 나는 내 Heroku bash에 도착했다.

 heroku run bash

아파치 아래에서 conf dir을 찾았습니다. 그러나 vi, vim 또는 emacs 편집기를 열려고하면 이러한 프로그램을 찾을 수 없습니다. Heroku에서 conf 파일을 어떻게 편집합니까?


Emacs는 SSH를 통해 파일을 편집 할 수 있습니다 . : p

답변:


131

나는 최근에 원래의 요지heroku cli 플러그인 으로 바 꾸었습니다 .

다음을 설치하십시오.

heroku plugins:install https://github.com/naaman/heroku-vim

그리고 사용 :

heroku vim

heroku vim와 명령은 bash 쉘로 당신을 떨어질 것 vim당신에 설치 $PATH. 당신이해야 할 일은 heroku vim대신 손가락을 다시 입력하는 것입니다 heroku run bash.


5
@dwenaus dyno에서 vim을 사용하는 것은 문제 해결 도구 일뿐입니다. 실행중인 다이노에 연결할 수 없습니다. 또한 가능하더라도 ( 핵으로 할 수 있음 ) dyno 내부에서 변경 한 사항은 슬러그 내부에 유지되지 않습니다. 즉, 앱을 다시 시작하면 변경 한 내용이 손실됩니다 (24 시간마다).
Naaman Newbold 2014 년

4
@dwenaus 사용할 수있는 또 다른 문제 해결 도구는 PRODUCTION이 아닌 QA / 스테이징 앱에서 사용하는 것이 좋습니다 hbuild. git 커밋없이 소스 코드를 변경할 수 있으므로 git 히스토리를 망가 뜨리지 않고 Heroku에서 작업을 시도 할 수 있습니다.
Naaman Newbold 2014 년

5
git 히스토리를 엉망으로 만드는 또 다른 방법은 브랜치에서 작업하고 마스터로 병합하기 전에 나중에 정리하는 것입니다. 분기 이름이이면 다음 debug-heroku과 같이 배포 git push heroku debug-heroku:master합니다..
Zubin

8
이것이 더 이상 작동하는지 확실하지 않습니다. yarn은 '커밋 해시없이 HTTPS를 통해 git repo 다운로드 거부 ....-인증서 오류 가능성이 있습니까?'로 종료됩니다.
Tim Malone

3
이 답변은 더 이상 런타임에 사용할 수 없으므로heroku-16 스택에서 더 이상 작동 하지 않습니다libxt . @funkenstrahlen
Jonah H.

64

플러그인을 엉망으로 만들고 싶지 않고 일회용 dyno에서 nano 사본을 원하면 실행하십시오.

mkdir /app/nano
curl https://github.com/Ehryk/heroku-nano/raw/master/heroku-nano-2.5.1/nano.tar.gz --location --silent | tar xz -C /app/nano
export PATH=$PATH:/app/nano

플러그인 에서 nano 사본을 다운로드 하여 PATH에 넣습니다.


3
완전한. 필요에 따라 지금은 CONFIGS을 편집 할 수 있습니다
펠리페

4
작동하지 않는 것 같습니다. nano를 실행하면 오류가 발생합니다Error opening terminal: unknown.
Lewy Blue

@looeee 여전히 나를 위해 일하고 있습니다. 혹시 새로운 heroku-18 스택에 있습니까?
James

Dokku에서도 일하고 ​​있습니다. 감사합니다 @ 제임스
judasane


22

한 세션 동안 vim을 다운로드하고 설치할 수있는 것 같습니다.

#!/usr/bin/env bash
curl https://s3.amazonaws.com/heroku-jvm-buildpack-vi/vim-7.3.tar.gz --output vim.tar.gz
mkdir vim && tar xzvf vim.tar.gz -C vim
export PATH=$PATH:/app/vim/bin

이 아이디어는 여기 에서 발견 되었습니다 .


내가 필요한 것만! 명령을 편집하고 실행했습니다. 이제 heroku는 밤새 변경 사항을 제거 할 수 있습니다. 작업을 완료했습니다!
mika

1
더 많은 최신 스크립트보기 gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e
nilfalse

15

vi파일 시스템이 일시적이기 때문에 파일을 편집 할 수 있다고해도 문제가 해결되지 않을 것입니다. 의미 ...을 통해 파일을 편집하면 heroku run bash실제로 다른 dyno에 대한 파일을 변경하는 것이 아닙니다. 모든 dyno의 파일을 변경하려면 Git 리포지토리에서 푸시하는 내용을 변경하거나 빌드 팩을 변경해야합니다. 자세한 내용 :
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos


21
에서 환경을 디버깅하고 heroku run bash싶으므로 vi / vim이 매우 유용 할 것입니다.
Brian Takita 2013 년

3
이제 .NET을 사용하여 실제 다이노에 연결할 수 있습니다 heroku ps:exec.
Nicholas Morley

@NicholasMorley 할 수 있지만 파일에서 사이트 / 앱 알림을 변경하려면 어떻게해야합니까?
x-yuri

@ x-yuri Heroku에서는 그렇게 할 수 없습니다. 변경하려면 앱을 다시 배포해야합니다.
James Ward

실제로 할 수 있습니다. 사이트를 실행하는 dyno를 가져 와서 ssh ( heroku ps:exec), 파일 변경, 서버의 두 번째 인스턴스 시작, 포트를 dyno ( heroku ps:forward 3000) 로 전달할 수 있습니다. 그런 다음 curl localhost:3000.
x-yuri



6

Heroku에서 디버깅

다이노 준비

설치 후 naaman/heroku-vim다음을 통해 새 임시 다이노를 만들 수 있습니다.heroku vim . 다른 게시물에서 올바르게 지적했듯이 변경 사항이 전파되지 않기 때문에 브라우저를 통해 볼 때 변경 사항을 볼 수 없지만 실제로 dyno 자체 내부에서 변경 사항을 볼 수 있습니다.

저는 curl을 통해 "브라우징"만 실험 해 보았지만 lynx거기에 가거나 ssh 터널을 얻을 수 있다면 정말 좋을 수 있습니다.

서버 시작

heroku-vim을 인스턴스화 할 때 웹 서버가 실행되지 않으므로 직접 수행해야합니다. 내 예에서는 php를 실행하고 있습니다.

~ $ cat Procfile
web: vendor/bin/heroku-php-apache2

이 명령을 직접 시작할 수 있습니다!

~ $ vendor/bin/heroku-php-apache2 2>/dev/null &
[2] 845

이제 백그라운드에서 실행 중입니다!

웹 사이트 컬

Dynos는 임의의 포트에서 시작됩니다. 운 좋게도 $PORT변수 이기 때문에 어느 것을 알고 있습니다 !

~ $ curl localhost:$PORT
Hello World!

편집

지금 vim 작업을 수행하십시오. 그러나 파일을 저장하고 다시 말리면 변경 사항을 볼 수 없습니다. 캐시 된 위치를 이해하지 못하지만 캐시되었습니다. 서버를 종료하고 다시 시작해야합니다.

서버 다시 시작

  1. 프로세스 ID 찾기

    ~ $ ps -f
    UID        PID  PPID  C STIME TTY          TIME CMD
    u6897        3     1  0 05:34 ?        00:00:00 bash
    u6897      582     3  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2
    u6897      652   582  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2
    u6897      653   582  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2

    여기 582에 부모 ID가 있습니다.

    kill 582
    
  2. 1 초만 기다린 다음 서버를 다시 시작하십시오 (새 프로세스 ID를 얻게됩니다!). 동일한 명령을 통해 컬링하면 이제 업데이트 된 페이지가 제공됩니다.


실제로 포트를 전달하고 대신 브라우저를 사용할 수 있습니다 curl.
x-yuri

5

Heroku에서 파일을 편집하는 긴급한 대안 :

  1. 일부 원격 호스트에 복사본을 배치하십시오. 나는 Gist를 사용하고 싶다
  2. Gist에서 파일을 편집하고 완료되면 원시 URL을 가져옵니다.
  3. wget Heroku bash의 원시 URL
  4. 가져온 파일을 원본 파일의 경로에 복사

플러그인이 필요하지 않기 때문에이 솔루션이 한 번만 필요하다고 생각합니다.
Stéphane

2

Nano 또는 Vim을 사용하여 Heroku Dynos에서 파일을 편집하는 방법 에 대한 전체 기사를 작성 했지만 기본적으로 다음과 같습니다.

  • 명령 줄을 사용할 수 있습니다.

    curl https://s3.amazonaws.com/heroku-jvm-buildpack-vi/vim-7.3.tar.gz --output vim.tar.gz mkdir vim && tar xzvf vim.tar.gz -C vim export PATH=$PATH:/app/vim/bin

  • Heroku 플러그인을 사용할 수 있습니다 : heroku-vim
  • Heroku 빌드 팩을 사용할 수 있습니다 : heroku-buildpack-vip

도움이 되었기를 바랍니다.


플러그인이 작동하지 않았습니다 vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory.. 그러나 빌드 팩은 작동했습니다.
x-yuri

2

파일 내용 만 보려면 다음을 수행하십시오.

  1. 파일이있는 폴더로 이동합니다. 예 : $ cd folder
  2. cat 명령 + 파일 이름을 실행하십시오. $ cat filename.csv


0

서버에서 php를 실행하는 경우 다른 방법은 PHP 파일 관리자를 업로드하는 것입니다. 단일 파일이며 다음에서 다운로드 할 수 있습니다.

http://phpfm.sourceforge.net/


0

dyno에서 파일을 변경하고 Heroku로 푸시하지 않고도 결과를 볼 수 있습니다.

  1. heroku-buildpack-vim빌드 팩 설치 :

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. dyno에 Ssh :

    $ heroku ps:exec
    
  3. start.sh를 만들고 실행합니다.

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. 포워드 포트 4000 (두 번째 콘솔) :

    $ heroku ps:forward
    
  5. localhost:4000브라우저에서 엽니 다 .

  6. 중지 start.sh, 파일 변경, 다시 시작, 브라우저 페이지 새로 고침.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.