Ubuntu 18.04でRuby on RailsアプリケーションでPostgreSQLを使用する方法

前書き

Ruby on Rails Webフレームワークを使用する場合、アプリケーションはデフォルトでデータベースとしてhttps://www.sqlite.org/index.html[SQLite]を使用するように設定されます。 SQLiteは、軽量で移植性が高く、ユーザーフレンドリーなリレーショナルデータベースであり、低メモリ環境で特に優れたパフォーマンスを発揮し、多くの場合にうまく機能します。 ただし、より信頼性の高いデータ整合性とプログラムによる拡張性を必要とする非常に複雑なアプリケーションの場合、https://www.postgresql.org/ [PostgreSQL]データベースがより堅牢で柔軟な選択肢になります。 PostgreSQLを使用するようにRuby on Railsセットアップを構成するには、いくつかの追加手順を実行して実行する必要があります。

このチュートリアルでは、Ubuntu 18.04サーバー上のPostgreSQLデータベースに接続されたRuby on Rails開発環境をセットアップします。 PostgreSQLをインストールして構成し、PostgreSQLをデータベースサーバーとして使用するRailsアプリケーションを作成して、セットアップをテストします。

前提条件

このチュートリアルには次のものが必要です。

  • Ubuntu 18.04の初期サーバーセットアップガイドに従ってセットアップされたUbuntu 18.04サーバー。 sudo特権とファイアウォールを持つrootユーザー。

  • Ubuntu 18.04サーバーにインストールされたRuby on Rails開発環境。 これを設定するには、https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-18-04 [インストール方法]のガイドに従ってください。 Ubuntu 18.04でのrbenvを使用したRuby on Rails]。 このチュートリアルでは、Rubyのバージョン2.6.3とRailsの5.2.3を使用します。最新バージョンの詳細については、https://www.ruby-lang.org/en/downloads/releases/ [Ruby]およびhttps://guides.rubyonrails.org/[Rails]の公式サイトをご覧ください。

ステップ1 – PostgreSQLのインストール

PostgreSQLをデータベースとして使用してWebアプリケーションを作成するようにRuby on Railsを構成するには、まずデータベースをサーバーにインストールします。

`+ 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では、Linuxのユーザーと同じ方法で*ロール*を使用して、権限と承認を整理できます。 このステップでは、Linuxユーザー名の新しいスーパーユーザーロールを作成し、PostgreSQLシステム内で操作してデータベースを作成および構成できるようにする方法を示します。

PostgreSQLのスーパーユーザーロールを作成するには、次のコマンドを使用して、強調表示された単語をUbuntu 18.04のユーザー名に置き換えます。

sudo -u postgres createuser -s  -P

`+ -P +`フラグを指定したため、新しいロールのパスワードを入力するよう求められます。 希望のパスワードを入力し、将来のステップで構成ファイルで使用できるように必ず記録してください。

このコマンドでは、「+ createuser 」を使用して「+」という名前のロールを作成しました。 `+ -s `はこのユーザーにスーパーユーザー権限を与え、 ` sudo -u `はPostgreSQLのインストール時に自動的に作成される ` postgres +`アカウントからコマンドを実行できるようにしました。

`+ -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用に設定されたロールを使用して、PostgreSQLをデータベースとして使用するように設定された新しいRailsアプリケーションを作成できるようになりました。

最初に、ホームディレクトリに移動します。

cd ~

このディレクトリに新しいRailsアプリケーションを作成し、「++」をアプリの呼び出したい名前に置き換えます。

rails new  -d=postgresql

`+ -d = postgresql +`オプションはPostgreSQLをデータベースとして設定します。

このコマンドを実行すると、「++」という名前の新しいフォルダーがホームディレクトリに表示され、基本的なRailsアプリケーションのすべての要素が含まれます。

次に、アプリケーションのディレクトリに移動します。

cd

新しいRailsアプリケーションを作成し、プロジェクトのルートディレクトリに移動したので、Railsアプリ内からPostgreSQLデータベースを構成および作成できます。

ステップ4 –データベースの構成と作成

アプリケーション用に + development`および + test`データベースを作成する場合、RailsはUbuntuユーザー名用に作成したPostgreSQLロールを使用します。 Railsがこれらのデータベースを作成することを確認するには、プロジェクトのデータベース構成ファイルを変更します。 次に、データベースを作成します。

Railsアプリケーションで行う構成変更の1つは、最後の手順で作成したPostgreSQLロールのパスワードを追加することです。 パスワードなどの機密情報を安全に保つために、構成ファイルに直接書き込むのではなく、環境変数に保存することをお勧めします。

ログイン時に環境変数にパスワードを保存するには、次のコマンドを実行します。` `をアプリの名前に、` `を最後の手順で作成したパスワードに置き換えます。

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

このコマンドは、環境変数がログイン時に設定されるように、 +〜/ .bashrc`ファイルに + export`コマンドを書き込みます。

現在のセッションの変数をエクスポートするには、 `+ source +`コマンドを使用します:

source ~/.bashrc

環境にパスワードを保存したら、構成ファイルを変更します。

任意のテキストエディターでアプリケーションのデータベース構成ファイルを開きます。 このチュートリアルでは、 `+ nano +`を使用します。

nano config/database.yml

「+ default 」セクションの下で、「 pool:<%= ENV.fetch( "RAILS_MAX_THREADS"){5}%> + `」という行を見つけて、以下の強調表示された行を追加し、資格情報と環境変数を入力します。作成しました。 これは次のようになります。

config / 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でのデータベースの構成の詳細については、https://guides.rubyonrails.org/configuring.html#configuring-a-database [Rails documentation]を参照してください。

`+ config / database.yml `に変更を加えたので、 ` rails +`コマンドを使用してアプリケーションのデータベースを作成します:

rails db:create

Railsがデータベースを作成すると、次の出力が表示されます。

OutputCreated database '_development'
Created database '_test'

出力が示唆するように、このコマンドはPostgreSQLサーバーに + development`および + test`データベースを作成します。

これで、Railsアプリに接続されたPostgreSQLデータベースができました。 アプリケーションが機能していることを確認するために、次のステップは構成をテストすることです。

ステップ5 –構成のテスト

アプリケーションがPostgreSQLデータベースを使用できることをテストするには、Webアプリケーションを実行して、ブラウザーに表示されるようにします。

`+ rails server +`コマンドを使用して、Railsアプリ(https://github.com/puma/puma[Puma])の組み込みWebサーバーでWebアプリケーションを実行します。

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アプリケーションがリモートサーバー上にあり、Webブラウザーからアクセスしたい場合、簡単な方法は、サーバーのパブリックIPアドレスにバインドすることです。 まず、ファイアウォールでポート「3000」を開きます。

sudo ufw allow 3000

次に、サーバーのパブリックIPアドレスを検索します。 これを行うには、次の `+ curl +`コマンドを実行します:

curl http://icanhazip.com

これにより、パブリックIPアドレスが返されます。 これを「+ rails server」コマンドで使用し、「++」をサーバーのパブリックIPに置き換えます。

rails server --binding=

これで、次の場所にアクセスして、ポート `+ 3000 +`上のサーバーのパブリックIPアドレスを介してローカルWebブラウザーでRailsアプリケーションにアクセスできるようになります。

http://:3000

このURLには、Ruby on Railsのウェルカムページがあります。

image:https://assets.digitalocean.com/articles/cart_66605/Rails_Welcome.png [Ruby on Railsウェルカムページ]

これは、アプリケーションが適切に構成され、PostgreSQLデータベースに接続されていることを意味します。

設定をテストした後、ポート「3000」を閉じたい場合は、次のコマンドを使用します。

sudo ufw delete allow 3000

結論

このチュートリアルでは、Ubuntu 18.04サーバー上のデータベースとしてPostgreSQLを使用するように設定されたRuby on Rails Webアプリケーションを作成しました。 Rubyプログラミング言語について詳しく知りたい場合は、https://www.digitalocean.com/community/tutorial_series/how-to-code-in-ruby [Rubyシリーズのコーディング方法]をご覧ください。

アプリケーション用のデータベースの選択の詳細については、https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparisonの違いとユースケースに関するチュートリアルをご覧ください。 -リレーショナルデータベース管理システム[SQLite、PostgreSQL、およびMySQL]。 データベースの使用方法の詳細については、https://www.digitalocean.com/community/tutorials/introduction-to-queries-postgresql [PostgreSQLのクエリの概要]の記事を参照するか、DigitalOceanのhttpsをご覧ください。 //www.digitalocean.com/products/managed-databases/[Managed Databases product]。

Related