มีโปรแกรมแก้ไขข้อความอะไรบ้างใน Heroku bash shell [ปิด]


120

ฉันพยายามอัปเดต httpd.conf ในแอป Heroku ที่ใช้ Cedar ฉันไปที่ Heroku ทุบตีด้วย

 heroku run bash

และพบ Conf dir ภายใต้ apache แต่เมื่อฉันพยายามเปิดโปรแกรมแก้ไข vi, vim หรือ emac ใด ๆ ฉันไม่พบโปรแกรมเหล่านี้เลย คุณแก้ไขไฟล์ conf บน Heroku ได้อย่างไร?


คำตอบ:


131

ฉันเพิ่งหันเค้าเดิมเป็นHeroku CLI ปลั๊กอิน

เพียงแค่ติดตั้ง:

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

และใช้:

heroku vim

heroku vimคำสั่งจะวางคุณลงในเปลือกทุบตีด้วยการติดตั้งบนของคุณvim $PATHทั้งหมดที่คุณต้องทำคือการรีเทรนนิ้วมือของคุณที่จะพิมพ์แทนheroku vimheroku run bash


5
@dwenaus การใช้ vim ใน dyno เป็นเพียงเครื่องมือแก้ไขปัญหา ไม่สามารถเชื่อมต่อกับ dyno ที่กำลังทำงานอยู่ได้ นอกจากนี้แม้ว่าคุณจะทำได้ (คุณสามารถทำได้ด้วยการแฮ็ก ) การเปลี่ยนแปลงที่คุณทำใน dyno จะไม่คงอยู่ในกระสุนของคุณ กล่าวคือการเปลี่ยนแปลงใด ๆ ที่คุณทำจะหายไปเมื่อแอปของคุณเริ่มต้นใหม่ (ทุก 24 ชั่วโมง)
Naaman Newbold

4
@dwenaus เครื่องมือแก้ไขปัญหาอื่นที่คุณสามารถใช้ - และฉันขอแนะนำให้ใช้นี้บน QA / การแสดงละครปพลิเคชันการผลิตไม่ - hbuildถูก ช่วยให้คุณสามารถเปลี่ยนซอร์สโค้ดของคุณได้โดยไม่ต้องคอมไพล์ดังนั้นคุณสามารถทดลองใช้งานบน Heroku ได้โดยไม่ต้องปิดบังประวัติคอมไพล์ของคุณ
Naaman Newbold

5
อีกวิธีหนึ่งในการหลีกเลี่ยงการทำให้ประวัติคอมไพล์ยุ่งคือการทำงานในสาขาและล้างข้อมูลในภายหลังก่อนที่จะรวมเข้าเป็นหลัก หากสาขาของคุณเป็นชื่อปรับใช้เช่นนี้debug-heroku git push heroku debug-heroku:master
Zubin

8
ไม่แน่ใจว่าจะใช้งานได้อีกต่อไป - เส้นด้ายออกพร้อมกับ "ปฏิเสธที่จะดาวน์โหลด git repo .... ผ่าน HTTPS โดยไม่ต้องแฮชคอมมิต - ข้อผิดพลาดใบรับรองที่เป็นไปได้หรือไม่"
Tim Malone

3
คำตอบนี้ไม่ได้ทำงานร่วมกับheroku-16สแต็คในขณะที่มันไม่ได้มีความlibxtพร้อมใช้งานที่รันไทม์ @funkenstrahlen
Jonah H.

64

หากคุณไม่ต้องการยุ่งกับปลั๊กอินและต้องการเพียงแค่สำเนานาโนในไดโนแบบครั้งเดียวของคุณให้เรียกใช้

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
สมบูรณ์ ตอนนี้ฉันสามารถแก้ไขการกำหนดค่าได้ตามต้องการ
เฟลิเป้

4
ดูเหมือนจะไม่ทำงาน - การรัน nano ทำให้เกิดข้อผิดพลาดError opening terminal: unknown.
Lewy Blue

@looeee ทำงานให้ฉันยัง. คุณอยู่ในกอง Heroku-18 ใหม่โดยบังเอิญหรือไม่?
James

ทำงานแม้กระทั่งด๊อกกุ ขอบคุณ
@James


22

ดูเหมือนว่าคุณสามารถดาวน์โหลดและติดตั้งกลุ่มสำหรับหนึ่งเซสชัน:

#!/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 สามารถลบการเปลี่ยนแปลงของฉันได้ในตอนกลางคืนฉันทำงานเสร็จแล้ว!
กะ


15

แม้ว่าคุณจะสามารถแก้ไขไฟล์ได้โดยviอาจไม่สามารถแก้ปัญหาของคุณได้เนื่องจากระบบไฟล์เป็นแบบชั่วคราว ความหมาย ... หากคุณแก้ไขไฟล์โดยheroku run bashคุณไม่ได้เปลี่ยนไฟล์สำหรับ dynos อื่น ๆ ในการเปลี่ยนไฟล์สำหรับ dynos ทั้งหมดคุณต้องเปลี่ยนสิ่งที่คุณพุชใน Git repo หรือเปลี่ยน buildpack รายละเอียดเพิ่มเติม:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos


21
ฉันต้องการแก้ไขข้อบกพร่องของสภาพแวดล้อมheroku run bashดังนั้น vi / vim จะมีประโยชน์มากสำหรับฉัน
Brian Takita

3
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

เตรียม dyno

หลังจากติดตั้งแล้ว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!

การแก้ไข

ทำสิ่งที่เป็นกลุ่มของคุณตอนนี้ แต่เมื่อคุณบันทึกไฟล์และขดอีกครั้งคุณจะไม่เห็นการเปลี่ยนแปลง ฉันไม่เข้าใจว่ามันแคชที่ไหน แต่มันถูกแคชไว้ คุณต้องฆ่าเซิร์ฟเวอร์และรีสตาร์ท

รีสตาร์ทเซิร์ฟเวอร์

  1. ค้นหารหัสกระบวนการ

    ~ $ 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คือรหัสหลัก - ใช้สิ่งนั้น

    kill 582
    
  2. รอเพียง 1 วินาทีจากนั้นเริ่มเซิร์ฟเวอร์อีกครั้ง (คุณจะได้รับรหัสกระบวนการใหม่!) การโค้งงอด้วยคำสั่งเดียวกันจะทำให้คุณได้รับหน้าอัปเดต


คุณสามารถส่งต่อพอร์ตและใช้เบราว์เซอร์ของคุณแทนcurlได้
x-yuri

5

ทางเลือกเร่งด่วนในการแก้ไขไฟล์ใน Heroku:

  1. วางสำเนาไว้บนโฮสต์ระยะไกลบางตัว ฉันชอบใช้ Gist
  2. แก้ไขไฟล์ใน Gist และเมื่อเสร็จแล้วรับ URL ดิบไป
  3. wget URL ดิบบน Heroku bash ของคุณ
  4. คัดลอกไฟล์ที่ดึงไปยังเส้นทางของไฟล์ต้นฉบับ

ฉันพบว่าโซลูชันนี้สมบูรณ์แบบสำหรับความต้องการเพียงครั้งเดียวเนื่องจากไม่จำเป็นต้องใช้ปลั๊กอิน
Stéphane

2

ฉันเขียนบทความฉบับสมบูรณ์เกี่ยวกับวิธีแก้ไขไฟล์บน Heroku Dynos โดยใช้ Nano หรือ Vimแต่โดยพื้นฐานแล้ว:

  • คุณสามารถใช้บรรทัดคำสั่ง:

    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 Plugins: heroku-vim
  • คุณสามารถใช้ Heroku Buildpacks: heroku-buildpack-vip

หวังว่าจะช่วยได้!


ปลั๊กอินไม่ทำงานสำหรับฉัน: vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. แต่ buildpack ใช้งานได้
x-yuri

2

หากคุณต้องการเพียงแค่ดูเนื้อหาของไฟล์แล้ว:

  1. cd ไปยังโฟลเดอร์ที่ไฟล์นั้นอยู่เช่น $ cd folder
  2. เรียกใช้คำสั่ง cat + ชื่อไฟล์เช่น $ cat filename.csv


0

อีกทางเลือกหนึ่งหากเซิร์ฟเวอร์ของคุณเรียกใช้ php คือการอัปโหลด PHP File Manager ซึ่งเป็นไฟล์เดียวและคุณสามารถดาวน์โหลดได้จาก

http://phpfm.sourceforge.net/


0

เราสามารถเปลี่ยนไฟล์ใน dyno และดูผลลัพธ์ได้โดยไม่ต้องกดไปที่ Heroku:

  1. ติดตั้งheroku-buildpack-vimbuildpack:

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. ssh เป็น dyno:

    $ 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.