Heroku bash shell 提供哪些文本编辑器?

我试图在基于 Cedar 的 Heroku 应用程序中更新 httpd.conf

 heroku run bash

and found the conf dir under apache. But when I try to open any editor vi, vim, or emacs, I can't find any of these programs. How do you edit conf files on Heroku?

80601 次浏览

即使你可以用 vi编辑文件,它可能也不会解决你的问题,因为文件系统是短暂的。这意味着... 如果你通过 heroku run bash编辑一个文件,你实际上并没有为其他动态更改文件。要更改所有 dynos 的文件,您需要更改 Git repo 中的内容或更改 buildpack。更多细节:
Https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos

看起来你可以下载并安装一次 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

This idea was found 给你.

我最近把 原创要点变成了 Heroku cli 插件

只要安装:

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

使用:

heroku vim

heroku vim命令将把您放入一个 bash shell,$PATH上安装了 vim。你所要做的就是重新训练你的手指键入 heroku vim而不是 heroku run bash

如果您的服务器运行 PHP 的替代方法是上传 PHP 文件管理器,它单一的文件,您可以下载它从

http://phpfm.sourceforge.net/

调试 Heroku

准备发动机

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

I've only experimented with "browsing" via curl, but if you could get lynx on there, or better yet get an ssh tunnel -- could be really great.

Start the server

当您实例化 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 操作,但是当您保存文件并再次执行 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. Wait just 1 second, and then start the server again (you'll get a new process id!). Curling via the same command will now give you the updated page.

如果你是个受虐狂,就有 ed

An urgent alternative to edit a file in Heroku:

  1. 把副本放在远程主机上,我喜欢用 Gist
  2. 在 Gist 上编辑该文件,完成后获得该文件的原始 URL
  3. 在 Heroku bash 上的原始 URL
  4. 将提取的文件复制到原始文件的路径

在 Brian Takita 的回答链接上的评论中,有一个让 维姆在 Heroku 控制台上工作的最新解决方案:

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

帮我省了不少时间! :)

If you don't want to mess around with plugins and just want a copy of nano in your one-off dyno, just run

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

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

您可以使用 支持构建包支持将其中一个添加到 Heroku 应用程序中。

我在 How to Edit a File on Heroku Dynos using Nano or Vim上写了一篇完整的文章,但基本上是:

  • 可以使用命令行:

    Curl https://s3.amazonaws.com/heroku-jvm-buildpack-vi/vim-7.3.tar.gz ——输出 vim.tar.gz Mkdir vim & & tar xzvf vim.tar. gz-C vim export PATH=$PATH:/app/vim/bin

  • 你可以使用 Heroku 插件: Heroku-vim
  • 您可以使用 Heroku Buildpack: Heroku-buildpack-vip

希望能有帮助!

Naaman Newbold 提供的插件不再与 heroku-16协同工作,所以我用这个 更新的要点做了一个新的 plugin

安装:

heroku plugins:install @jasonheecs/heroku-vim

使用:

heroku vim

如果你只想查看文件的内容,那么:

  1. Cd 到文件所在的文件夹,例如 $ cd folder
  2. run cat command + the filename e.g. $ cat filename.csv

你可以在一个动态文件中修改文件,并且不用推到 Heroku 就可以看到结果:

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

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

    $ heroku ps:exec
    
  3. Create and run start.sh:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. Forward port 4000 (second console):

    $ heroku ps:forward
    
  5. Open localhost:4000 in your browser.

  6. Stop start.sh, change a file, start again, refresh the browser page.

我更喜欢 Nano 编辑器,你可以使用下面的构建包..。 Https://github.com/velizarn/heroku-buildpack-nano