扩展 Rails 上的 Ruby:设置专用 PostgreSQL 服务器(第 3 部分)

介绍


此前,我们已经涵盖了部署 Ruby-on-Rails 应用程序的各种方法(例如 Rails with Unicorn & Nginx, Rails with Passenger & Nginx),设置 可扩展的服务器结构以及如何连接 专用的 MySQL 实例到我们的 Rails 应用程序服务器。

在我们DigitalOcean Scaling-Rails系列的此安装中,我们将了解如何从头开始构建一个 PostgreSQL服务器,以便用作 Ruby-on-Rails Web 应用程序的数据库持续性层。

** 注意:** 正如我们所提到的,本文是我们 Scaling-Rails 系列的一部分,包括在专用 Ubuntu VPS 上安装 PostgreSQL 服务器,但是,您可以非常好的安装 PostgreSQL,正如这里所解释的那样,在单个虚拟服务器上使用,并与您的 Rails 应用程序一起使用。 若要看到如何使用 Unicorn 或 Passenger 将 Rails 部署到单个滴子上,请点击第一段所提供的链接,然后从这里继续形成数据库层。

词典


1、选择数据库


2、服务器配置结构


数据库服务器层 数据库服务器层

将数据库服务器添加到部署设置


准备服务器

4、安装PostgreSQL


  1. 添加 PostgreSQL 软件存储库
  2. 安装 PostgreSQL

5. PostgreSQL 配置


  1. 更改默认postgres用户密码
  2. 创建角色和数据库
  3. 允许远程连接

6、配置铁路应用程序


  1. 配置 database.yml 为 Rails
  2. 获取 PostgreSQL 库存

选择一个数据库


Ruby on Rails 应用程序开发框架为数据库服务器提供了广泛的支持,对于大多数应用程序来说,关系式数据库管理系统是正确的选择,但有些可能需要一个非关系式的 NoSQL 数据库服务器,而不是关系式的数据库服务器,或者两者一起运行。

当你开始在你自己的开发计算机上使用 Rails 时,最简单和最有逻辑的方式是开始使用有能力但基本的数据库实现(如 SQLite 库)。

根据您的需求和应用程序类型,您需要决定使用数据库管理系统(即数据库服务器)创建应用程序部署设置的 _database layer。

对于关系数据库,一些更受欢迎的选择是:

  • ** PostgreSQL 和衍生品:**

最流行的、最常用的 RDBMS 和相关的,的项目。

    • PostgreSQL: ( )

最先进的、符合 SQL 的和开源的目标-RDBMS。

** 对于非关系数据库服务器:**

  • ** 根据列:**

卡桑德拉、HBase等。

  • ** 文件:**

MongoDB、Couchbase 等。

  • 图表: ( )

OrientDB、Neo4J等。

为了在继续部署数据库服务器之前做出明确和长期的决定,您可能感兴趣阅读我们的文章:

  • ** 数据库介绍:**

理解 SQL 和 NoSQL 数据库以及不同的数据库模型

  • 相對性:

比较关系数据库管理系统

    • NoSQL:**

对比 NoSQL 数据库管理系统和模型

服务器设置结构


在我们开始构建数据库层之前,让我们看看我们的最终部署设置会是什么样子。

加载均衡多种应用服务器


以前,在创建一个负载平衡器 / 反向代理程序与多个应用程序服务器后,这是我们最终所拥有的:

 1Three droplets with each having a distinct role:
 2------------------------------------------------
 31 x Load-Balancer / Reverse-Proxy
 42 x Application Servers Running Your Rails Web-Application / API
 5
 6                             ---
 7
 8                    DEPLOYMENT STRUCTURE
 9
10             +-------------------------------+
11             |                               |
12             | LOAD-BALANCER / REVERSE PROXY |
13             |                               |
14             +-------------------------------+
15                             +
16                             |
17                             |
18        +---------------+    |    +---------------+
19        |  APP SERVER  |    |    |  APP SERVER  |
20        |---------------|    |    |---------------|
21        |               |    |    |               |
22        |     RAILS     |<---+--->|     RAILS     |
23        |               |         |               |
24        +---------------+         +---------------+

数据库服务器层


为了有一个中央可访问的数据库服务器(例如 RDBMS 和/或 NoSQL 数据库),我们将为我们的服务器设置添加第四个元素:

 1Four droplets:
 2------------------------------------------------
 31 x Load-Balancer / Reverse-Proxy
 42 x Application Servers Running Your Rails Web-Application / API
 51 x Database Server (e.g. PostgreSQL, PostgreSQL, MongoDB etc.)
 6
 7             +-------------------------------+
 8             |                               |
 9             | LOAD-BALANCER / REVERSE PROXY |
10             |                               |
11             +-------------------------------+
12                             +
13                             |
14                             |
15        +---------------+    |    +---------------+
16        |  APP SERVER  |    |    |  APP SERVER  |
17        |---------------|    |    |---------------|
18        |               |    |    |               |
19        |     RAILS     |<---+--->|     RAILS     |
20        |               |         |               |
21        +---------------+         +---------------+
22                +                         +
23                |                         |
24                |  +-------------------+  |
25                |  |  DATABASE SERVER  |  |
26                |  |-------------------|  |
27                |  |                   |  |
28                |  |       PostgreSQL,      |  |
29                +->|     PostgreSQL,   |<-+
30                   |        etc.       |
31                   |                   |
32                   +-------------------+

将数据库服务器添加到部署设置


在本文中,我们将创建和配置一个PostgreSQL数据库管理服务器在Ubuntu 13 VPS上。

让我们开始吧!

准备服务器


更新软件源列表并升级已过时的应用程序:

1aptitude update
2aptitude -y upgrade

运行以下命令来安装「build-essential」包:

1aptitude install -y build-essential

运行以下命令来安装一些额外的常用的工具:

1aptitude install -y cvs subversion git-core mercurial

安装PostgreSQL


添加 PostgreSQL 软件存储库


要下载最新版本的 PostgreSQL(‘9.3’),我们需要将库添加到‘aptitude’ 源列表中。

运行以下命令来创建 PostgreSQL 的源列表:

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

复制并粘贴下面的内容:

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

保存和退出,按 CTRL + X 并用 Y 确认。

**注:**我们假定你正在使用Ubuntu 13(saucy)。如果你正在使用不同的版本,请运行lsb_release -c来找出你的发行版的名称,并在上面的指示中用saucy取代它。

更新源列表以包括新增:

1aptitude update
2aptitude -y upgrade

安装PostgreSQL


从现在开始,我们可以访问源,使用默认包管理器aptitude(或apt-get)我们可以直接安装最新版本的PostgreSQL。

运行以下命令来安装 PostgreSQL v. 9.3:

1aptitude install postgresql-9.3 pgadmin3

创建 PostgreSQL


更改默认postgres用户密码


为了使用数据库,我们需要更改默认密码。

运行以下命令来启动过程:

1sudo -u postgres psql postgres

一旦看到类似于postgres=#的提示,请键入以下内容:

1\password postgres

输入您的密码,再次输入以验证并按CTRL+Z或键入 \q以退出。

创建角色和数据库


登录到 PostgreSQL 使用以下命令:

1sudo -u postgres psql

然后运行下面的指示来创建一个 role 和一个 database 用于 Rails:

1# Usage: CREATE USER [user name] WITH PASSWORD '[password]';
2# Example:
3CREATE USER rails_myapp_user WITH PASSWORD 'pwd';
4
5# Usage: CREATE DATABASE [database name] OWNER [user name];
6# Example:
7CREATE DATABASE rails_myapp OWNER rails_myapp_user;

按 CTRL+Z 或键入 \q 才能退出。

** 注意:** 要了解 PostgreSQL 角色和管理,请参阅以下文章:

允许远程连接


由于我们需要 PostgreSQL 服务器才能从运行 Rails 应用程序的远程计算机访问,因此必须修改配置文件。

运行以下命令以使用 nano 文本编辑器编辑 PostgreSQL 配置 postgresql.conf:

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

我们希望告诉 PostgreSQL 倾听从分配给我们的滴滴的 IP 地址的连接。

滚下文件并找到下面的行:

1#listen_addresses = 'localhost'

把它改成:

1listen_addresses = '*'

然后保存和退出,按 CTRL + X 并用 Y 确认。

接下来,我们需要告诉PostgreSQL我们希望它接受的具体连接,类似于防火墙的工作方式。

运行以下命令以使用纳米文本编辑器编辑 PostgreSQL hba 文件 `pg_hba.conf:

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

滚下文件并找到该部分:

1# Put your actual configuration here
2# ..

评论区块后,添加以下行:

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

再次,保存和退出,按 CTRL + X 并用 Y 确认。

使用以下命令重新启动 PostgreSQL DAEMON:

1service postgresql restart
2
3#  * Restarting PostgreSQL 9.3 database server
4# ...done.

配置铁路应用程序


在本节中,我们将修改 Rails 应用程序服务器,以便它们开始与我们刚刚设置的数据库服务器工作。

設定「database.yml」為 Rails


Rails 应用程序的数据库设置保存在 /config 目录中的 database.yml 文件中。

运行以下命令以使用 nano 文本编辑器编辑 database.yml 文件:

1# Make sure to enter your application deployment directory
2# Example:
3# cd /var/www/my_app
4
5nano config/database.yml

一旦打开此文件,您将看到数据库设置分为环境名称。由于应用程序需要使用生产环境运行,让我们为此编辑配置。

用以下代码代替制作:``YML代码块,更改必要的位数以适应自己的设置配置,例如 IP 地址等。

 1# Example:
 2# production:
 3#   adapter: postgresql
 4#   encoding: utf8
 5#   database: [database name]
 6#   username: [user name]
 7#   password: [password]
 8#   host: [server IP address]
 9#   port: [port number]
10#   protocol: [protocol]
11#   pool: [connection pool]
12
13production:
14  adapter: postgresql
15  encoding: utf8
16  database: rails_myapp
17  username: rails_myapp_user
18  password: pwd
19  host: 128.199.233.36
20  port: 5432
21  pool: 10

** 注意:** 如上面的示例所示,您可能需要指定协议。

** 注意: ** 参数包含可用的最大同时数据库连接插槽数(即池)。

保存和退出,按 CTRL + X 并用 Y 确认。

获取PostgreSQL宝石


使用 nano 开始编辑 Gemfile,使用以下方法:

1nano Gemfile

将以下行添加到文件中:

1gem 'pg'

保存和退出,按 CTRL + X 并用 Y 确认。

使用bundle安装新宝石:

1bundle install

从现在开始,您的 Rails 应用程序服务器将使用您的全新数据库服务器进行所有操作。

Submitted by: O.S. Tezer
Published At
Categories with 技术
comments powered by Disqus