介绍
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
在文件底部附近找到看起来像这样的线:
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
然后将“ident”替换为“md5”,因此它们看起来像这样:
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用户和密码替换突出显示的部分):
host: localhost
username: pguser
password: pguser_password
保存并退出。
创建应用程序数据库
创建应用程序的development
和test
使用该rake命令数据库:
rake db:create
这将在您的PostgreSQL服务器中创建两个数据库。 例如,如果应用程序的名称是“appname”,它将创建名为“appname_development”和“appname_test”的数据库。
如果你在这一点上得到一个错误,重温以前的第(配置数据库连接),以确保该host
, username
和password
在database.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应用程序上开始开发!
祝你好运!