【问题标题】:What text editor is available in Heroku bash shell? [closed]Heroku bash shell 中提供了哪些文本编辑器? [关闭]
【发布时间】:2012-09-21 22:04:43
【问题描述】:

我正在尝试在基于 Cedar 的 Heroku 应用中更新 httpd.conf。我用

进入了我的 Heroku bash
 heroku run bash

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

【问题讨论】:

标签: heroku text-editor


【解决方案1】:

我最近将original gist 变成了heroku cli plugin

只需安装:

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

并使用:

heroku vim

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

【讨论】:

  • @dwenaus 在 dyno 中使用 vim 只是一个故障排除工具。无法连接到正在运行的测功机。此外,即使您可以(您可以使用hack),您在测功机中所做的更改也不会保留在您的 slug 中。即,当您的应用重新启动时(每 24 小时),您所做的任何更改都会丢失。
  • @dwenaus 是您可以使用的另一个故障排除工具——我强烈建议在 QA/staging 应用程序上使用它,而不是在生产应用程序上使用它——hbuild。它允许您在不提交 git 的情况下更改源代码,因此您可以在 Heroku 上尝试一些东西而不会破坏您的 git 历史记录。
  • 另一种避免弄乱 git 历史的方法是在分支中工作,然后在合并到 master 之前进行清理。如果您的分支名为 debug-heroku,请像这样部署:git push heroku debug-heroku:master
  • 不确定这是否有效 - yarn 退出并显示“拒绝下载 git repo .... over HTTPS over HTTPS without a commit hash - 可能的证书错误?”
  • 这个答案不再适用于heroku-16 堆栈,因为它是no longer has libxt available at runtime。 @funkenstrahlen
【解决方案2】:

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

这将从 this plugin 下载 nano 的副本并将其放入您的 PATH。

【讨论】:

  • 完美。现在我可以根据需要编辑配置了
  • 似乎不起作用 - 运行 nano 会出现错误 Error opening terminal: unknown.
  • @looeee 还在为我工作。您是否在新的 heroku-18 堆栈上?
  • 甚至为 Dokku 工作。谢谢@James
【解决方案3】:

如果你是受虐狂,这里有 ed

【讨论】:

【解决方案4】:

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

这个想法是在here找到的。

【讨论】:

【解决方案5】:

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

【讨论】:

  • 我想从heroku run bash调试环境,所以vi/vim对我很有用。
  • 您现在可以使用heroku ps:exec 连接到实际测功机。
  • @NicholasMorley 可以,但是如何让网站/应用程序通知文件中的更改?
  • @x-yuri 你不能在 Heroku 上那样做。您需要重新部署应用才能进行更改。
  • 其实可以的。您可以使用正在运行站点的测功机,通过 ssh 进入它(heroku ps:exec),更改文件,启动服务器的第二个实例,将端口转发到测功机(heroku ps:forward 3000)。然后,curl localhost:3000.
【解决方案6】:

The plugin provided by Naaman Newbold 不再使用heroku-16 堆栈,所以我用这个updated gist 创建了一个新的plugin

安装:

heroku plugins:install @jasonheecs/heroku-vim

并使用:

heroku vim

【讨论】:

    【解决方案7】:

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

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

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

    【讨论】:

      【解决方案8】:

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

      【讨论】:

      • 您实际上可以forward a port 并使用您的浏览器代替curl
      【解决方案9】:

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

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

      【讨论】:

      • 我发现这个解决方案非常适合一次性需求,因为不需要插件。
      【解决方案10】:

      我在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 --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 确实有效。
      【解决方案11】:

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

      1. cd 到文件所在的文件夹,例如$ cd folder
      2. 运行 cat 命令 + 文件名,例如$ cat filename.csv

      【讨论】:

        【解决方案12】:

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

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

        【讨论】:

          【解决方案13】:

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

          http://phpfm.sourceforge.net/

          【讨论】:

            【解决方案14】:

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

            1. 安装heroku-buildpack-vim buildpack:

              $ 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,换个文件,重新开始,刷新浏览器页面。

            【讨论】:

              【解决方案15】:

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

              【讨论】:

                猜你喜欢
                • 2014-07-02
                • 2010-11-08
                • 2013-10-10
                • 2011-10-09
                • 1970-01-01
                • 1970-01-01
                • 2015-08-10
                • 2012-03-25
                • 1970-01-01
                相关资源
                最近更新 更多