如何使用RVM在Ubuntu13上安装Ruby2.1.0和Sinatra

来自菜鸟教程
跳转至:导航、​搜索

介绍


如果选择几个词来定义 Sinatra,它们肯定是 inspirationalconcise。 这个微小但非凡的小项目引领了许多其他类似项目的创建——跨越不同的编程语言和平台。

“经典”的 Web 开发库 Sinatra 可以让您从头开始快速构建 Web 应用程序。 与广受欢迎的 Ruby on Rails 框架不同,在 Sinatra 上创建的应用程序可以由单个文件组成,完全取决于 Sinatra gem。

在这篇 DigitalOcean 文章中,我们将学习如何在 Ubuntu 13 droplet 上安装最新可用版本的官方 Ruby 解释器(v 2.1.0)以及 Sinatra Web 应用程序开发库。 之后,我们将创建一个示例项目并继续进行实际部署。

词汇表


1. 安装 Ruby 和 Sinatra


  1. 更新操作系统
  2. 获取基本的构建/开发工具
  3. 安装 Ruby 版本管理器 (RVM)
  4. 安装 Ruby 2.1.0
  5. 安装 Sinatra
  6. 创建 www 用户组和部署者用户

2. 使用 Sinatra 创建“Hello world!”应用程序


  1. 申请目录
  2. 示例应用程序文件
  3. 测试应用程序(机架)

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 对文件层次结构做出某些假设。 因此,我们需要在应用程序文件旁边再创建两个目录:tmppublic

让我们创建它们:

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 部署文章之前,您可以通过以下方式实现此目的:

注意: 请务必注意具有某些服务器设置的部署的文件/文件夹权限。 要了解实际的 Web 部署,请查看我们关于主题 如何部署基于 Sinatra 的 Ruby Web 应用程序 的文章。

提交人: [[“%3Ca|https]] ://twitter.com/ostezer [[“%3C/a|”>操作系统]] 泰泽