如何在Ubuntu 17.04上使用Rbenv,Rails,MariaDB,Nginx,SSL和Passenger安装和配置Ruby

Ruby on Rails是Ruby流行的Web框架,其开发目的是提高程序员的生产率。但是,有时需要使各种gem和依赖项协同工作才能变得棘手。本指南将帮助您建立一个完整的生产就绪的Rails环境,包括常用的gem和依赖项。

要求

  • 具有至少512 MB RAM(最好是1024 MB)的Vultr实例。
  • 运行Ubuntu 17.04的Vultr实例。

本指南中使用的堆栈

  • Nginx:快速而强大的Web服务器。(1.1.3版)
  • 乘客:将帮助Nginx服务您的Ruby应用程序的应用程序服务器。(1.5.1.8版)
  • Rbenv:Ruby版本管理器。(1.1.1-2版)
  • Ruby:(2.4.1版)
  • MariaDB:MySQL服务器(10.2版)的开源分支
  • 让我们加密的SSL证书

安装

添加Sudo用户

注意:强烈建议不要以root用户身份安装任何这些服务,因为您可能会遭受攻击。设置deployapp用户是一种常见约定:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

更新升级系统

确保在Ubuntu VM上运行所有最新软件包:

sudo apt-get update && sudo apt-get upgrade -y

安装构建系统

为了能够使用rbenv和其他gem 编译Ruby ,需要安装各种软件包。根据您需要的Ruby版本,可能不需要某些软件包。

编译中
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
SSL支援套件

这些是编译多个gem所必需的,例如Passenger:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
版本控制

Ruby社区正在使用Git作为首选的SCM。但也可以安装其他软件,例如Mercurial或Subversion:

sudo apt-get install -y git git-core
MySQL / MariaDB的数据库驱动程序
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
能吉里

一些需要原生XML库的流行gem必需:

sudo apt-get install -y libxml2-dev libxslt-dev
Node.js

使用最新版本从Node添加官方存储库,因为默认的Ubuntu存储库往往落后于几个主要版本:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

可选包装

这些软件包对于系统运行不是必需的,但是如果您需要使用某些gem,则很好。

图形和图像

这些库不是必需的,可以跳过,除非您计划使用图像处理gem。例如Rmagick:

sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev

SQLite和PostgreSQL的数据库驱动程序

如果您需要连接到其他数据库或希望使用简单的本地数据库,请为SQLite或PostgreSQL安装驱动程序:

sudo apt-get install -y libsqlite3-dev sqlite3  libpq-dev postgresql postgresql-contrib

工具类

新安装的Ubuntu通常不会预先安装实用程序。随意安装您选择的文本编辑器:

sudo apt-get install -y iotop htop nano vim

安装MariaDB服务器

MariaDB是功能强大的关系SQL服务器,与MySQL完全兼容。安装最新版本的MariaDB的最简单方法是使用官方存储库:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server

按照提示并设置root密码。之后,请确认您可以访问全新安装:

mysql -V 

它将显示类似于以下内容的行:

mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5

登录到MySQL Shell:

mysql -h localhost -u root -p 

注意:用于\q退出。


安装Rbenv和Ruby

伦本

使用git安装Rbenv。这是最简单的安装方法,以后可以轻松进行更新。同样安装install ruby-build,它负责实际编译不同版本的Ruby:

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

注意:当您需要简单地更新cd ~/.rbenv和时git pull

使Rbenv和Ruby-build在Shell中可用。为了确保导出行插入到文件的开头.bashrc,这对于非交互式bash命令很重要,请使用以下行:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc

cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc

exec $SHELL

检查Rbenv和Ruby-build是否已安装并在shell中可用:

rbenv install --list

如果rbenv无法识别,请注销并重新登录到Shell。

创建一个~/.bash_profile文件,并将其指向源~/.bashrc文件。如果您需要从Rails应用程序运行任何非交互式shell命令(例如whenevergem 设置的cron作业),它将使用与交互式shell相同版本的Ruby。这可以帮助防止奇怪的错误。将此行添加到~/.bash_profile文件中:

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

红宝石

安装Ruby 2.4.1:

rbenv install 2.4.1

注意:根据VM上的资源,此过程可能需要5到15分钟,并且没有进度条。

使Rbenv随处可用。

rbenv global 2.4.1

乘客和Nginx

为apt添加PGP密钥和HTTPS支持:

sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

添加旅客资料库:

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

安装乘客+ Nginx模块:

sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger

此时,使用域名或IP访问您的Vultr实例以对其进行测试。如果他们正在工作,您的页面将显示默认的Nginx欢迎页面。

设置Rails,应用程序和配置旅客

安装捆绑器和Rails:

gem install bundler rails --no-ri --no-rdoc

Ubuntu / Debian约定是在中设置您的应用程序/var/www。默认情况下,它只能由root写入。为了使设置生效,将所有权授予sudo用户deploy

sudo chown deploy:deploy /var/www -R

在中生成rails应用/var/www/。如果您已经有要部署的应用程序,请git clone在此处运行,然后运行bundle

cd /var/www
rails new example --database=mysql
配置乘客以指向该应用程序。
  1. 准备Nginx。

    sudo nano /etc/nginx/nginx.conf
    
  2. 将用户更改为deploy

    user deploy;
    
  3. http配置部分,应该有一行告诉Nginx加载包括乘客的模块。如果缺少它,则可以在Virtual Host Configs标题之后,之前添加sites-enabled

    include /etc/nginx/conf.d/*.conf;
    
  4. 编辑/创建passenger.conf文件。

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. 告诉乘客使用我们的Rbenv设置。它可能包含一行指向Passenger随附的Ruby版本的行,只需将其删除或注释掉即可。

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. 设置虚拟主机以指向中的应用程序/var/www/example/

    sudo nano /etc/nginx/sites-enabled/example.conf
    
    
    server {
      listen 80;
      server_name example.com www.example.com;
      root /var/www/example/public;
      passenger_enabled on;
    
      # When you are ready to switch to production mode - change this to `production`
      passenger_app_env development; # <-- !important      
    }
    
  7. 重新启动Nginx。

    sudo service nginx restart
    

此时,您的应用程序已准备好在开发模式下使用。要切换到生产模式,您需要返回到Nginx配置,并将rails_env设置更改为production

在你切换到生产模式,你仍然需要设置你的生产数据库example_productiondatabase.yml和秘密密钥。签出Capistrano或Mina之类的工具来加快您的应用程序部署过程。最好将ENV变量与gem一起使用dotenv,并且不要将您的密码,秘密密钥等提交到git存储库。

设定SSL

有多种服务可为您的域提供SSL证书,其中有许多是付费的,而有几个是免费的。无论您使用哪种服务,都请设置SSL。让我们加密非常容易且免费。让我们加密是一个由许多技术巨头支持的非营利组织。

安装

运行以下命令,然后按照提示进行操作。

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

如果现在使用转到您的Vultr实例HTTPS,您将看到一个安全的网站。

续约

您新签发的证书将过期,需要定期更新。最简单的方法是设置cron作业。

sudo crontab -e 
30 2 * * 1 /usr/bin/certbot renew 

作为最后但可选的步骤,重新启动VM,并确保所有服务均按预期方式重新启动。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息