Как подключиться к приложению heroku
Я пытаюсь выполнить относительно тривиальную задачу: я хочу подключиться к базе данных Heroku. Я создал базу данных и получил учетные данные с сайта Heroku. Однако, когда я пытаюсь подключиться к базе данных с помощью что-нибудь помимо клиента командной строки терминала "heroku", я получаю фатальные ошибки или не могу подключить ошибки.
два инструмента, с которыми я пытался связаться за пределами приложения Heroku terminal: Navicat и IntelliJ.
ошибка, которую я получаю в Navicat при попытке подключиться к базе данных:
could not connect to server: Host is down Is the server running on host "ec2-107-21-112-215.compute-1.amazonaws.com" and accepting TCP/IP connections on port 5432?
Мои настройки подключения следующие:
Имя Подключения Heroku Dev Test
порт 5432
Navicat, похоже, даже не пытается подключиться к этому имя хоста.
когда я пытаюсь подключиться к IntelliJ, используя полные учетные данные, я получаю следующую ошибку:
java.sql.SQLException: FATAL: no pg_hba.conf entry for host "75.168.4.146", user "rphbqggxeokuxl", database "dc008iqk0rq4j5", SSL off
опять же, я использую учетные данные, которые приложение Heroku предоставляет мне при доступе к моей базе данных на своем веб-сайте.
кто-нибудь сталкивался с этой проблемой соединения Heroku раньше?
Heroku предоставляет эту информацию для подключения из внешних источников:
я решил проблему подключения к моей базе данных Heroku Postgres, добавив в строку JDBC следующее: &ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory .
пример
вам понадобится опция SSL, только если SSL включен для вашей базы данных Postgres (которая по умолчанию).
подсказка
если вы хотите проверить свои свойства подключения к базе данных, просто запустите следующая команда с Heroku Toolbelt: heroku pg:info --app your-heroko-appname (убедитесь, что у вас есть Postgres, чтобы запустить эту команду в вашем терминале)
на также скажет вам, что sslmode установлено значение require .
для проверки подключения к базе данных я рекомендую SQL Power Architect как это инструмент, который я использовал для проверки своего решения.
IntelliJ - > источники данных и драйверы
после настройки хоста, базы данных и сведений о пользователе в разделе General tab переключиться на Advanced tab и убедитесь, что вы добавили следующее:
- ssl = true
- sslfactory = org.в PostgreSQL.использование SSL.NonValidatingFactory
хотел помочь другим, которые могут столкнуться с этим. Если вы предоставляете имя пользователя и пароль в отдельных областях, а не в командной строке, вы должны использовать ? между именем базы данных и ssl=true и отбросьте первый &
это командная строка, которая, наконец, позволила мне подключиться к базе данных PostgreSQL с помощью SQL Power Architect
для тех, кто может использовать Spring Boot и иметь конфигурацию, предоставленную через DATABASE_URL свойство среды (не системное свойство), суффикс может быть добавлен к свойству:
и прошел через с небольшой модификацией в config bean:
вы можете рассмотреть возможность установки переменной конфигурации среды "PGSSLMODE" в "require" через веб-интерфейс Heroku или CLI.
Case: Postgres dB настроен как дополнение Heroku и прикреплен к приложению на Heroku Dyno.
в Heroku - инструкции к сожалению, не упоминайте о том, как активировать SSL, хотя это требуется для любого уровня БД, начиная со Standard-0 по умолчанию.
выполните все шаги PG-copy или PG-upgrade (предпочтительно подход зависит от вашей версии Postgres) в инструкциях Heroku; однако перед выводом из эксплуатации старой базы данных (если это необходимо) -- добавьте переменную среды PGSSLMODE.
инструкции достаточно охватывают, как продвигать новую базу данных (и, следовательно, установить DATABASE_URL), поэтому нет изменений к ним должна быть обязательно.
добавьте или отредактируйте следующую строку в postgresql.файл conf :
добавьте следующую строку в качестве первой строки в файле pg_hba.conf. Это позволяет получить доступ ко всем базам данных для всех пользователей с зашифрованным паролем:
перезапустить службу postgresql:
(версия должна основываться на вашей установке) -- на windows (запустите cmd как администратор).
Что делать, если у меня нет денег на покупку сервера? Хостинг программ на серверах сейчас популярен!
Настроить Heroku
Подготовить приложение (приложение)
Поскольку это учебное пособие, используется официальная библиотека git.
Развернуть приложение (приложение)
Создайте приложение на Heroku, чтобы получить исходный код
Когда вы создаете это приложение, также будет создан удаленный git (heroku), связанный с локальной библиотекой.
Вы можете просто проигнорировать синтаксическую ошибку yield from self.wsgi.close () в процессе развертывания.
Убедитесь, что запущен хотя бы один экземпляр:
Доступ к приложению
heroku open
Посмотреть журнал
Я пока не знаю, что читать логи, в конце концов, я только новичок.
Определить Procfile
Procfile - это текстовый файл, расположенный в корневом каталоге приложения (приложения), в котором явно указано, какую команду использовать для запуска приложения.
Содержимое выглядит следующим образом:
В системе Windows также есть файл Procfile.windows. Последующее содержимое будет использовать этот файл для локального запуска службы.
Запускать локально
Перед загрузкой в heroku мы надеемся, что сможем предварительно просмотреть или выполнить другие операции локально.
Поскольку Djaong, используемый в руководстве, использует локальные ресурсы, вам необходимо запуститьcollectstatic
Следующий шаг - запустить
Откройте локальную консоль django
Когда локальный файл изменяется, его необходимо загрузить в удаленную библиотеку, операция следующая
Проверить после завершения
Определить переменные среды
Некоторая наиболее важная информация, такая как пароль и номер учетной записи системного администратора, обычно не отображается напрямую в файле, а считывается из переменных среды, как показано ниже:
Определите переменные окружения heroku (при выигрыше)
Просмотр переменных среды
heroku config
Дополнения (дополнения)
heroku предоставляет большое количество сторонних плагинов, таких как papertrial, которые могут обрабатывать информацию вашего журнала.
база данных
На рынке плагинов имеется большое количество плагинов для баз данных, таких как redis, mongodb, postgres и mysql.
Как бедняк, мы используем бесплатный Postgres в качестве модуля поддержки базы данных, а веб-сайт относительно небольшой и более подходящий.
Heroku - это облачная платформа, предоставляющая услуги хостинга. Она поддерживает несколько языков программирования, включая PHP, Node.js и Python. Это платформа как сервис (PaaS), который позволяет вам управлять приложениями веб-сайтов, одновременно заботясь о ваших серверах, сетях, хранилище и других облачных компонентах.
В этой статье мы рассмотрим, как развернуть приложение Django на Heroku с помощью Git.
Предпосылки
Ниже приведен список вещей, которые необходимо сделать, прежде чем мы начнем развертывание:
- Git
- Учетная запись Heroku и интерфейс командной строки
- Приложение Django
Интерфейс командной строки Heroku (CLI) позволяет легко создавать приложения Heroku и управлять ими прямо из терминала. Это важная часть использования Heroku.
Чтобы установить Heroku CLI (он же Heroku Toolbelt), следуйте инструкциям на официальном сайте.
Убедитесь, что ваше приложение Django работает в виртуальной среде, которую вам необходимо поддерживать в течение всего процесса развертывания.
Аккаунт Heroku
После того, как все эти вещи будут установлены, следующим шагом будет создание бесплатной учетной записи Heroku здесь, если у вас еще нет учетной записи.
После написания в терминале следующего:
Настроить приложение Django для Heroku
Теперь, когда мы сделали все необходимое, давайте подготовим наше приложение Django для Heroku.
Procfile
PROCFILE файл с именем Procfile без расширения файла, помещенного в корневом каталоге вашего приложения. В нем перечислены типы процессов в приложении, и каждый тип процесса является объявлением команды, которая выполняется при запуске контейнера / динамометрического стенда этого типа процесса.
Перед созданием Procfile вы захотите установить django gunicorn в каталог вашего проекта:
Хотя Django поставляется со своим собственным сервером WSGI, мы скажем Heroku использовать Gunicorn для обслуживания нашего приложения, что также рекомендуется Heroku.
Теперь создайте Procfile в родительском каталоге и добавьте следующую строку:
Замените yourdjangoweb фактическим названием вашего проекта.
Runtime.txt
Создайте текстовый файл с именем runtime.txt в том же каталоге, что и Procfile . Он сообщает Heroku, какую версию Python использует ваше приложение. Если вы не уверены в версии, введите в терминал python --version с активированной виртуальной средой Django.
Затем добавьте версию в runtime.txt :
Посмотреть поддерживаемые версии Python на Heroku можно здесь.
Разрешенные хосты
В качестве альтернативы вы можете разрешить все приложения от Heroku, опуская имя приложения, например:
Вы также можете использовать ['*'] , чтобы разрешить все хосты. Вы можете найти более подробную информацию в документации.
Установить пакеты
Ниже приведены дополнительные пакеты, которые необходимо установить в нашей виртуальной среде.
Чтобы подключить нашу базу данных Django к Heroku, установите dj-database-url , выполнив:
Поскольку Heroku использует базы данных Postgres, нам также понадобится его адаптер для Python:
И, наконец, мы будем использовать WhiteNoise для обслуживания статических файлов на рабочем сервере. Что мы можем установить, выполнив:
Мы уже настроили gunicorn , давайте добавим конфигурацию для whitenoise и dj-database-url .
Настройка статических файлов
Сначала добавьте базовые настройки для обслуживания статических файлов в любом проекте Django. Вы можете скопировать и вставить следующие настройки в свой settings.py :
Добавьте WhiteNoise в список MIDDLEWARE , сразу после SecurityMiddleware :
Настройка базы данных
Мы используем dj-database-url для настройки нашей базы данных. Добавьте эти строки внизу settings.py :
Requirements.txt
Heroku распознает развернутое приложение как приложение Python, только если у него есть файл requirements.txt в корневом каталоге. Он сообщает Heroku, какие пакеты необходимы для запуска вашего приложения.
Для этого мы можем использовать pip freeze и передать вывод в файл requirements.txt :
Ваш requirements.txt должен выглядеть примерно так:
Примечание: Вышеуказанные версии используются нашим приложением Django и могут отличаться для вашего.
Подключите приложение Heroku к Git
Теперь нам нужно создать приложение Heroku:
Инициализируйте пустой репозиторий в каталоге вашего проекта:
Подключите приложение Heroku к пустому git репозиторию:
Зафиксируйте изменения / файлы:
Наконец, отправьте проект в git репозиторий, размещенный на Heroku:
Если все пойдет нормально, вы увидите такой вывод:
Ошибка collectstatic
Вы можете получить ошибку collectstatic , связанную с запуском команды git push heroku master . Это связано с каталогом статических файлов, и вы можете обойти его с помощью следующей команды:
Он скажет Heroku не запускать команду collectstatic во время развертывания приложения. Вы можете запустить его позже, используя bower :
Это может произойти по многим причинам, включая, помимо прочего:
- Ваш список STATICFILES_DIRS пуст или настроен неправильно.
- В вашем каталоге static нет файлов для отслеживания git . Вы можете добавить любой временный файл в свой каталог static , чтобы он работал.
Перенести базу данных
Последний шаг - отразить models , вашу базу данных в Heroku, выполнив миграции:
Добавление собственного доменного имени
1. Войдите в панель управления Heroku.
2. Выберите ваше текущее приложение из списка:
3. Выберите Settings на панели навигации и прокрутите вниз, чтобы найти раздел Domain:
4. Нажмите на Add domain, где вы сможете добавить свое доменное имя.
Этот вариант доступен только для проверенных учетных записей. Вам будет предложено ввести данные кредитной карты на Heroku для подтверждения вашей учетной записи. Вы можете найти более подробную информацию о добавлении доменов и субдоменов на этой странице.
Вывод
В этой статье мы развернули приложение Django на Heroku с пользовательским доменным именем, используя Git.
Heroku – очень крутая штука! Тебе не нужно заморачиваться с настройкой железа, балансирования, маршрутизации и прочими радостями воздвижения нового сервиса, т. к. все за тебя сделали (и будут делать) разработчики. Тебе дается уже готовый сервак – бери и ваяй свое приложение.
Это руководство поможет развернуть Java-приложение за считанные минуты.
Предполагается, что у тебя уже:
- есть бесплатный аккаунт Heroku;
- установлена Java 8;
- установлен Maven 3.
Если ты больше любишь Gradle, то тебе в раздел официального хелпа.
Для Heroku CLI требуется система контроля версий Git. Если она у тебя еще не установлена, выполни следующие действия:
CLI используется для управления и масштабирования приложений, подготовки модулей, просмотра журналов и т. д.
Загрузи и запусти нужный установщик: Mac, Win32, Win64, Linux ( sudo snap install heroku --classic ).
После установки уже можно вводить команды с помощью директивы heroku в любимом терминале.
Используй команду heroku login для входа в Heroku CLI (может ругнуться фаервол – все разрешаем):
Эта команда откроет страницу Heroku – нажми там кнопку Войти .
Аутентификация требуется для правильной связки heroku и git .
Чтобы создать локальную копию приложения, которую можно развернуть в Heroku, выполни следующие команды в терминале:
Теперь у тебя есть рабочий репозиторий. Приложение включает в себя файл pom.xml, используемый менеджером Maven.
На этом шаге ты развернешь приложение в Heroku.
Первым делом подготовим Heroku к получению исходного кода:
На этом шаге создается удаленный репозиторий (с именем heroku) и связывается с локальным.
По дефолту Heroku генерирует случайное имя для приложения, но можно указать и свое.
Теперь давай развернем код:
Готово. Убедись, что хотя бы один экземпляр приложения запущен:
Теперь перейди в приложение по ссылке, созданной из его имени, или поступи следующим образом:
Heroku собирает события со всех выходных потоков приложения и компонентов платформы в единый журнал, упорядоченный по времени.
Чтобы посмотреть логи запущенного приложения, воспользуйся командой heroku logs --tail :
Heroku использует специальный текстовый файл Procfile (мини-конфиг) для явного указания директив запуска приложения.
Procfile в развернутом приложении выглядит примерно так:
Здесь объявляется тип процесса web и команда, необходимая для его запуска. Web указывает на то, что этот тип процесса будет прикреплен к стеку маршрутизации Heroku для получения трафика.
Сейчас приложение работает на одном dyno-процессе. Dyno – это легковесный контейнер Linux, запускаемый по команде из Procfile.
Проверить, сколько dyno сейчас запущено, можно так:
По умолчанию приложение деплоится в свободном dyno. Свободными они становятся (засыпают) после тридцати минут бездействия (т. е. если они не получают никакого трафика). Это поведение вызывает задержку в несколько секунд при первом запросе “пробуждения”. Последующие запросы будут выполняться нормально.
Чтобы избежать спящего режима dyno, можно обновить тип dyno на хобби или профи. Например, если ты мигрируешь свое приложение на профи уровень, можно легко масштабировать его, попросив Heroku подготовить определенное количество dyno.
Масштабирование приложения в Heroku эквивалентно изменению количества запущенных dyno.
Установить ненулевое количество веб dyno можно так:
Heroku автоматически определяет Java-приложение, если оно содержит файлик pom.xml в корневом каталоге. Ты можешь создать pom.xml для других приложений с помощью команды mvn archetype: create .
В развернутой демке приложения уже имеется pom.xml с такой начинкой:
В этом файлике указаны зависимости, требуемые для работы приложения. При развертывании Heroku прочитает файл и все установит, запустив mvn clean install .
В папке есть еще один файл, system.properties , указывающий на версию Java. Содержимое этого необязательного файла ниже:
Запусти mvn clean install в локальном каталоге, чтобы установить зависимости и подготовить систему к локальному запуску приложения. Обрати внимание, что приложению требуется Java 8, но ты можешь запушить другие приложения с поддержкой другой версии Java.
Если Maven не установлен или появляется ошибка, например, mvn is not recognized as an internal or external command , используй команду-обертку: запустив mvnw clean install на Windows или ./ mvnw clean install на Mac и Linux. Это одновременно устанавливает и запускает Maven.
Процесс Maven скомпилит и создаст JAR с зависимостями, помещая его в корневой каталог приложения. Этим процессом рулит spring-boot-maven-plugin из pom.xml.
Если ты не юзаешь Spring в pom.xml, можно указать иной плагин:
Запусти приложение с помощью команды heroku :
Для остановки приложения вернись в окно терминала и нажми CTRL+C .
На этом шаге ты узнаешь, как внести локальные изменения и развернуть их в Heroku. В качестве примера мы добавим зависимость и некоторый код.
Измени pom.xml, добавив зависимости для jscience в блок dependencies :
В 28 строке добавь:
Теперь добавь следующие объекты в 19 строку файла src/main/java/com/example/Main.java :
Добавь метод hello в 59 строку src/main/java/com/example/Main.java :
Создай src/main/resources/templates/hello.html с таким содержимым:
Heroku предоставляет поддержку Postgres, Redis, MongoDB и MySQL.
На этом шаге ты узнаешь о дополнении Heroku Postgres , поставляемом при развертывании всех приложений Java.
Heroku Postgres сама по себе является надстройкой, поэтому для обзора БД можно использовать команду heroku addons :
Использовать внешние сайты "пингалки", которые будут с заданной периодичностью проверять ваш сайт.
Примером таких сайтов является Pingdom, Uptime Robot, Kaffeine и другие. Принцип прост. Заходим, регистрируемся (если надо), указываем сайт и интервал времени и применяем настройки.
Использовать Heroku Newrelic addon Данный плагин предназначен для мониторинга и уведомления о падениях сайта, но как полезный "побочный эффект" он не даст заснуть приложению. На этом методе, как на самом, на мой взгляд, красивом, я и остановился. Опишу его подробнее.
Чтобы установить addon, нужно перейти по данной ссылке и нажать кнопку "Install New Relic APM". В открывшемся окне нужно выбрать тарифный план и название приложения, к которому будет применен данный addon.
После чего нажать кнопку "Provision add-on".
После установки New Relic станет доступен на странице настройки приложения в списке установленных аддонов.
Клацаем на ссылку и попадаем на страницу настроек дополнения.
Переходим на вкладку "Synthetics" и нажимаем кнопку "Add new".
В открывшемся окне в разделе "Enter the details" указываем произвольное название монитора и адрес сайта, который будем мониторить. Выбираем локацию, откуда будет сайт проверяться в "Select monitoring locations".
Периодичность проверки указываем в "Set the shedule" (я ставил 15 минут) и email для уведомлений в "Get notified".
Читайте также: