如何使用RVM在Ubuntu13上安装Ruby2.1.0和Sinatra
介绍
如果选择几个词来定义 Sinatra,它们肯定是 inspirational 和 concise。 这个微小但非凡的小项目引领了许多其他类似项目的创建——跨越不同的编程语言和平台。
“经典”的 Web 开发库 Sinatra 可以让您从头开始快速构建 Web 应用程序。 与广受欢迎的 Ruby on Rails 框架不同,在 Sinatra 上创建的应用程序可以由单个文件组成,完全取决于 Sinatra gem。
在这篇 DigitalOcean 文章中,我们将学习如何在 Ubuntu 13 droplet 上安装最新可用版本的官方 Ruby 解释器(v 2.1.0)以及 Sinatra Web 应用程序开发库。 之后,我们将创建一个示例项目并继续进行实际部署。
词汇表
1. 安装 Ruby 和 Sinatra
- 更新操作系统
- 获取基本的构建/开发工具
- 安装 Ruby 版本管理器 (RVM)
- 安装 Ruby 2.1.0
- 安装 Sinatra
- 创建 www 用户组和部署者用户
2. 使用 Sinatra 创建“Hello world!”应用程序
- 申请目录
- 示例应用程序文件
- 测试应用程序(机架)
3. 部署
注:本文是我们两件套Sinatra系列的第一篇。 完成这个之后,要了解实际部署,请查看 如何部署基于 Sinatra 的 Ruby Web 应用程序。
安装 Ruby 和 Sinatra
更新操作系统
我们将从准备我们的 VPS 开始我们的教程,这意味着将其默认组件升级到最新版本,以确保我们拥有最新的一切。
更新软件源列表并升级过时的应用程序:
aptitude update aptitude -y upgrade
获取基本的构建/开发工具
在继续安装我们的目标应用程序之前,我们将使用默认的包管理器 aptitude
安装基本的开发工具包:build-essential。 此软件包包含从源 安装某些东西 所需的工具。
运行以下命令安装 build-essential
包:
aptitude install -y build-essential
接下来,我们将获取常用的开发和部署相关工具,例如Git。
运行以下命令来安装一些额外的常用工具:
aptitude install -y cvs subversion git-core mercurial
安装 Ruby 版本管理器 (RVM)
Ruby 版本管理器(或 RVM)让开发人员可以快速开始使用 Ruby 并使用它开发应用程序。
RVM 不仅允许您同时使用多个版本的 Ruby,而且它还带有内置工具来创建和使用 虚拟环境 ,称为 gemsets。 在 RVM 的帮助下,可以创建任意数量的完全隔离且自包含的 gemset,其中的依赖项、包和默认 Ruby 安装都经过精心设计,以满足您的需求,并在不同的部署阶段之间保持相应 - 保证无论在哪里,都以相同的方式工作。
注意: 要了解有关如何使用 gemset 以及如何使用 RVM 的更多信息,请查看文章 如何使用 RVM 管理 VPS 上的 Ruby 安装和环境。
要下载并安装 RVM,请运行以下命令:
curl -L get.rvm.io | bash -s stable
并使用 RVM shell 脚本创建系统环境:
source /etc/profile.d/rvm.sh
安装 Ruby 2.1.0
从现在开始,在下载 RVM 并配置系统环境之后,使用 Ruby 2.1.0(或任何其他版本)所需要做的就是从源代码实际安装 Ruby——这将由 RVM 处理。
要使用 RVM 从源代码安装 Ruby 2.1.0,请运行以下命令:
rvm reload rvm install 2.1.0
安装 Sinatra
一旦我们让 RVM 安装了 Ruby,我们就可以使用默认附带的 RubyGems 包在我们的系统上下载和设置 Sinatra。 RubyGems 是默认的 Ruby 包管理器,它是一个出色的工具。
运行以下命令以使用 gem 安装 Sinatra:
gem install sinatra
创建 www 用户组和部署者用户
在我们完成所有安装之后,是时候进入基础知识并创建一个 Linux 组和一个用户来托管 Web 应用程序。 为此,我们可以将我们的组命名为 www
,将用户命名为 deployer
。
添加一个新的用户组:
# Usage: sudo addgroup [group name] sudo addgroup www
创建一个新用户并将其添加到该组:
# Create a new user: # Usage: sudo adducer [user name] # Follow on-screen instructions to user-related # information such as the desired password. sudo adduser deployer # Add the user to an already existing group: # Usage: sudo adducer [user name] [group name] sudo adduser deployer www
现在在 /var
目录中创建应用程序文件夹:
sudo mkdir /var/www
并设置权限:
# Set the ownership of the folder to members of `www` group sudo chown -R :www /var/www # Set folder permissions recursively sudo chmod -R g+rwX /var/www # Ensure permissions will affect future sub-directories etc. sudo chmod g+s /var/www
使用文本编辑器 nano 编辑 /etc/sudoers
以让用户 deployer
sudo 用于未来的部署:
nano /etc/sudoers
向下滚动文件并找到定义 root
的位置:
.. # User privilege specification root ALL=(ALL:ALL) ALL ..
在 root ALL=(ALL) ALL
之后添加以下内容:
deployer ALL=(ALL:ALL) ALL
/etc/sudoers
文件的这一部分现在应该如下所示:
.. # User privilege specification root ALL=(ALL:ALL) ALL deployer ALL=(ALL:ALL) ALL ..
按 CTRL+X 并用 Y 确认保存并退出。
创造一个“你好世界!” 与 Sinatra 的应用
注意: 下面是一个简短的教程,用于创建一个两页的基于 Sinatra 的应用程序,用于演示目的,旨在用作我们的部署文章的示例。 要更深入地了解如何使用 Sinatra,请查看官方 Sinatra:入门 文档。
申请目录
让我们通过创建一个目录来托管我们的示例 Hello world!
应用程序来开始我们的 Sinatra 之旅。
运行以下命令创建应用程序目录:
mkdir /var/www/my_app cd /var/www/my_app
RACK 对文件层次结构做出某些假设。 因此,我们需要在应用程序文件旁边再创建两个目录:tmp
和 public
。
让我们创建它们:
mkdir tmp mkdir public mkdir pids mkdir logs
并且还添加一个 restart.txt
供应用服务器稍后使用:
touch tmp/restart.txt
我们最终的应用结构:
/my_app # /var/www/my_app |-- /public # Static files (and for Passenger server) |-- /tmp |-- restart.txt # Application restart / reload file |-- /pids # PID files |-- /logs # Log files |-- config.ru # Rack file (for servers) |-- app.rb # Application module
注意: 要了解不同的 Ruby Web 应用程序服务器并了解 Rack 是什么,请查看我们的文章 A Comparison of (Rack) Web Servers for Ruby Web Applications ]。
示例应用程序文件
现在,我们可以开始构建一个 Hello world!
应用程序。
运行以下命令,使用 nano 文本编辑器在应用程序目录 my_app
中创建一个 app.rb
:
nano app.rb
复制并粘贴以下代码块:
require 'rubygems' require 'sinatra/base' class MyApp < Sinatra::Base get '/' do 'Hello world!' end end
按 CTRL+X 并用 Y 确认保存并退出。
接下来,我们可以创建我们的 config.ru
文件,Web 应用程序服务器将使用它来运行我们的程序。
运行以下命令,使用 nano 文本编辑器在应用程序目录 my_app
中创建一个 config.ru
:
nano config.ru
复制并粘贴以下代码块:
require File.expand_path('../app.rb', __FILE__) use Rack::ShowExceptions run MyApp.new
按 CTRL+X 并用 Y 确认保存并退出。
现在让我们创建我们的 Gemfile:
nano Gemfile
复制并粘贴以下代码块:
source 'https://rubygems.org' gem 'rack' gem 'sinatra'
按 CTRL+X 并用 Y 确认保存并退出。
并使用 bundle
安装这些 gem:
bundle install
测试应用程序(机架)
为了测试您的应用程序,您可以简单地使用 rackup
运行测试服务器。
运行以下命令以启动测试服务器:
rackup config.ru --port=8080 # Hello world! # To turn off the test server, press CTRL+C
部署
尽管我们已经介绍了创建 Sinatra 应用程序的基础知识,但出于部署目的,您将处理来自您的开发计算机的源代码以使您的应用程序联机。 因此,你需要把(即 上传)您的应用程序的存储库(即 源代码)在您的液滴上。
在继续阅读我们的 Sinatra 部署文章之前,您可以通过以下方式实现此目的:
- 要了解如何使用 SFTP,请查看文章:如何使用 SFTP。
- 要了解 FileZilla,请查看有关该主题的文章:如何使用 FileZilla。
注意: 请务必注意具有某些服务器设置的部署的文件/文件夹权限。 要了解实际的 Web 部署,请查看我们关于主题 如何部署基于 Sinatra 的 Ruby Web 应用程序 的文章。