介绍
如果选择几个词来定义西纳特拉,他们肯定会是 inspirational 和 concise. 这个小但显著的小项目导致了许多其他类似的项目的创建 - 在不同的编程语言和平台上。
与常见的Ruby on Rails框架不同,在Sinatra上创建的应用程序可以由单个文件组成,完全取决于Sinatra宝石。
在这篇DigitalOcean文章中,我们将学习如何在Ubuntu 13 dropplet上安装官方Ruby翻译器的最新可用版本(版本 2.1.0),以及Sinatra网络应用程序开发库。
词典
1. 安装 Ruby 和 Sinatra
- 更新操作系统
- 获取必要的构建/开发工具
- 安装 Ruby 版本管理器 (RVM)
- 安装 Ruby 2.1.0
- 安装 Sinatra
- 创建一个 www 用户组和一个部署用户
创建一个Hello world!
应用程序与西纳特拉
- 应用程序目录
- 样本应用程序文件
- 测试应用程序 (rackup)
3、部署
** 注意: ** 本文是我们两部 Sinatra 系列的第一篇文章. 完成此篇文章后,要了解实际部署,请参阅 如何部署基于 Sinatra 的 Ruby Web 应用程序。
安装 Ruby 和 Sinatra
更新操作系统
我们将通过准备我们的VPS来开始我们的教程,这意味着将其默认组件升级到最新的版本,以确保我们拥有最新的内容。
更新软件源列表并升级已过时的应用程序:
1aptitude update
2aptitude -y upgrade
获取必要的构建/开发工具
在继续安装我们的目标应用程序之前,我们将安装必要的开发工具包: build-essential 使用默认的包管理器 aptitude
. 此包包含安装某些东西 from source 所需的工具。
运行以下命令来安装「build-essential」包:
1aptitude install -y build-essential
接下来,我们将获得常用的开发和部署相关工具,如Git。
运行以下命令来安装一些额外的常用的工具:
1aptitude install -y cvs subversion git-core mercurial
安装 Ruby 版本管理器(RVM)
Ruby Version Manager(或RVM)允许开发人员快速开始使用Ruby并使用它开发应用程序。
RVM 不仅允许您同时使用多个版本的 Ruby,而且还配备了内置的工具来创建和使用虚拟环境,称为 gemsets 。
** 注意:** 有关如何使用宝石集和如何使用 RVM 的更多信息,请参阅文章 如何使用 RVM 在 VPS 上管理 Ruby 安装和环境。
若要下载和安装 RVM,请执行以下操作:
1curl -L get.rvm.io | bash -s stable
并使用 RVM shell 脚本创建系统环境:
1source /etc/profile.d/rvm.sh
安装 Ruby 2.1.0
从现在开始,在下载RVM和配置系统环境后,只需要使用Ruby 2.1.0(或任何其他版本)才能实际安装Ruby - 这是由RVM处理的。
若要使用 RVM 从源头安装 Ruby 2.1.0,请执行以下操作:
1rvm reload
2rvm install 2.1.0
安装 Sinatra
一旦我们有RVM安装Ruby,我们可以使用RubyGems包,它是默认的下载和安装Sinatra在我们的系统上。
运行以下命令来安装 Sinatra with gem:
1gem install sinatra
创建一个 www 用户组和一个部署用户
一旦我们完成了所有安装,是时候进入基本知识,并创建一个Linux组和一个用户来托管Web应用程序。
添加新用户组:
1# Usage: sudo addgroup [group name]
2sudo addgroup www
创建一个新用户并将其添加到该组:
1# Create a new user:
2# Usage: sudo adducer [user name]
3# Follow on-screen instructions to user-related
4# information such as the desired password.
5sudo adduser deployer
6
7# Add the user to an already existing group:
8# Usage: sudo adducer [user name] [group name]
9sudo adduser deployer www
现在在 /var
目录中创建应用程序文件夹:
1sudo mkdir /var/www
然后设置许可证:
1# Set the ownership of the folder to members of `www` group
2sudo chown -R :www /var/www
3
4# Set folder permissions recursively
5sudo chmod -R g+rwX /var/www
6
7# Ensure permissions will affect future sub-directories etc.
8sudo chmod g+s /var/www
使用文本编辑器 nano 编辑 /etc/sudoers
以让用户 deployer
sudo 进行未来的部署:
1nano /etc/sudoers
向下滚动并找到root
定义的位置:
1..
2
3# User privilege specification
4root ALL=(ALL:ALL) ALL
5
6..
在「根 ALL=(ALL) ALL」后,附上下列字母:
1deployer ALL=(ALL:ALL) ALL
此「/etc/sudoers」文件的部分现在应该是这样的:
1..
2
3# User privilege specification
4root ALL=(ALL:ALL) ALL
5deployer ALL=(ALL:ALL) ALL
6
7..
按 CTRL + X 并用 Y 确认保存和退出。
创建一个Hello world!
应用程序与西纳特拉
** 注:** 以下是关于创建一个基于 Sinatra 的两页应用程序的简短教程,用于演示目的,旨在作为我们的部署文章的示例。
应用程序目录
让我们通过创建一个目录来开始我们的西纳特拉之旅,以托管我们的样本你好,世界!
应用程序。
运行以下命令来创建应用程序目录:
1mkdir /var/www/my_app
2cd /var/www/my_app
因此,我们需要在我们的应用程序文件旁边创建另外两个目录:‘tmp’和‘public’。
让我们创建它们:
1mkdir tmp
2mkdir public
3mkdir pids
4mkdir logs
并添加一个restart.txt
,以便应用程序服务器稍后使用:
1touch tmp/restart.txt
我们的最终应用结构:
1/my_app # /var/www/my_app
2 |-- /public # Static files (and for Passenger server)
3 |-- /tmp
4 |-- restart.txt # Application restart / reload file
5 |-- /pids # PID files
6 |-- /logs # Log files
7 |-- config.ru # Rack file (for servers)
8 |-- app.rb # Application module
** 注意:** 要了解不同的 Ruby Web 应用程序服务器,并了解 Rack 是什么,请参阅我们的文章 对比 Ruby Web 应用程序的 (Rack) Web 服务器。
样本应用文件
现在,我们可以开始构建一个Hello world!
应用程序。
运行以下命令,在应用程序目录中使用 nano 文本编辑器创建app.rb
:
1nano app.rb
复制并粘贴下面的代码块:
1require 'rubygems'
2require 'sinatra/base'
3
4class MyApp < Sinatra::Base
5
6 get '/' do
7 'Hello world!'
8 end
9
10end
保存和退出,按 CTRL + X 并用 Y 确认。
接下来,我们可以创建我们的config.ru
文件,Web应用程序服务器将使用它来运行我们的程序。
运行以下命令,使用 nano 文本编辑器在应用程序目录中创建config.ru
:
1nano config.ru
复制并粘贴下面的代码块:
1require File.expand_path('../app.rb', __FILE__)
2use Rack::ShowExceptions
3run MyApp.new
保存和退出,按 CTRL + X 并用 Y 确认。
现在让我们创建我们的 Gemfile:
1nano Gemfile
复制并粘贴下面的代码块:
1source 'https://rubygems.org'
2gem 'rack'
3gem 'sinatra'
保存和退出,按 CTRL + X 并用 Y 确认。
并使用包裹
进行这些宝石的安装:
1bundle install
测试应用程序(rackup)
为了测试您的应用程序,您可以简单地使用rackup
运行测试服务器。
运行以下命令来启动测试服务器:
1rackup config.ru --port=8080
2
3# Hello world!
4
5# To turn off the test server, press CTRL+C
部署
虽然我们已经涵盖了创建 Sinatra 应用程序的基本知识,但为了部署,您将从您的开发计算机中处理源代码,以便在网上获取您的应用程序。
以下是您在继续使用我们的 Sinatra 部署文章之前可以实现的一些方法:
- 要了解如何使用 SFTP,请参阅文章: 如何使用 SFTP。
- 要了解有关FileZilla的信息,请参阅该主题的文章: 如何使用FileZilla。
** 注意:** 请务必注意某些服务器设置的部署的文件/文件夹权限. 要了解实际的 Web 部署,请参阅我们关于主题的文章 如何部署基于 Sinatra 的 Ruby Web 应用程序。