Какой текстовый редактор доступен в оболочке Heroku bash?
Я пытаюсь обновить httpd.conf в своем кедровом приложении Heroku. Я добрался до своего Heroku bash с помощью
heroku run bash
и нашел conf dir под apache. Но когда я пытаюсь открыть любой редактор vi, vim или emacs, я не могу найти ни одну из этих программ. Как вы редактируете файлы conf на Heroku?
Ответы
Ответ 1
Недавно я превратил оригинальный gist в плагин heroku cli.
Просто установите:
heroku plugins:install https://github.com/naaman/heroku-vim
И используйте:
heroku vim
Команда heroku vim
выведет вас в оболочку bash с vim
, установленную на вашем $PATH
. Все, что вам нужно сделать, - переустановить свои пальцы, чтобы ввести heroku vim
вместо heroku run bash
.
Ответ 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
Это загрузит копию nano из этого плагина и поместит ее в вашу переменную PATH.
Ответ 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
Эта идея была найдена здесь.
Ответ 5
Даже если вы можете редактировать файлы с помощью vi
, это, вероятно, не решит вашу проблему, потому что файловая система является эфемерной. Значение... Если вы редактируете файл через heroku run bash
, вы фактически не меняете файл для других динамиков. Чтобы изменить файл для всех динамиков, вам нужно либо изменить то, что вы нажимаете на репозиторий Git, либо изменить buildpack. Подробнее:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos
Ответ 6
Плагин, предоставленный Naaman Newbold, больше не работает со стеком heroku-16
, поэтому я создал новый плагин из этого обновленного списка.
Установка:
heroku plugins:install @jasonheecs/heroku-vim
И используйте:
heroku vim
Ответ 7
В комментариях к ответной ссылке Брайана Такиты есть более свежее решение, позволяющее Vim работать с консолью Heroku:
https://gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e
Просто сэкономил мне много времени! :)
Ответ 8
Отладка на Heroku
Подготовьте dyno
После установки naaman/heroku-vim
вы можете создать новый эфемерный dyno через heroku vim
. Как было правильно указано другими сообщениями, вы не сможете увидеть свои изменения при просмотре через браузер, потому что изменения не будут распространяться, но... вы можете просмотреть изменения внутри самого динамика.
Я только экспериментировал с "просмотром" через curl, но если бы вы могли получить lynx
там или, лучше всего, получить туннель ssh, может быть действительно здорово.
Запустите сервер
Веб-сервер не будет запущен, когда вы создадите герою-вим, поэтому вам нужно будет сделать это самостоятельно. В моем примере я запускаю 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, но когда вы сохраните файл и закрутите его снова, вы не увидите изменений. Я не понимаю, где он кэшируется, но он кэшируется. Вы должны убить сервер и перезапустить его.
Перезапуск сервера
-
Найти идентификатор процесса
~ $ 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
является родительским идентификатором - используйте это.
kill 582
-
Подождите всего 1 секунду, а затем снова запустите сервер (вы получите новый идентификатор процесса!). Керлинг с помощью той же команды теперь даст вам обновленную страницу.
Ответ 9
Актуальная альтернатива редактированию файла в Heroku:
- поместите его копию на какой-либо удаленный хост. Мне нравится использовать Gist
- отредактируйте файл в Gist и по окончании получите исходный URL-адрес.
-
wget
исходный URL-адрес вашего Heroku bash
- скопировать извлеченный файл в путь к исходному файлу
Ответ 10
Я написал полную статью о том, как редактировать файл на Heroku Dynos, используя Nano или 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 Plugins: heroku-vim
- Вы можете использовать Heroku Buildpacks: heroku-buildpack-vip
Надеюсь, поможет!
Ответ 11
Если вы хотите просто просмотреть содержимое файла, то:
- перейдите в папку, в которой находится файл, например, в
$ cd folder
- запустить команду cat + имя файла, например,
$ cat filename.csv
Ответ 12
В настоящее время существует несколько пакетов сборки, включающих vim: https://elements.heroku.com/search/buildpacks?q=vim
Вы можете добавить один из них в соответствующее приложение Heroku, используя поддержку buildpack.
Ответ 13
альтернативный способ, если ваш сервер запускает php, должен загрузить PHP File Manager, это один файл, и вы можете загрузить его из
http://phpfm.sourceforge.net/
Ответ 14
Можно изменить файлы в Dyno и увидеть результат, не нажимая на 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
, измените файл, начните снова, обновите страницу браузера.