如何与Ruby on Rails应用在CentOS 7使用PostgreSQL

Ruby on Rails的使用sqlite3的作为其默认的数据库,其工作在许多情况下伟大的,但可能无法满足您的应用程序。如果应用程序需要的可扩展性,集中化和控制(或任何其他功能),一个客户机/服务器SQL数据库,本教程将告诉你如何做到这一点,在PostgreSQL,在CentOS 7。

介绍

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

本教程将向您介绍如何设置开发Ruby on Rails环境,使您的应用程序能够在CentOS 7或RHEL服务器上使用PostgreSQL数据库。 首先,我们将介绍如何安装和配置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部分中,找到写着“池:5”的路线,并在其添加以下行。 它应该看起来像这样(用PostgreSQL用户和密码替换突出显示的部分):

config / database.yml摘录
  host: localhost
  username: pguser
  password: pguser_password

保存并退出。

创建应用程序数据库

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

rake db:create

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

如果你在这一点上得到一个错误,重温以前的第(配置数据库连接),以确保该hostusernamepassworddatabase.yml是正确的。 在确保数据库信息正确后,请尝试重新创建应用程序数据库。

测试配置

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

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

rails server

这将启动您的本地主机上的Rails应用程序在端口3000。

如果您的Rails应用程序在远程服务器上,并且您想通过Web浏览器访问它,一个简单的方法是将其绑定到您的服务器的公共IP地址。 首先,看看您的服务器的公网IP地址,然后用使用rails server这样的命令:

rails server --binding=server_public_IP

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

在网络浏览器中访问:
http://server_public_IP:3000

如果您看到“欢迎加载”Ruby on Rails页面,您的应用程序已正确配置,并连接到PostgreSQL数据库。

结论

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

祝你好运!