如何在Ubuntu上安装Ruby和Sinatra

介绍

如果选择几个词来定义Sinatra,那么肯定会是设计简洁,给人启发。这种项目构建的想法引领了很多项目的构建潮流——跨越不同的编程语言和平台的编程方案。

“新颖”的Web开发库Sinatra可以让您从头开始快速构建Web应用程序。与日益流行的Ruby on Rails框架不同,在Sinatra上创建的应用程序可以由单个文件组成,这块完全取决于Sinatra gem。

在这篇文章中,我们将学习如何在Ubuntu CVM上安装最新版本的官方Ruby解释器以及Sinatra Web应用程序开发库。之后,我们将创建一个示例项目并继续进行实际部署。要完成本教程,您必须拥有一台服务器,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

安装Ruby和Sinatra

更新操作系统

首先,我们需要将默认组件升级到最新版本,以确保我们拥有最新的所有内容。更新软件源列表并升级已过时的应用程序:

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版本管理器(RVM)

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

安装Ruby

在下载RVM和配置系统环境之后,从现在开始使用Ruby所需要的只是从源实际安装Ruby这将由RVM处理。要使用RVM从源安装Ruby,请运行以下命令:

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以便给新用户部署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的更深入的知识,请查看官方的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

示例应用文件

现在,我们可以开始构建一个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》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漏斗社区

Java代码审计入门篇

Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的...

2303
来自专栏大前端_Web

cordova 安卓开发环境搭建(Mac OSX

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

1444
来自专栏张伟博客

windows7 下,在CMD命令模式下,如何添加永久路由?

双网卡之间互相访问原理其实很简单,互相设置对方的IP为自己的这张网卡的网关就足够了。为了让机器重启动后依然有效,在使用route 命令添加路由的时候加上 -p ...

1.1K1
来自专栏乐沙弥的世界

Nginx流媒体支持配置

有关Nginx相关的基础知识 Linux 6下安装编译安装Nginx Nginx 概述及日常管理 Nginx基于IP,端口,域名配置虚拟主机 L...

2560
来自专栏SpringBoot

springboot,全部配置文件

5051
来自专栏博客园迁移

dubbo见解

  服务容器负责启动,加载,运行服务提供者。   服务提供者在启动时,向注册中心注册自己提供的服务。   服务消费者在启动时,向注册中心订阅自己所需的服务。  ...

1732
来自专栏前端真相

webpack、npm 错误汇总

原因: 版本10 fs.promises的API是实验性的,webstorm不允许使用。

3427
来自专栏乐百川的学习频道

Intellij IDEA 2017.3 基于编辑器的REST客户端介绍

最近Intellij IDEA更新到了2017.3这一版本,这个版本又增加了很多新功能。我觉得其中这个基于编辑器的REST客户端这个功能很不错,可以为我们带来很...

2458
来自专栏不止是前端

Vue:前后端数据联调

4229
来自专栏Seebug漏洞平台

GNU tar 解压路径绕过漏洞(CVE-2016-6321) 分析

Author: LG (知道创宇404安全实验室) 漏洞简介 GNU tar文档管理命令是linux系统下常用的一个打包、压缩的命令。经CSS(FSC1V Cy...

3846

扫码关注云+社区

领取腾讯云代金券