如果选择几个词来定义Sinatra,那么肯定会是设计简洁,给人启发。这种项目构建的想法引领了很多项目的构建潮流——跨越不同的编程语言和平台的编程方案。
“新颖”的Web开发库Sinatra可以让您从头开始快速构建Web应用程序。与日益流行的Ruby on Rails框架不同,在Sinatra上创建的应用程序可以由单个文件组成,这块完全取决于Sinatra gem。
在这篇文章中,我们将学习如何在Ubuntu CVM上安装最新版本的官方Ruby解释器以及Sinatra Web应用程序开发库。之后,我们将创建一个示例项目并继续进行实际部署。要完成本教程,您必须拥有一台服务器,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。
首先,我们需要将默认组件升级到最新版本,以确保我们拥有最新的所有内容。更新软件源列表并升级已过时的应用程序:
sudo apt-get update
sudo apt-get -y upgrade
在继续安装目标应用程序之前,我们将使用默认的包管理器安装必要的开发工具包:build-essential
。此软件包包含从源代码安装某些内容所需的工具。
运行以下命令安装build-essential
包:
sudo apt-get install -y build-essential
接下来,我们将获得常用的开发和部署相关工具,例如Git。运行以下命令以安装一些其他常用工具:
sudo apt-get install -y cvs subversion git-core mercurial
Ruby Version Manager(RVM)目标是使开发人员可以快速开始使用Ruby并使用它开发应用程序。
RVM不仅允许您同时使用多个版本的Ruby,而且它还带有内置工具来创建和使用虚拟环境。在RVM的帮助下,可以创建任意数量的完全隔离的gemsets,其中依赖项,软件包和默认的Ruby安装可以根据您的需求进行精心设计,并在不同的部署阶段之间进行相应的保证,要下载和安装RVM,请运行以下命令:
curl -L get.rvm.io | bash -s stable
并使用RVM shell脚本创建系统环境:
source /etc/profile.d/rvm.sh
在下载RVM和配置系统环境之后,从现在开始使用Ruby所需要的只是从源实际安装Ruby这将由RVM处理。要使用RVM从源安装Ruby,请运行以下命令:
rvm reload
rvm install 2.1.0
一旦我们有RVM安装Ruby,我们可以使用默认的RubyGems包在我们的系统上设置Sinatra。RubyGems是默认的Ruby包管理器,它是一个很好的工具。
运行以下命令以使用gem安装Sinatra:
gem install sinatra
在我们完成所有安装之后,是时候进入基础并创建一个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
以便给新用户部署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:入门文档。
让我们通过创建一个示例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
现在,我们可以开始构建一个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
:
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应用程序的基础知识,但出于部署目的,您需要服务器处理来自开发计算机的源代码,以使您的应用程序联机。因此,您需要将应用程序的存储库(即源代码)放入(即上传)到CVM上。您可以使用FTP方式或者SFTP方式上传,或者使用一劳永逸的方法通过SSHFS远程挂载文件夹,方便远程coding!。更多Linux教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Install Ruby 2.1.0 And Sinatra On Ubuntu 13 With RVM》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。