Ошибка установки программного обеспечения (makefile) на Ubuntu 20.04

У меня есть веб-приложение, которое я хотел бы запустить со сценарием, а не открывать 3 вкладки и запускать процессы, затем изменить строку на файл конфигурации, а затем запустите веб-сервер.

Во-первых, чтобы я мог протестировать веб-перехватчики, мне нужно запустить ngrok http https: // localhost: 3000 , что дает примерно такой же результат -

ngrok by @inconshreveable                                                                                                                                                               (Ctrl+C to quit)
                                                                                                                                                                                                        
Session Status                online                                                                                                                                                                    
Account                       myemail@gmail.com (Plan: Free)                                                                                                                                     
Version                       2.3.35                                                                                                                                                                    
Region                        United States (us)                                                                                                                                                        
Web Interface                 http://127.0.0.1:4040                                                                                                                                                     
Forwarding                    http://2f22e8990cbe.ngrok.io -> https://localhost:3000                                                                                                                    
Forwarding                    https://2f22e8990cbe.ngrok.io -> https://localhost:3000                                                                                                                   
                                                                                                                                                                                                        
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                               
                              13973   1       0.00    0.07    0.00    0.00   

Затем я изменяю файл конфигурации для размещения нового хоста (случайный для бесплатного использования ngrok )

# development.rb
config.hosts << '2f22e8990cbe.ngrok.io' # (tunnel address from above)

Затем я сохраняю файл и запускаю веб-сервер.

$ rails server puma --bind 'ssl://127.0.0.1:3000?key=/home/oaty/.ssh/localhost.key&cert=/home/oaty/.ssh/localhost.crt'

Я хотел бы записать это в одну команду. Я могу использовать более крупную переменную среды оболочки для хоста ngrok, хотя для начала мне нужно как-то получить ее из того же скрипта. Надеюсь, я не прошу слишком многого. Мне очень нравятся форумы Ubuntu. Думаю, я слишком аутист для большинства других мест. Да здравствует Ubuntu!

1
задан 20 August 2020 в 19:00

2 ответа

Примерно так:

newhost=$(ngrok http https://localhost:3000 | \
    grep -E '^Forwarding\s+https://' | \
    grep -E  -o '[0-9a-f]{12}\.ngrok\.io`)
  
if [[ -n "$newhost" ]] ; then
    echo "$newhost" >>config.hosts
    rails server ...(the rest)
else
    echo "Failure in ngrok" >&2
fi

Прочтите man grep bash .

1
ответ дан 21 August 2020 в 07:54

Я нашел решение, углубившись в детали более точно. Я немного адаптировал код. curl с командой jq - настоящая жемчужина. Спасибо. (Примечание: localhost: 4040 - это страница веб-интерфейса ngrok .)

boot_ssl.sh

#!/bin/bash
sh -c 'ngrok http https://localhost:3000 &'
sleep 2
curl --silent http://127.0.0.1:4040/api/tunnels | jq '.tunnels[0].public_url' > .ngrok_ssl_host
rails s puma -b 'ssl://127.0.0.1:3000?key=/home/jess/.ssh/localhost.key&cert=/home/jess/.ssh/localhost.crt'

, а затем в файле config / development.rb ...:)

  NGROK_SSL_HOST = File.open('.ngrok_ssl_host').read.match(/[0-9a-z]{12}\.ngrok\.io/)[0]
  
  config.hosts << NGROK_SSL_HOST
0
ответ дан 21 August 2020 в 07:54

Другие вопросы по тегам:

Похожие вопросы: