序章

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

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

前提条件

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

  • Ubuntu 18.04初期サーバーセットアップガイドに従ってセットアップされたUbuntu18.04サーバー。これには、sudo権限を持つroot以外のユーザーとファイアウォールが含まれます。

  • Ubuntu18.04サーバーにインストールされたRubyonRails開発環境。 これを設定するには、 Ubuntu18.04でrbenvを使用してRubyonRailsをインストールする方法に関するガイドに従ってください。 このチュートリアルでは、Rubyのバージョン2.6.3とRailsの5.2.3を使用します。 最新バージョンについては、RubyおよびRailsの公式サイトをご覧ください。

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

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

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

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

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

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

このコマンドでは、 createuser 名前の付いたロールを作成するには sammy. The -s このユーザーにスーパーユーザー特権を与え、 sudo -u からコマンドを実行できるようになりました postgres PostgreSQLのインストール時に自動的に作成されるアカウント。

注: Ubuntu 18.04でのPostgreSQLの認証モードは、次のように開始されるため ident、デフォルトでは、Ubuntuユーザーは同じ名前のロールを持つPostgreSQLでのみ操作できます。 詳細については、認証に関するPostgreSQLの公式ドキュメントを確認してください。

使用しなかった場合 -P フラグを立て、ロールの作成後にロールのパスワードを設定する場合は、次のコマンドを使用してPostgreSQLコンソールに入ります。

  1. sudo -u postgres psql

PostgreSQLコンソールのプロンプトとともに、次の出力が表示されます。

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

PostgreSQLコンソールは postgres=# 促す。 PostgreSQLプロンプトで、次のコマンドを入力して、新しいデータベースロールのパスワードを設定し、強調表示された名前を作成した名前に置き換えます。

  1. \password sammy

PostgreSQLはパスワードの入力を求めます。 プロンプトで目的のパスワードを入力し、確認します。

次に、次のコマンドを入力してPostgreSQLコンソールを終了します。

  1. \q

通常のプロンプトが再び表示されます。

このステップでは、スーパーユーザー権限を持つ新しいPostgreSQLロールを作成しました。 これで、この役割を使用してデータベースを作成する新しいRailsアプリを作成する準備が整いました。

ステップ3–新しいRailsアプリケーションを作成する

PostgreSQL用に構成されたロールを使用して、PostgreSQLをデータベースとして使用するように設定された新しいRailsアプリケーションを作成できるようになりました。

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

  1. cd ~

このディレクトリに新しいRailsアプリケーションを作成し、 appname あなたがあなたのアプリと呼びたいものは何でも:

  1. rails new appname -d=postgresql

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

このコマンドを実行すると、 appname 基本的なRailsアプリケーションのすべての要素を含むホームディレクトリに表示されます。

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

  1. cd appname

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

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

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

Railsアプリケーションで行う構成変更の1つは、最後の手順で作成した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 } %> 次の強調表示された行を追加して、資格情報と作成した環境変数を入力します。 次のようになります。

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

出力が示すように、このコマンドは developmenttest PostgreSQLサーバーのデータベース。

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

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

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

を使用して rails server コマンドを実行し、Railsアプリの組み込みWebサーバーPumaでWebアプリケーションを実行します。

  1. 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 5.2.3 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.6.3-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:

  1. curl http://127.0.0.1:3000

HTMLで多くの出力を受け取り、次のようになります。

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

Railsアプリケーションがリモートサーバー上にあり、Webブラウザーを介してアクセスしたい場合、簡単な方法は、サーバーのパブリック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

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

http://server_public_IP:3000

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

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

構成をテストした後、ポートを閉じたい場合 3000、次のコマンドを使用します。

  1. sudo ufw delete allow 3000

結論

このチュートリアルでは、Ubuntu18.04サーバー上のデータベースとしてPostgreSQLを使用するように構成されたRubyonRailsWebアプリケーションを作成しました。 Rubyプログラミング言語について詳しく知りたい場合は、Rubyシリーズのコーディング方法をご覧ください。

アプリケーション用のデータベースの選択の詳細については、 SQLite、PostgreSQL、およびMySQLの違いとユースケースに関するチュートリアルを確認してください。 データベースの使用方法について詳しく知りたい場合は、 PostgreSQLでのクエリの概要の記事を参照するか、DigitalOceanの管理対象データベース製品を参照してください。