Heroku bash shell 中提供了哪些文本编辑器? [关闭]
Posted
技术标签:
【中文标题】Heroku bash shell 中提供了哪些文本编辑器? [关闭]【英文标题】:What text editor is available in Heroku bash shell? [closed] 【发布时间】:2012-09-21 22:04:43 【问题描述】:我正在尝试在基于 Cedar 的 Heroku 应用中更新 httpd.conf。我用
进入了我的 Heroku bash heroku run bash
并在 apache 下找到了 conf 目录。但是当我尝试打开任何编辑器 vi、vim 或 emacs 时,我找不到任何这些程序。如何在 Heroku 上编辑 conf 文件?
【问题讨论】:
Emacs 可以edit files over SSH :p 【参考方案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
。
【讨论】:
如何退出ed
?
在命令模式下,q
。如果您处于插入模式,请在一行上单独打印一个点.
,然后输入,进入命令模式。 en.wikipedia.org/wiki/Ed_(text_editor)#Example【参考方案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找到的。
【讨论】:
正是我需要的!编辑一个命令,运行它。现在 heroku 可以在晚上删除我的更改,我完成了我的工作! 在那里查看更多最新脚本gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e【参考方案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 时 - 您将看不到更改。我不明白它被缓存在哪里,但它被缓存了。您必须杀死服务器并重新启动它。
重启服务器
查找进程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
等待 1 秒,然后再次启动服务器(您将获得一个新的进程 ID!)。通过相同的命令进行卷曲现在将为您提供更新的页面。
【讨论】:
您实际上可以forward a port 并使用您的浏览器代替curl
。【参考方案9】:
在 Heroku 中编辑文件的紧急替代方法:
-
将它的副本放在某个远程主机上。我喜欢用 Gist
在 Gist 上编辑文件,完成后获取它的原始 URL
wget
Heroku bash 上的原始 URL
将获取的文件复制到原文件路径
【讨论】:
我发现这个解决方案非常适合一次性需求,因为不需要插件。【参考方案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
希望对你有帮助!
【讨论】:
插件对我不起作用:vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory
。但是 buildpack 确实有效。【参考方案11】:
如果您只想查看文件的内容,那么:
-
cd 到文件所在的文件夹,例如
$ cd folder
运行 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:
安装heroku-buildpack-vim
buildpack:
$ heroku buildpacks:add \
https://github.com/carloluis/heroku-buildpack-vim
SSH 进入测功机:
$ heroku ps:exec
创建并运行 start.sh:
#!/usr/bin/env bash
set -eu
export DATABASE_URL=...
bin/rails s -p 4000
转发端口 4000(第二个控制台):
$ heroku ps:forward
在浏览器中打开localhost:4000
。
start.sh
,换个文件,重新开始,刷新浏览器页面。
【讨论】:
【参考方案15】:我更喜欢 Nano 编辑器,你可以使用以下 buildpack... https://github.com/velizarn/heroku-buildpack-nano
【讨论】:
以上是关于Heroku bash shell 中提供了哪些文本编辑器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章