我正在尝试在基于 Cedar 的 Heroku 应用程序中更新 httpd.conf。我到了我的 Heroku bash
heroku run bash
并在apache下找到了conf目录。但是当我尝试打开任何编辑器 vi、vim 或 emacs 时,我找不到任何这些程序。你如何在 Heroku 上编辑 conf 文件?
我正在尝试在基于 Cedar 的 Heroku 应用程序中更新 httpd.conf。我到了我的 Heroku bash
heroku run bash
并在apache下找到了conf目录。但是当我尝试打开任何编辑器 vi、vim 或 emacs 时,我找不到任何这些程序。你如何在 Heroku 上编辑 conf 文件?
我最近把原来的 gist变成了一个heroku cli 插件。
只需安装:
heroku plugins:install https://github.com/naaman/heroku-vim
并使用:
heroku vim
该heroku vim
命令会将您放入vim
安装在$PATH
. 您所要做的就是重新训练您的手指打字heroku vim
而不是heroku run bash
.
如果您不想弄乱插件,只想在一次性测功机中复制 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 中。
如果ed
你是一个受虐狂。
看起来您可以为一个会话下载并安装 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
这个想法是在这里找到的。
即使您可以使用它编辑文件vi
也可能无法解决您的问题,因为文件系统是短暂的。含义...如果您通过编辑文件,heroku run bash
您实际上并没有更改其他测功机的文件。要更改所有 dynos 的文件,您需要更改您在 Git 存储库中推送的内容或更改 buildpack。更多细节:
https ://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos
Naaman Newbold 提供的插件不再使用heroku-16
堆栈,所以我从这个更新的 gist中制作了一个新插件。
安装:
heroku plugins:install @jasonheecs/heroku-vim
并使用:
heroku vim
在 Brian Takita 的答案链接的评论中,有更新的解决方案可以让Vim在 Heroku 控制台上工作:
https://gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e
刚刚为我节省了很多时间!:)
安装后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!)。通过相同的命令进行卷曲现在将为您提供更新的页面。
在 Heroku 中编辑文件的紧急替代方法:
wget
Heroku bash 上的原始 URL我写了一篇关于如何使用 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
希望能帮助到你!
如果您只想查看文件的内容,则:
$ cd folder
$ cat filename.csv
现在有许多包含 vim 的构建包:https ://elements.heroku.com/search/buildpacks?q=vim
您可以使用support buildpack support将其中之一添加到有问题的 Heroku 应用程序中。
如果您的服务器运行 php,另一种方法是上传 PHP 文件管理器,它是单个文件,您可以从
http://phpfm.sourceforge.net/
可以在测功机中更改文件并查看结果,而无需推送到 Heroku:
安装heroku-buildpack-vim
构建包:
$ 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
,更改文件,重新开始,刷新浏览器页面。我更喜欢 Nano 编辑器,您可以使用以下 buildpack... https://github.com/velizarn/heroku-buildpack-nano