如何在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

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。