序章
これまで、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. サーバーのセットアップ構造
- 複数のアプリケーションサーバーの負荷分散
- データベースサーバーレイヤー
3. デプロイメントセットアップへのデータベースサーバーの追加
- サーバーの準備
4. PostgreSQLのインストール
- PostgreSQLソフトウェアリポジトリの追加
- PostgreSQLのインストール
5. PostgreSQLの構成
- デフォルトの変更
postgres
利用者パスワード - 役割とデータベースの作成
- リモート接続の有効化
6. Railsアプリケーションの構成
- 構成
database.yml
レール用 - 取得する
PostgreSQL
宝石
データベースの選択
Ruby on Railsアプリケーション開発フレームワークは、データベースサーバーにさまざまなサポートを提供します。 ほとんどのアプリケーションでは、リレーショナルデータベース管理システムが最適です。 ただし、リレーショナルサーバーまたは両方を一緒に実行する代わりに、非リレーショナルのスキーマレスNoSQLデータベースサーバーが必要になる場合があります。
自分の開発用コンピューターでRailsの操作を開始する場合、最も簡単でおそらく最も論理的な方法は、機能はあるが基本的なデータベース実装(SQLiteライブラリなど)を使用することから始めることです。 ただし、実際の展開では、SQLiteではアプリケーションの負荷を処理するには不十分である可能性があります[したがって、本格的なRDBMSが必要です]。
ニーズとアプリケーションの種類に応じて、データベース管理システムを決定する必要があります(つまり、 データベースサーバー)を使用して、アプリケーション展開セットアップのデータベースレイヤーを作成します。
リレーショナルデータベースの場合、より一般的な選択肢のいくつかは次のとおりです。
- PostgreSQLとその派生物:
最も人気があり、一般的に使用されているRDBMSおよび関連するフォークプロジェクト。
- PostgreSQL:
最も高度な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アプリケーションサーバーはすべての操作に新しいデータベースサーバーを使用します。