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

Вступление

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

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

Предпосылки

Этот учебник требует следующего:

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

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

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

sudo apt update

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

sudo apt install postgresql postgresql-contrib libpq-dev

В предыдущей команде пакет + postgresql + содержит основную программу PostgreSQL, а https://packages.debian.org/jessie/postgresql-contrib-9.4 [+ postgresql-contrib +] добавляет несколько функций PostgreSQL, расширяющих его возможностей. + libpq-dev + - это библиотека PostgreSQL, которая позволяет клиентам отправлять запросы и получать ответы от внутреннего сервера, что позволит вашему приложению взаимодействовать со своей базой данных.

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

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

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

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

sudo -u postgres createuser -s  -P

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

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

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

sudo -u postgres psql

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

Outputpsql ( (Ubuntu -0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

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

\password

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

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

\q

Ваш обычный запрос теперь появится снова.

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

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

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

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

cd ~

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

rails new  -d=postgresql

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

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

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

cd

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

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

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

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

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

echo 'export _DATABASE_PASSWORD=""' >> ~/.bashrc

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

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

source ~/.bashrc

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

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

nano config/database.yml

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

конфиг / database.yml

...
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 } %>



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

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

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

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

rails db:create

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

OutputCreated database '_development'
Created database '_test'

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

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

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

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

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

rails server --binding=127.0.0.1

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

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

Output=> Booting Puma
=> Rails  application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version  (ruby -p62), codename: Llamas in Pajamas
* 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 +:

curl http://127.0.0.1:3000

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

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

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

sudo ufw allow 3000

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

curl http://icanhazip.com

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

rails server --binding=

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

http://:3000

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

изображение: https: //assets.digitalocean.com/articles/cart_66605/Rails_Welcome.png [Страница приветствия Ruby on Rails]

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

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

sudo ufw delete allow 3000

Заключение

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

Для получения дополнительной информации о выборе базы данных для вашего приложения, ознакомьтесь с нашим руководством по различиям и случаям использования https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison -of-реляционных систем управления базами данных [SQLite, PostgreSQL и MySQL]. Если вы хотите узнать больше о том, как использовать базы данных, см. Нашу статью An Введение в запросы в PostgreSQL или изучите https в DigitalOcean: //www.digitalocean.com/products/managed-databases/[Managed Databases product].

Related