Ruby on Rails(RoR)或简称“rails”是一种服务器端的Web应用程序框架,用Ruby编写,遵循MVC(Model-View-Controller)概念。 RoR根据OpenSource MIT许可证发布。 Rails提供了数据库,Web服务和网页的默认结构。 Rails被广泛使用,到目前为止,有超过3000人已经为Rails项目提供了代码,并且有许多基于Rails的应用程序,如Github,Airbnb,Soundcloud等。
在本教程中,我将介绍如何在CentOS 7上安装Rails。我们将使用PostgreSQL数据库安装和配置Ruby on Rails,然后使用Rails创建我们的第一个项目。
前提条件
- 服务器与CentOS 7操作系统
- 根权限
第1步 - 安装RVM
RVM或Ruby版本管理器是一个基于Bash和Ruby的命令行工具来管理红Gem安装。 RVM允许您在同一台服务器上同时安装和配置多个ruby版本,以允许您使用多个ruby环境。
确保您的系统上安装了curl命令。
yum install curl
在这一步中,我们将安装稳定的RVM版本。 在开始安装RVM之前,我们需要下载存储库密钥并使用gpg命令导入。
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
然后安装RVM。
curl -sSL https://get.rvm.io | bash -s stable --ruby
该命令首先安装所需的软件包(软件包相关性),然后下载最新的稳定RVM版本并进行安装。
现在我们可以通过执行下面的命令来开始使用RVM:
source /usr/local/rvm/scripts/rvm
第2步 - 安装Ruby
目前的稳定版本的Ruby是2.3.1。 我们将使用“rvm”命令安装它,然后将其作为系统的默认ruby版本。
将RVM更新到最新的稳定版本,然后安装Ruby 2.3.1。
rvm get stable --autolibs=enable
rvm install ruby-2.3.1
接下来,将Ruby 2.3.1作为系统的默认Ruby版本。
rvm --default use ruby-2.3.1
使用以下命令检查Ruby版本,以确保上述步骤成功:
ruby -v
第3步 - 安装Nodejs
Rails需要一个JavaScript运行时来编译Rails资源管道。 对于Ubuntu Linux上的Rails开发,最好将Nodejs安装为Javascript运行时。
从nodesource库安装nodejs:
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
yum -y install nodejs
检查该节点和npm是否在系统上成功安装。
node -v
npm -v
第4步 - 配置Gem
RubyGems是Ruby包管理器。 它提供了gem命令行工具,并在系统上安装Ruby时自动安装。
更新Gem版本并检查:
gem update --system
gem -v
这是可选的:您可以通过将下面的行添加到.gemrc文件来禁用在每个gem安装上安装文档。 我会在这里做,因为它可以节省硬盘空间,我更喜欢阅读互联网上的文档。
echo "gem: --no-document" >> ~/.gemrc
第5步 - 安装Ruby on Rails 5(稳定)
使用下面的gem命令安装Ruby on Rails 5:
gem install rails -v 5.0.0
安装成功完成后,请检查rails版本:
rails -v
你应该看到这样的结果:
Rails 5.0.0
Rails 5.0安装在使用Ruby 2.3.1的CentOS 7上。
第6步 - 设置PostgreSQL数据库进行Rails开发
在这一步中,我们将准备PostgreSQL进行rails开发。 Ruby on Rails支持许多数据库,如MySQL,SQLite(默认)和PostgreSQL。 我将使用PostgreSQL作为本指南的数据库。
使用这个yum命令安装PostgreSQL:
yum -y install postgresql-server postgresql-devel postgresql-contrib
现在我们必须使用initdb命令初始化数据库服务器。
postgresql-setup initdb
默认情况下,CentOS服务器上的PostgreSQL不允许基于密码的身份验证。 我们需要编辑RoR安装的PostgreSQL配置,以允许使用密码登录。
用vim编辑pg_hba.conf
vim /var/lib/pgsql/data/pg_hba.conf
将身份验证方法更改为md5。
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
保存文件,然后启动“postgresql”服务。
systemctl start postgresql
Postgresql在localhost ip地址上运行,端口为5432,您可以使用以下命令检查:
netstat -plntu
systemctl status postgresql
安装完成后,使用su成为shell上的postgres用户,然后访问postgresql shell(psql)。
su - postgres
psql
使用以下命令为postgres用户设置新密码:
\password postgres
Enter new password:
接下来,使用此命令为rails开发创建一个名为“rails-dev”的新角色:
create role rails_dev with createdb login password 'aqwe123';
检查新角色,您将看到新角色被创建:
\du
已经创建了用于Rails Development的PostgreSQL数据库和用户。
第7步 - 使用Rails和PostgreSQL创建第一个应用程序
我们可以使用rails命令轻松创建我们的第一个应用程序。
使用PostgreSQL创建一个新的应用程序作为默认数据库。
rails new myapp -d postgresql
该命令将创建一个新的目录'myapp'并安装一个新的gem,包括rails所需的“pg”gem,以连接到PostgreSQL数据库。
转到'newapp'目录并在config目录中编辑database.yml文件。
cd myapp/
vim config/database.yml
在开发部分,取消注释第32行并设置我们在第6步中创建的角色。
username: rails_dev
在第35行设置rails_dev用户密码。
password: aqwe123
取消注释第40行和第44行数据库主机配置。
host: localhost
port: 5432
现在,转到测试部分并添加下面的新配置:
database: myapp_test
host: localhost
port: 5432
username: rails_dev
password: aqwe123
保存文件并退出编辑器。
接下来,使用rails命令生成数据库:
rails db:setup
rails db:migrate
然后使用以下命令启动rails服务器:
rails s -b 192.168.33.10 -p 8080
打开您的Web浏览器,并访问端口8080 - 192.168.33.10:8080上的服务器IP地址。
回到你的终端 创建一个新的脚手架与PostgreSQL数据库进行交互。
键入以下命令:
rails g scaffold Post title:string body:text
rake db:migrate
再次运行rails服务器。
rails s -b 192.168.33.10 -p 8080
访问服务器: 192.168.33.10 : 8080/posts
您将看到一个简单的CRUD接口,用Ruby on Rails和PostgreSQL编写。