介绍
如果一对夫妇的话被选为定义Sinatra,他们肯定是鼓舞人心的 , 简洁 。 这个微小但非凡的小项目导致了许多其他类似的项目的创建 - 跨不同的编程语言和平台。
“优雅的”Web开发库Sinatra可以允许您从头开始快速构建Web应用程序。 与不断增长的Ruby on Rails框架不同,在Sinatra上创建的应用程序可以由单个文件组成,完全取决于Sinatra gem。
在这篇DigitalOcean文章中,我们将学习如何在Ubuntu 13Droplet以及Sinatra Web应用程序开发库中安装官方Ruby解释器(v 2.1.0)的最新版本。 之后,我们将创建一个示例项目,并继续进行真实部署。
词汇表
1.安装Ruby和Sinatra
- 更新操作系统
- 获得基本的构建/开发工具
- 安装Ruby版本管理器(RVM)
- 安装Ruby 2.1.0
- 安装Sinatra
- 创建www用户组和部署者用户
2.使用Sinatra创建一个“Hello world!”应用程序
- 应用程序目录
- 应用程序文件示例
- 测试应用程序(rackup)
3.部署
注:本文是我们两件Sinatra系列的第一个。 完成本之一后,了解实际部署检查出如何部署基于Sinatra的Ruby Web的应用程序 。
安装Ruby和Sinatra
更新操作系统
我们将通过准备我们的VPS启动我们的教程,这意味着将其默认组件升级到最新版本,以确保我们有最新的一切。
更新软件源列表并升级日期应用程序:
aptitude update
aptitude -y upgrade
获得基本的构建/开发工具
与安装我们的目标应用在继续之前,我们要安装必要的开发工具包: 编译必须使用默认的包管理aptitude
。 此包包含从源代码安装某些事情必需的工具。
运行以下命令来安装build-essential
包:
aptitude install -y build-essential
接下来,我们要得到常用的开发和部署相关工具,如Git。
运行以下命令以安装一些其他常用工具:
aptitude install -y cvs subversion git-core mercurial
安装Ruby版本管理器(RVM)
Ruby版本管理器(或RVM)使开发人员能够快速开始使用Ruby并使用Ruby开发应用程序。
不仅RVM允许您使用Ruby的多个版本同时工作,而且它带有内置的工具来创建和使用名为gemsets 虚拟环境中工作。 在RVM的帮助下,可以创建任何数量的完美隔离和自包含的gemsets,其中依赖,软件包和默认Ruby安装是为了满足您的需要而制定的,并且相应地在不同的部署阶段之间保持以相同的方式工作,而不管在哪里。
注意:要了解更多有关如何与gemsets以及如何使用RVM工作,请查看文章如何使用RVM来管理一个VPS Ruby安装和环境 。
要下载并安装RVM,请运行以下命令:
curl -L get.rvm.io | bash -s stable
并使用RVM外壳脚本创建系统环境:
source /etc/profile.d/rvm.sh
安装Ruby 2.1.0
从现在开始使用Ruby 2.1.0(或任何其他版本),在下载RVM和配置系统环境之后所需要的是从源代码实际安装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
编辑/etc/sudoers
使用文本编辑器nano让用户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确认保存并退出。
创建一个“Hello world!” 应用与Sinatra
注:下面是创建用于其目的是用作我们的部署物品一例演示目的两页基于屈应用一个简短的教程。 为了得到与Sinatra的工作更深入的了解,请查询官方Sinatra:入门文档。
应用程序目录
首先创建一个目录来我们的样本开始我们的旅程SinatraHello world!
应用程序。
运行以下命令创建应用程序目录:
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的应用程序服务器和了解什么是机架 ,看看我们的文章(机架式)网络服务器的Ruby Web应用程序的比较 。
应用程序文件示例
现在,我们可以开始建立一个Hello world!
应用程序。
运行以下命令来创建一个app.rb
应用程序目录内my_app
使用纳米文本编辑器:
nano app.rb
复制并粘贴以下代码块:
require 'rubygems'
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Hello world!'
end
end
按CTRL + X并用Y确认保存并退出。
接下来,我们可以创建config.ru
文件的Web应用程序服务器将用于运行我们的程序。
运行以下命令来创建一个config.ru
应用程序目录内my_app
使用纳米文本编辑器:
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确认保存并退出。
并执行使用这些Gem的安装bundle
:
bundle install
测试应用程序(rackup)
为了测试你的应用程序,可以使用简单的运行测试服务器rackup
。
运行以下命令以启动测试服务器:
rackup config.ru --port=8080
# Hello world!
# To turn off the test server, press CTRL+C
配置
虽然我们已经介绍了创建Sinatra应用程序的基础知识,但是出于部署目的,您将处理来自开发计算机机器的源代码,以使您的应用程序在线。 因此,您需要将您的应用程序的存储库(即源代码)放在(即上传)您的Droplet。
这里有一些方法可以实现这一点,然后继续我们的Sinatra部署文章:
要了解与SFTP工作,请查看文章: 如何使用SFTP 。
要了解FileZilla中,请查看文章的主题: 如何使用FileZilla中 。
注意:请一定要注意立案某些服务器设置窗口部署/文件夹的权限。 要了解实际网络部署中,看看我们的文章对这个问题如何部署基于Sinatra的Ruby Web的应用程序 。