120

我正在尝试在基于 Cedar 的 Heroku 应用程序中更新 httpd.conf。我到了我的 Heroku bash

 heroku run bash

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

4

15 回答 15

131

我最近把原来的 gist变成了一个heroku cli 插件

只需安装:

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

并使用:

heroku vim

heroku vim命令会将您放入vim安装在$PATH. 您所要做的就是重新训练您的手指打字heroku vim而不是heroku run bash.

于 2013-12-19T20:54:11.560 回答
64

如果您不想弄乱插件,只想在一次性测功机中复制 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 中。

于 2018-01-09T12:54:23.857 回答
29

如果ed你是一个受虐狂。

于 2015-03-20T21:35:45.840 回答
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

这个想法是在这里找到的。

于 2013-03-02T23:15:30.957 回答
15

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

于 2012-10-01T13:03:21.363 回答
13

Naaman Newbold 提供的插件不再使用heroku-16堆栈,所以我从这个更新的 gist中制作了一个新插件

安装:

heroku plugins:install @jasonheecs/heroku-vim

并使用:

heroku vim

于 2018-12-31T17:26:49.483 回答
7

在 Brian Takita 的答案链接的评论中,有更新的解决方案可以让Vim在 Heroku 控制台上工作:

https://gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e

刚刚为我节省了很多时间!:)

于 2018-01-03T18:53:29.973 回答
6

在 Heroku 上调试

准备测功机

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

我只尝试过通过 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

它现在在后台运行!

卷曲您的网站

Dynos 在随机端口上启动。幸运的是,您知道哪一个,因为它是$PORT变量!

~ $ curl localhost:$PORT
Hello World!

编辑

现在做你的 vim 事情,但是当你保存文件并再次 curl 时 - 你不会看到更改。我不明白它被缓存在哪里,但它被缓存了。您必须杀死服务器并重新启动它。

重新启动服务器

  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!)。通过相同的命令进行卷曲现在将为您提供更新的页面。

于 2015-01-28T06:13:30.650 回答
5

在 Heroku 中编辑文件的紧急替代方法:

  1. 将它的副本放在某个远程主机上。我喜欢用 Gist
  2. 在 Gist 上编辑文件,完成后获取它的原始 URL
  3. wgetHeroku bash 上的原始 URL
  4. 将获取的文件复制到原始文件的路径
于 2017-01-16T18:07:03.337 回答
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

希望能帮助到你!

于 2018-11-29T18:02:40.437 回答
2

如果您只想查看文件的内容,则:

  1. cd 到文件所在的文件夹,例如$ cd folder
  2. 运行 cat 命令 + 文件名,例如$ cat filename.csv
于 2019-02-01T11:14:07.130 回答
1

现在有许多包含 vim 的构建包:https ://elements.heroku.com/search/buildpacks?q=vim

您可以使用support buildpack support将其中之一添加到有问题的 Heroku 应用程序中。

于 2018-04-09T10:36:21.403 回答
0

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

http://phpfm.sourceforge.net/

于 2014-02-02T19:09:34.093 回答
0

可以在测功机中更改文件并查看结果,而无需推送到 Heroku:

  1. 安装heroku-buildpack-vim构建包:

    $ 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,更改文件,重新开始,刷新浏览器页面。
于 2019-09-23T17:59:48.033 回答
0

我更喜欢 Nano 编辑器,您可以使用以下 buildpack... https://github.com/velizarn/heroku-buildpack-nano

于 2019-12-09T08:18:52.110 回答