Heroku bash shell中提供什么文本编辑器?[关闭]


120

我正在尝试在基于Cedar的Heroku应用程序中更新httpd.conf。我与我的Heroku重击

 heroku run bash

并在apache下找到conf目录。但是,当我尝试打开任何编辑器vi,vim或emacs时,找不到任何这些程序。您如何在Heroku上编辑conf文件?


Emacs可以通过SSH编辑文件:p

Answers:


131

我最近将原来的要点变成了heroku cli插件

只需安装:

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

并使用:

heroku vim

heroku vim命令会将您放入vim安装在Windows上的bash shell中$PATH。您所要做的就是重新训练手指以输入,heroku vim而不要输入heroku run bash


5
@dwenaus在dyno中使用vim只是一种故障排除工具。无法连接到正在运行的测功机。同样,即使您可以(可以使用hack),您在dyno中所做的更改也不会保留在您的子弹中。也就是说,当您重新启动应用程序时(每24小时),所做的任何更改都会丢失。
Naaman Newbold 2014年

4
@dwenaus您可以使用的另一种故障排除工具-我强烈建议您在QA /登台应用程序上使用此工具,而不是PRODUCTION-是hbuild。它可以让您在没有git提交的情况下更改源代码,因此您可以在Heroku上尝试一些东西,而不会破坏git的历史记录。
Naaman Newbold 2014年

5
避免弄乱git历史记录的另一种方法是在分支中工作,然后在合并成master之前先清理。如果您的分支被命名debug-heroku,请像这样部署:git push heroku debug-heroku:master
Zubin 2015年

8
不确定这是否在继续-纱线退出并显示“拒绝通过HTTPS下载git repo ....而没有提交哈希-可能的证书错误?”
Tim Malone

3
该答案不再适用于heroku-16堆栈,因为它在运行时不再libxt可用。@funkenstrahlen
Jonah

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
完善。现在,我可以根据需要编辑配置
Felipe

4
似乎没有工作-运行纳米给出了错误Error opening terminal: unknown.
路易蓝

@looeee还在为我工作。您是否有机会加入新的heroku-18堆栈?
詹姆斯

甚至为独孤工作。感谢@James
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,2016年


15

即使您可以用vi它编辑文件,也可能无法解决问题,因为文件系统是临时的。含义...如果您通过编辑文件,heroku run bash实际上并没有为其他测功机更改文件。要更改所有dyno的文件,您需要更改您在Git存储库中的推送内容或更改buildpack。更多详细信息:https :
//devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos


21
我想从中调试环境heroku run bash,所以vi / vim对我来说非常有用。
Brian Takita 2013年

3
现在,您可以使用连接到实际的dyno heroku ps:exec
Nicholas Morley

@NicholasMorley您可以,但是如何在文件中更改网站/应用程序的通知?
x-yuri

@ x-yuri您不能在Heroku上那样做。您需要重新部署应用程序以进行更改。
詹姆斯·沃德,

其实可以。您可以使用一个正在运行站点的dyno,将它ssh到其中(heroku ps:exec),更改文件,启动服务器的第二个实例,将端口转发到dyno(heroku ps:forward 3000)。然后,curl localhost:3000
x-yuri



6

在Heroku上进行调试

准备测功机

安装完成后,naaman/heroku-vim您可以通过创建新的临时dyno heroku vim。正如其他帖子正确指出的那样,通过浏览器查看时,您将看不到您的更改,因为更改不会被传播,但是...您实际上可以从dyno本身内部查看更改。

我只是尝试通过curl进行“浏览”,但是如果您可以到达lynx那里,或者更好地获得ssh隧道,那可能会很棒。

启动服务器

实例化heroku-vim时,Web服务器将不会运行,因此您需要自己进行操作。在我的示例中,我正在运行php:

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

您可以自己启动此命令!

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

现在正在后台运行!

卷曲你的网站

测功机在随机端口上启动。幸运的是,您知道是哪一个,因为它是$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. 将提取的文件复制到原始文件的路径

我发现此解决方案非常适合一次需要,因为不需要插件。
斯特凡

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



0

如果您的服务器运行php的另一种方法是上传PHP File Manager,它是单个文件,您可以从

http://phpfm.sourceforge.net/


0

无需按Heroku即可在dyno中更改文件并查看结果:

  1. 安装heroku-buildpack-vimbuildpack:

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. 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,更改文件,重新启动,刷新浏览器页面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.