让Vagrant中的CentOS能够通过Rails使用PostgreSQL
在假设将Ruby on Rails开发的应用程序部署到Heroku上的情况下,预先对各种设置进行了PostgreSQL开发的讨论。
假设在Vagrant上的CentOS已经成功搭建了Rails环境。
由于我想要先使其能够运行,所以我使用了一个与参考网站相匹配的版本。可能没有使用最新版本。
参考:
当在Ruby on Rails中使用PostgreSQL而不是SQLite时
安装PostgreSQL
根据所说,如果执行yum install postgresql命令,版本可能会过旧,所以请按照以下步骤进行安装。
首先,使用wget命令获取软件包。
wget http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
安装已获取的软件包。
sudo rpm -ivh pgdg-centos93-9.3-1.noarch.rpm
安装 PostgreSQL 9.3版本。
可能不是最新的版本。
sudo yum install postgresql93
sudo yum install postgresql93-devel
sudo yum install postgresql93-server
确认版本。
psql --version
完成PostgreSQL的初始化后,启动它。
sudo service postgresql-9.3 initdb
sudo /etc/rc.d/init.d/postgresql-9.3 start
在RubyonRails中使用PostgreSQL而不是sqlite时,可以通过chkconfig的设置让PostgreSQL在服务器启动时始终启动。
因为PostgreSQL的默认用户(虽然不太确定这样称呼是否正确,但是可以直接使用的用户)是postgres,所以要使用这个用户登录PostgreSQL。
sudo -u postgres psql
首先设置postgres用户的密码。
\password
接下来需要输入密码。
然后,添加用户。
create user <test_user> with password '<test_pass>';
从PostgreSQL中出来。
\q
创建一个新的Rails应用程序
使用postgresql的选项可以指定要使用的数据库。
rails new <test_app> -d postgresql
听说如果没有安装名为pg的Ruby接口gem到PostgreSQL,会出现错误。
我之前进行了一些调整,已经安装好了,所以没有出错。但是如果出现错误的话,希望能够设法进行安装。在使用Ruby on Rails时,虽然默认是使用sqlite,但也有说明可以使用PostgreSQL。而且我自己也能够安装,所以应该能够在搜索引擎上找到一些相关信息。
编辑PostgreSQL的配置文件
编辑pg_hba.conf文件
sudo vi /var/lib/pgsql/9.3/data/pg_hba.conf
在底部追加以下内容。
local all all md5
修改postgresql.conf
sudo vim /var/lib/pgsql/9.3/data/postgresql.conf
#listen_addresses = 'localhost'
↓
listen_addresses = '*'
重新启动PostgreSQL。
sudo /etc/rc.d/init.d/postgresql-9.3 restart
数据库.yml的配置
打开`database.yml`文件,这是在执行`rails new`命令后自动生成的文件。
cd <test_app>
vim config/database.yml
刚刚登录到PostgreSQL后,添加了一个新的用户名和密码。
username: <test_user>
password: <test_pass>
在这个情况下,当查看”database”这一项时,我认为它应该被设置为_development,所以记住这个名称。
创建DB
创建一个名为先前记住的_development的应用。
然后再次进入PostgreSQL。
psql -U postgres
执行以下的SQL语句。
create database <test_app>_development owner <test_user>;
当最后运行`rails s -b 0.0.0.0`来启动服务器,连接到在Vagrant中设置的地址时,应该会显示熟悉的Rails欢迎页面。