開発者ドキュメント

RubyonRailsのスケーリング:専用のPostgreSQLサーバーのセットアップ(パート3)

序章


これまで、Ruby-on-Railsアプリケーションをデプロイするさまざまな方法について説明してきました(例: UnicornとNginxを搭載したRails 乗客とNginxを備えたレール )、設定スケーラブルなサーバー構造接続する方法を学びました専用のMySQLインスタンス Railsアプリケーションサーバーに。

このDigitalOceanScaling-Rails シリーズのインストールでは、 PostgreSQL サーバーを最初から構築して、Ruby-on-Railsのデータベース永続化レイヤーとして使用する方法を説明します。 Webアプリケーション。 続いて、必要な構成変更を行って、Railsアプリケーションサーバーをデータベースに接続する方法を見ていきます。

注:この記事は、すでに述べたように、Scaling-Railsシリーズの一部であり、専用のUbuntuVPSにPostgreSQLサーバーをインストールすることで構成されています。 ただし、ここで説明したのとまったく同じ方法でPostgreSQLをインストールして、Railsアプリケーションと一緒に単一の仮想サーバーで使用することができます。 UnicornまたはPassengerを使用して単一のドロップレットにRailsを展開する方法を確認するには、最初の段落にあるリンクをクリックしてから、ここから続行してデータベースレイヤーを形成してください。

用語集


1. データベースの選択


2. サーバーのセットアップ構造


  1. 複数のアプリケーションサーバーの負荷分散
  2. データベースサーバーレイヤー

3. デプロイメントセットアップへのデータベースサーバーの追加


  1. サーバーの準備

4. PostgreSQLのインストール


  1. PostgreSQLソフトウェアリポジトリの追加
  2. PostgreSQLのインストール

5. PostgreSQLの構成


  1. デフォルトの変更 postgres 利用者パスワード
  2. 役割とデータベースの作成
  3. リモート接続の有効化

6. Railsアプリケーションの構成


  1. 構成 database.yml レール用
  2. 取得する PostgreSQL 宝石

データベースの選択


Ruby on Railsアプリケーション開発フレームワークは、データベースサーバーにさまざまなサポートを提供します。 ほとんどのアプリケーションでは、リレーショナルデータベース管理システムが最適です。 ただし、リレーショナルサーバーまたは両方を一緒に実行する代わりに、非リレーショナルのスキーマレスNoSQLデータベースサーバーが必要になる場合があります。

自分の開発用コンピューターでRailsの操作を開始する場合、最も簡単でおそらく最も論理的な方法は、機能はあるが基本的なデータベース実装(SQLiteライブラリなど)を使用することから始めることです。 ただし、実際の展開では、SQLiteではアプリケーションの負荷を処理するには不十分である可能性があります[したがって、本格的なRDBMSが必要です]。

ニーズとアプリケーションの種類に応じて、データベース管理システムを決定する必要があります(つまり、 データベースサーバー)を使用して、アプリケーション展開セットアップのデータベースレイヤーを作成します。

リレーショナルデータベースの場合、より一般的な選択肢のいくつかは次のとおりです。

最も人気があり、一般的に使用されているRDBMSおよび関連するフォークプロジェクト。

最も高度なSQL準拠のオープンソース目標-RDBMS。

非リレーショナルデータベースサーバーの場合:

Cassandra、HBaseなど。

MongoDB、Couchbaseなど

OrientDB、Neo4Jなど。

データベースサーバーの展開を続行する前に明確で長期的な決定を下すために、このテーマに関する記事を読むことに興味があるかもしれません。

SQLおよびNoSQLデータベースとさまざまなデータベースモデルを理解する

リレーショナルデータベース管理システムの比較

NoSQLデータベース管理システムとモデルの比較

サーバーのセットアップ構造


データベースレイヤーの構築を開始する前に、最終的な展開のセットアップがどのようになるかを見てみましょう。

複数のアプリケーションサーバーの負荷分散


以前は、複数のアプリケーションサーバーでロードバランサー/リバースプロキシを作成した後、これが最終的に得られたものです。

Three droplets with each having a distinct role:
------------------------------------------------
1 x Load-Balancer / Reverse-Proxy
2 x Application Servers Running Your Rails Web-Application / API

                             ---

                    DEPLOYMENT STRUCTURE

             +-------------------------------+
             |                               |
             | LOAD-BALANCER / REVERSE PROXY |
             |                               |
             +-------------------------------+
                             +
                             |
                             |
        +---------------+    |    +---------------+
        |  APP  SERVER  |    |    |  APP  SERVER  |
        |---------------|    |    |---------------|
        |               |    |    |               |
        |     RAILS     |<---+--->|     RAILS     |
        |               |         |               |
        +---------------+         +---------------+

データベースサーバーレイヤー


一元的にアクセス可能なデータベースサーバーを使用するため(例: RDBMSおよび/またはNoSQLデータベース)、サーバー設定に4番目の要素を追加します。

Four droplets:
------------------------------------------------
1 x Load-Balancer / Reverse-Proxy
2 x Application Servers Running Your Rails Web-Application / API
1 x Database Server (e.g. PostgreSQL, PostgreSQL, MongoDB etc.)

             +-------------------------------+
             |                               |
             | LOAD-BALANCER / REVERSE PROXY |
             |                               |
             +-------------------------------+
                             +
                             |
                             |
        +---------------+    |    +---------------+
        |  APP  SERVER  |    |    |  APP  SERVER  |
        |---------------|    |    |---------------|
        |               |    |    |               |
        |     RAILS     |<---+--->|     RAILS     |
        |               |         |               |
        +---------------+         +---------------+
                +                         +
                |                         |
                |  +-------------------+  |
                |  |  DATABASE SERVER  |  |
                |  |-------------------|  |
                |  |                   |  |
                |  |       PostgreSQL,      |  |
                +->|     PostgreSQL,   |<-+
                   |        etc.       |
                   |                   |
                   +-------------------+

デプロイメントセットアップへのデータベースサーバーの追加


この記事では、Ubuntu13VPS上にPostgreSQLデータベース管理サーバーを作成して構成します。

さぁ、始めよう!

サーバーの準備


ソフトウェアソースリストを更新し、古いアプリケーションをアップグレードします。

aptitude    update
aptitude -y upgrade

次のコマンドを実行してインストールします build-essential パッケージ:

aptitude install -y build-essential

次のコマンドを実行して、一般的に使用される追加のツールをインストールします。

aptitude install -y cvs subversion git-core mercurial

PostgreSQLのインストール


PostgreSQLソフトウェアリポジトリの追加


PostgreSQLの最新バージョンをダウンロードするには(9.3)、リポジトリをに追加する必要があります aptitude ソースリスト。

次のコマンドを実行して、PostgreSQLのソースリストを作成します。

nano  /etc/apt/sources.list.d/pgdg.list

以下の内容をコピーして貼り付けます。

deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main

CTRL + Xを押し、Yで確定して、保存して終了します。

注: Ubuntu 13(saucy)を使用していることを前提としています。 別のバージョンを使用している場合は、 lsb_release -c ディストリビューションの名前を見つけて、次のように置き換えます saucy 上記の手順で。

ソースリストを更新して、新しい追加を含めます。

aptitude    update
aptitude -y upgrade

PostgreSQLのインストール


これで、デフォルトのパッケージマネージャーを使用してソースにアクセスできるようになりました aptitude (また apt-get)PostgreSQLの利用可能な最新バージョンを直接インストールできます。

次のコマンドを実行してPostgreSQLvをインストールします。 9.3:

aptitude install postgresql-9.3 pgadmin3 

PostgreSQLの構成


デフォルトの変更 postgres 利用者パスワード


データベースを操作するには、デフォルトのパスワードを変更する必要があります。

次のコマンドを実行して、プロセスを開始します。

sudo -u postgres psql postgres

次のようなプロンプトが表示されたら postgres=#、次のように入力します。

\password postgres

パスワードを入力し、もう一度入力して確認し、CTRL + Zを押すか、 \qと入力して終了します。

役割とデータベースの作成


次のコマンドを使用してPostgreSQLにログインします。

sudo -u postgres psql

そして、以下の手順を実行して、Railsで使用するロールデータベースを作成します。

# Usage: CREATE USER [user name] WITH PASSWORD '[password]';
# Example:
CREATE USER rails_myapp_user WITH PASSWORD 'pwd';

# Usage: CREATE DATABASE [database name] OWNER [user name];
# Example:
CREATE DATABASE rails_myapp OWNER rails_myapp_user;

Ctrl + Zキーを押すか、 \qと入力して終了します。

注: PostgreSQLの役割と管理については、次の記事を確認してください。

リモート接続の有効化


Railsアプリケーションを実行しているリモートコンピューターからPostgreSQLサーバーにアクセスできるようにする必要があるため、構成ファイルを変更する必要があります。

次のコマンドを実行して、PostgreSQL構成を編集します postgresql.conf nanoテキストエディタの使用:

nano /etc/postgresql/9.3/main/postgresql.conf

ドロップレットに割り当てられたIPアドレスからの接続をリッスンするようにPostgreSQLに指示します。

ファイルを下にスクロールして、次の行を見つけます。

#listen_addresses = 'localhost'

次のように変更します。

listen_addresses = '*'

そして、CTRL + Xを押してYで確定することにより、保存して終了します。

次に、ファイアウォールの動作と同様に、PostgreSQLに受け入れたい特定の接続を指示する必要があります。

次のコマンドを実行してPostgreSQLを編集します hba ファイル pg_hba.conf nanoテキストエディタの使用:

nano /etc/postgresql/9.3/main/pg_hba.conf

ファイルを下にスクロールして、次のセクションを見つけます。

# Put your actual configuration here
# ..

コメントブロックの後に、次の行を追加します。

# TYPE   DATABASE      USER        ADDRESS        METHOD
host        all        all        0.0.0.0/0        md5

また、CTRL + Xを押してYで確定することにより、保存して終了します。

次のコマンドを使用してPostgreSQLデーモンを再起動します。

service postgresql restart

#  * Restarting PostgreSQL 9.3 database server
# ...done.

Railsアプリケーションの構成


このセクションでは、Railsアプリケーションサーバーを変更して、セットアップしたばかりのデータベースサーバーで動作を開始します。

構成 database.yml レール用


Railsアプリケーションのデータベース設定は内部に保持されます database.yml のファイル /config ディレクトリ。

次のコマンドを実行して、 database.yml nanoテキストエディタを使用したファイル:

# Make sure to enter your application deployment directory
# Example:
# cd /var/www/my_app

nano config/database.yml

このファイルを開くと、データベース設定が環境名で分割されているのがわかります。 アプリケーションはを使用して実行する必要があるため、 production 環境、そのための構成を編集しましょう。

交換してください production: YML 次のコードブロック、独自のセットアップ構成に合わせて必要なビットを変更します。 IPアドレスなど。

# Example:
# production:
#   adapter: postgresql
#   encoding: utf8
#   database: [database name]
#   username: [user name]
#   password: [password]
#   host: [server IP address]
#   port: [port number]
#   protocol: [protocol]
#   pool: [connection pool]

production:
  adapter: postgresql
  encoding: utf8
  database: rails_myapp
  username: rails_myapp_user
  password: pwd
  host: 128.199.233.36
  port: 5432
  pool: 10

注:上記の例で提供されているように、プロトコルを指定する必要がある場合があります。

注: pool 引数には、最大同時データベース接続スロットの数が含まれます(つまり、 プール)利用可能。 あなたはあなたのニーズを評価し、それに応じて数を設定する必要があります。

CTRL + Xを押し、Yで確定して、保存して終了します。

取得する PostgreSQL 宝石


以下を使用して、nanoを使用してGemfileの編集を開始します。

nano Gemfile

次の行をファイルに追加します。

gem 'pg'

CTRL + Xを押し、Yで確定して、保存して終了します。

を使用して新しいgemをインストールします bundle:

bundle install

以上です! 今後、Railsアプリケーションサーバーはすべての操作に新しいデータベースサーバーを使用します。

投稿者: https ://twitter.com/ostezer ”> OS Tezer
モバイルバージョンを終了