Поиск по сайту:

Как использовать PostgreSQL с приложением Ruby on Rails в Ubuntu 20.04


Введение

При использовании базы данных PostgreSQL будет более надежный и гибкий выбор. Вам нужно будет выполнить дополнительные шаги, чтобы настроить установку Ruby on Rails для использования PostgreSQL.

В этом руководстве вы настроите среду разработки Ruby on Rails, подключенную к базе данных PostgreSQL на сервере Ubuntu 20.04. Вы установите и настроите PostgreSQL, а затем протестируете свою установку, создав приложение Rails, использующее PostgreSQL в качестве сервера базы данных.

Предпосылки

Для этого урока требуется следующее:

  • Сервер Ubuntu 20.04, настроенный в соответствии с Руководством по начальной настройке сервера для Ubuntu 20.04, включая пользователя без полномочий root с привилегиями sudo и брандмауэром.
  • Среда разработки Ruby on Rails, установленная на вашем сервере Ubuntu 20.04. Чтобы настроить это, следуйте Rails.

Шаг 1 — Установка PostgreSQL

Чтобы настроить Ruby on Rails с PostgreSQL в качестве базы данных для вашего веб-приложения, вы сначала установите базу данных на свой сервер.

Используя привилегии sudo, обновите индекс пакетов APT, чтобы убедиться, что ваши репозитории обновлены:

  1. sudo apt update

Затем установите PostgreSQL и его библиотеки разработки:

  1. sudo apt install postgresql postgresql-contrib libpq-dev

В предыдущей команде пакет postgresql содержит основную программу PostgreSQL, а postgresql-contrib добавляет несколько функций PostgreSQL, расширяющих его возможности. libpq-dev — это библиотека PostgreSQL, которая позволяет клиентам отправлять запросы и получать ответы от внутреннего сервера, что позволит вашему приложению взаимодействовать со своей базой данных.

После установки PostgreSQL и его зависимостей следующим шагом будет создание роли, которую ваше приложение Rails будет использовать позже для создания базы данных.

Шаг 2 — Создание новой роли базы данных

В PostgreSQL роли можно использовать для организации разрешений и авторизации так же, как это делают пользователи в Linux. На этом шаге вы создадите новую роль суперпользователя для своего имени пользователя Linux, которая позволит вам создавать и настраивать базы данных в системе PostgreSQL.

Чтобы создать роль суперпользователя PostgreSQL, выполните следующую команду, заменив выделенное слово своим именем пользователя Ubuntu 20.04:

  1. sudo -u postgres createuser -s sammy -P

Поскольку вы указали флаг -P, вам будет предложено ввести пароль для вашей новой роли. Введите желаемый пароль, обязательно запишите его, чтобы вы могли использовать его в файле конфигурации на более позднем этапе.

Вы используете createuser для создания роли с именем sammy (или предпочитаемым вами именем пользователя). Флаг -s дает этому пользователю привилегии суперпользователя, а sudo -u позволяет запускать команду из учетной записи postgres, которая создается автоматически. после установки PostgreSQL.

Примечание. Поскольку режим аутентификации для PostgreSQL в Ubuntu начинается с ident, по умолчанию пользователь Ubuntu может работать в PostgreSQL только с ролью с таким же именем. Для получения дополнительной информации ознакомьтесь с официальной документацией PostgreSQL по аутентификации.

Если вы не использовали флаг -P и хотите установить пароль для роли после ее создания, войдите в консоль PostgreSQL с помощью следующей команды:

  1. sudo -u postgres psql

Вы получите следующий вывод вместе с приглашением для консоли PostgreSQL:

Output
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)) Type "help" for help. postgres=#

Консоль PostgreSQL обозначается приглашением postgres=#. В приглашении PostgreSQL введите эту команду, чтобы установить пароль для новой роли базы данных, заменив выделенное имя на созданное вами:

  1. \password sammy

PostgreSQL запросит у вас пароль. Введите желаемый пароль в приглашении, затем подтвердите его.

Теперь выйдите из консоли PostgreSQL, введя эту команду:

  1. \q

Ваша обычная подсказка снова появится.

На этом шаге вы создали новую роль PostgreSQL с привилегиями суперпользователя. Теперь вы готовы создать новое приложение Rails, которое использует эту роль для создания базы данных.

Шаг 3 – Создание нового приложения Rails

С ролью, настроенной для PostgreSQL, теперь вы можете создать новое приложение Rails, настроенное на использование PostgreSQL в качестве базы данных.

Сначала перейдите в свой домашний каталог:

  1. cd ~

Создайте новое приложение Rails в этом каталоге, заменив appname тем, что вы хотите назвать своим приложением:

  1. rails new appname -d=postgresql

Опция -d=postgresql устанавливает PostgreSQL в качестве базы данных.

Как только вы запустите эту команду, в вашем домашнем каталоге появится новая папка с именем appname, содержащая все элементы базового приложения Rails.

Затем перейдите в каталог приложения:

  1. cd appname

Теперь, когда вы создали новое приложение Rails и переместились в корневой каталог вашего проекта, вы можете настроить и создать базу данных PostgreSQL из своего приложения Rails.

Шаг 4 — Настройка и создание вашей базы данных

При создании баз данных development и test для вашего приложения Rails будет использовать роль PostgreSQL, которую вы создали для своего имени пользователя Ubuntu. Чтобы убедиться, что Rails создает эти базы данных, вы измените файл конфигурации базы данных вашего проекта. Затем вы создадите свои базы данных.

Одно из изменений конфигурации, которые необходимо внести в ваше приложение Rails, — добавить пароль для роли PostgreSQL, созданной на последнем шаге. Чтобы обеспечить безопасность конфиденциальной информации, такой как пароли, рекомендуется хранить пароль в переменной среды, а не записывать его непосредственно в файл конфигурации.

Чтобы сохранить пароль в переменной среды при входе в систему, выполните следующую команду, заменив APPNAME именем вашего приложения и PostgreSQL_Role_Password. с паролем, который вы создали на последнем шаге:

  1. echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc

Эта команда записывает команду export в ваш файл ~/.bashrc, чтобы при входе в систему была установлена переменная среды.

Чтобы экспортировать переменную для текущего сеанса, используйте команду source:

  1. source ~/.bashrc

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

Откройте файл конфигурации базы данных вашего приложения в предпочитаемом вами текстовом редакторе. В этом руководстве будет использоваться nano:

  1. nano config/database.yml

В разделе default найдите строку с надписью pool: <%= ENV.fetch(RAILS_MAX_THREADS) { 5 } %> и добавьте следующие выделенные строки, заполнив в ваших учетных данных и созданной вами переменной среды. Это должно выглядеть примерно так:

...
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: sammy
  password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

development:
  <<: *default
  database: appname_development
...

Это обновление заставит приложение Rails запускать базу данных с правильной ролью и паролем. Сохраните и выйдите, нажав CTRL + x, Y, затем ENTER.

Для получения дополнительной информации о настройке баз данных в Rails см. документацию по Rails.

Теперь, когда вы внесли изменения в config/database.yml, создайте базы данных вашего приложения с помощью команды rails:

  1. rails db:create

Как только Rails создаст базу данных, вы получите следующий вывод:

Output
Created database 'appname_development' Created database 'appname_test'

Как следует из вывода, эта команда создала базу данных development и test на вашем сервере PostgreSQL.

Теперь у вас есть база данных PostgreSQL, подключенная к вашему приложению Rails. Чтобы убедиться, что ваше приложение работает, вы сейчас протестируете свою конфигурацию.

Шаг 5 — Тестирование вашей конфигурации

Чтобы проверить, может ли ваше приложение использовать базу данных PostgreSQL, вы запустите свое веб-приложение, чтобы оно отображалось в браузере.

Используя команду rails server, запустите свое веб-приложение на встроенном веб-сервере в вашем приложении Rails, Puma:

  1. rails server --binding=127.0.0.1

--binding привязывает ваше приложение к указанному IP-адресу. По умолчанию этот флаг привязывает Rails к 0.0.0.0, что означает, что Rails будет прослушивать все интерфейсы, поэтому более безопасно использовать 127.0.0.1 для указания локальный. По умолчанию приложение прослушивает порт 3000.

Как только ваше приложение Rails запустится, ваша командная строка исчезнет, заменившись этим выводом:

Output
=> Booting Puma => Rails 7.0.4 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma Version 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop

Чтобы проверить, запущено ли ваше приложение, откройте новое окно терминала на своем сервере и используйте команду curl для отправки запроса на 127.0.0.1:3000:

  1. curl http://127.0.0.1:3000

Вы получите много вывода в HTML, заканчивающегося чем-то вроде:

Output
... <strong>Rails version:</strong> 7.0.4<br /> <strong>Ruby version:</strong> 3.1.2 (x86_64-linux) </p> </section> </div> </body> </html>

Если ваше приложение Rails находится на удаленном сервере и вы хотите получить к нему доступ через веб-браузер, вы можете привязать его к общедоступному IP-адресу вашего сервера. Сначала откройте порт 3000 в брандмауэре:

  1. sudo ufw allow 3000

Затем найдите общедоступный IP-адрес вашего сервера. Вы можете сделать это, выполнив следующую команду curl:

  1. curl http://icanhazip.com

Это вернет ваш общедоступный IP-адрес. Используйте его с командой rails server, заменив server_public_IP общедоступным IP-адресом вашего сервера:

  1. rails server --binding=server_public_IP

Теперь вы сможете получить доступ к своему приложению Rails в локальном веб-браузере через общедоступный IP-адрес сервера на порту 3000, посетив:

http://server_public_IP:3000

По этому URL-адресу вы найдете страницу Ruby on Rails:

Если вы можете получить доступ к домашней странице, ваше приложение правильно настроено и подключено к базе данных PostgreSQL.

После тестирования конфигурации, если вы хотите закрыть порт 3000, используйте следующую команду.

  1. sudo ufw delete allow 3000

Заключение

В этом руководстве вы создали веб-приложение Ruby on Rails, настроенное для использования PostgreSQL в качестве базы данных на сервере Ubuntu 20.04. Если вы хотите узнать больше о языке программирования Ruby, ознакомьтесь с нашей серией статей «Как программировать на Ruby».

Для получения дополнительной информации о выборе базы данных для вашего приложения ознакомьтесь с нашим руководством о различиях и вариантах использования продукта управляемых баз данных.