如何在CentOS7上将PostgreSQL与您的RubyonRails应用程序一起使用

来自菜鸟教程
跳转至:导航、​搜索

介绍

Ruby on Rails 使用 sqlite3 作为其默认数据库,在许多情况下效果很好,但可能不足以满足您的应用程序。 如果您的应用程序需要客户端/服务器 SQL 数据库(例如 PostgreSQL 或 MySQL)的可扩展性、集中化和控制(或任何其他功能),您将需要执行一些额外的步骤来启动它和运行。

本教程将向您展示如何在 CentOS 7 或 RHEL 服务器上设置允许您的应用程序使用 PostgreSQL 数据库的开发 Ruby on Rails 环境。 首先,我们将介绍如何安装和配置 PostgreSQL。 然后我们将向您展示如何创建一个使用 PostgreSQL 作为其数据库服务器的 Rails 应用程序。

先决条件

本教程需要有一个工作的 Ruby on Rails 开发环境。 如果您还没有,您可以按照以下链接中的教程进行操作:如何在 CentOS 7 上使用 rbenv 安装 Ruby on Rails。

您还需要访问超级用户或 sudo 帐户,以便安装 PostgreSQL 数据库软件。

本指南还假设 SELinux 已禁用。

准备好后,让我们安装 PostgreSQL。

安装 PostgreSQL

如果您还没有安装 PostgreSQL,那么现在就安装吧。

如果您还没有这样做,请使用以下命令将 EPEL 存储库添加到 yum:

sudo yum install epel-release

安装 PostgreSQL 服务器及其开发库:

sudo yum install postgresql-server postgresql-contrib postgresql-devel

PostgreSQL 已安装,但我们仍需要进行一些基本配置。

创建一个新的 PostgreSQL 数据库集群:

sudo postgresql-setup initdb

默认情况下,PostgreSQL 不允许密码验证。 我们将通过编辑其基于主机的身份验证配置来更改它。

使用您喜欢的文本编辑器打开 HBA 配置。 我们将使用 vi:

sudo vi /var/lib/pgsql/data/pg_hba.conf

在文件底部附近找到如下所示的行:

pg_hba.conf 摘录(原文)

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

然后将“ident”替换为“md5”,它们看起来像这样:

pg_hba.conf 摘录(更新)

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

保存并退出。 PostgreSQL 现在配置为允许密码验证。

现在启动并启用 PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

PostgreSQL 现已安装,但您应该创建一个新的数据库用户,Rails 应用程序将使用该用户。

创建数据库用户

首先,更改为postgres系统用户:

sudo su - postgres

使用此命令创建一个 PostgreSQL 超级用户(用您自己的用户名替换突出显示的单词):

createuser -s pguser

要为数据库用户设置密码,请使用以下命令进入 PostgreSQL 控制台:

psql

PostgreSQL 控制台由 postgres=# 提示符指示。 在 PostgreSQL 提示符下,输入以下命令为您创建的数据库用户设置密码:

\password pguser

在提示符处输入您想要的密码,然后确认。

现在您可以通过输入以下命令退出 PostgreSQL 控制台:

\q

现在你的 PostgreSQL 用户已经设置好了,切换回你的普通用户:

exit

现在让我们创建一个 Rails 应用程序。

创建新的 Rails 应用程序

在您的主目录中创建一个新的 Rails 应用程序。 使用 -d postgresql 选项将 PostgreSQL 设置为数据库,并确保将突出显示的单词替换为您的应用程序名称:

cd ~
rails new appname -d postgresql

然后进入应用程序的目录:

cd appname

下一步是配置应用程序的数据库连接。

配置数据库连接

您创建的 PostgreSQL 用户将用于创建应用程序的测试和开发数据库。 我们需要为您的应用程序配置适当的数据库设置。

在您喜欢的文本编辑器中打开应用程序的数据库配置文件。 我们将使用 vi:

vi config/database.yml

default 部分下,找到显示“pool: 5”的行并在其下添加以下行。 它应该看起来像这样(用您的 PostgreSQL 用户和密码替换突出显示的部分):

config/database.yml 摘录

  host: localhost
  username: pguser
  password: pguser_password

保存并退出。

创建应用程序数据库

使用以下 rake 命令创建应用程序的 developmenttest 数据库:

rake db:create

这将在您的 PostgreSQL 服务器中创建两个数据库。 例如,如果您的应用程序的名称是“appname”,它将创建名为“appname_development”和“appname_test”的数据库。

如果此时出现错误,请重新访问上一小节(配置数据库连接)以确保 database.yml 中的 hostusernamepassword ] 是正确的。 确保数据库信息正确后,再次尝试创建应用程序数据库。

测试配置

测试您的应用程序是否能够使用 PostgreSQL 数据库的最简单方法是尝试运行它。

例如,要运行开发环境(默认),请使用以下命令:

rails server

这将在 localhost 的 3000 端口上启动 Rails 应用程序。

如果您的 Rails 应用程序位于远程服务器上,并且您想通过 Web 浏览器访问它,一种简单的方法是将其绑定到服务器的公共 IP 地址。 首先,查找服务器的公共 IP 地址,然后将其与 rails server 命令一起使用,如下所示:

rails server --binding=server_public_IP

现在您应该可以通过服务器的公共 IP 地址在端口 3000 上在 Web 浏览器中访问您的 Rails 应用程序:

在网络浏览器中访问:

http://server_public_IP:3000

如果您看到“Welcome onboard”Ruby on Rails 页面,则表明您的应用程序已正确配置并连接到 PostgreSQL 数据库。

结论

您现在已准备好在 CentOS 7 上开始开发您的 Ruby on Rails 应用程序,使用 PostgreSQL 作为数据库!

祝你好运!