Come installare e configurare Ruby con Rbenv, Rails, MariaDB, Nginx, SSL e Passenger su Ubuntu 17.04

Ruby on Rails è un popolare framework Web per Ruby sviluppato per aumentare la produttività di un programmatore. Tuttavia, ottenere varie gemme e dipendenze per lavorare insieme può diventare complicato a volte. Questa guida ti aiuterà a creare un ambiente Rails completo pronto per la produzione, inclusi gemme e dipendenze comunemente utilizzate.

Requisiti

  • Istanza Vultr con almeno 512 MB di RAM (preferibilmente 1024 MB).
  • Istanza Vultr che esegue Ubuntu 17.04.

Stack utilizzato in questa guida

  • Nginx : un web server veloce e potente. (ver 1.10.3)
  • Passenger : un server di app che aiuterà Nginx a servire la tua app Ruby. (ver 1.5.1.8)
  • Rbenv : un gestore di versioni di Ruby. (ver 1.1.1-2)
  • Ruby : (versione 2.4.1)
  • MariaDB : un ramo open source del server MySQL (versione 10.2)
  • Certificato SSL da Let's Encrypt

Installazione

Aggiungi utente Sudo

Nota : si consiglia vivamente di non installare nessuno di questi servizi come root, poiché è possibile esporsi a un attacco. L'impostazione di un utente deployo appè una convenzione comune:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Sistema di aggiornamento e aggiornamento

Assicurati di eseguire tutti gli ultimi pacchetti sulla tua macchina virtuale Ubuntu:

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

Installa Build System

Per poter compilare Ruby usando rbenv e altre gemme, è necessario installare vari pacchetti. A seconda della versione di Ruby di cui avrai bisogno, alcuni pacchetti potrebbero non essere necessari.

compilazione
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
Pacchetti per il supporto SSL

Questi sono necessari per compilare diverse gemme, come Passeggero:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
versioning

La community di Ruby utilizza Git come SCM preferito; ma possono essere installati anche altri, come Mercurial o Subversion:

sudo apt-get install -y git git-core
Driver di database per MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
nokogiri

Richiesto per diverse gemme popolari che richiedono librerie XML native:

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

Aggiungi repository ufficiali da Node con l'ultima versione poiché i repository Ubuntu predefiniti tendono a rimanere indietro rispetto ad alcune versioni principali:

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

Pacchetti opzionali

Questi pacchetti non sono necessari per il funzionamento del sistema, ma sono utili se è necessario utilizzare determinate gemme.

Grafici e immagini

Queste librerie non sono necessarie e possono essere ignorate se non si prevede di utilizzare gemme di manipolazione delle immagini; come Rmagick:

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

Driver di database per SQLite e PostgreSQL

Installa i driver per SQLite o PostgreSQL se devi connetterti ad altri database o preferisci un DB locale semplice:

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

Utensili

Utilità che normalmente non vengono preinstallate su una nuova installazione di Ubuntu. Sentiti libero di installare il tuo editor di testo preferito:

sudo apt-get install -y iotop htop nano vim

Installa il server MariaDB

MariaDB è un potente server SQL relazionale, completamente compatibile con MySQL. Il modo più semplice per installare l'ultima versione di MariaDB è usare i repository ufficiali:

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

Segui le istruzioni e imposta una password di root. Successivamente, verifica di poter accedere alla nuova installazione:

mysql -V 

Verrà visualizzata una riga simile a questa:

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

Accedi alla shell MySQL:

mysql -h localhost -u root -p 

Nota : usare \qper uscire.


Installa Rbenv e Ruby

Rbenv

Installa Rbenv usando git. Questo è il metodo di installazione più semplice e consente facili aggiornamenti in seguito. Installa anche ruby-build, è responsabile per la compilazione di diverse versioni di Ruby:

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

Nota : quando è necessario aggiornare semplicemente cd ~/.rbenve git pull.

Rendi Rbenv e Ruby-build disponibili nella shell. Per assicurarsi che le righe di esportazione vengano inserite all'inizio del .bashrcfile, che è importante per i comandi bash non interattivi, utilizzare queste righe:

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

Controlla se Rbenv e Ruby-build sono installati e sono disponibili nella shell:

rbenv install --list

Se rbenvnon viene riconosciuto, disconnettersi e riconnettersi alla shell.

Crea un ~/.bash_profilefile e puntalo per provarlo ~/.bashrc. Se devi eseguire comandi shell non interattivi dalla tua app Rails, come i lavori cron impostati dalla whenevergemma, utilizzerà la stessa versione di Ruby della tua shell interattiva. Questo può aiutare a prevenire strani errori. Aggiungi questa riga al ~/.bash_profilefile:

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

Rubino

Installa Ruby 2.4.1:

rbenv install 2.4.1

Nota : questo processo può richiedere 5-15 minuti a seconda delle risorse sulla VM e non è presente alcuna barra di avanzamento.

Rendi Rbenv disponibile ovunque.

rbenv global 2.4.1

Passeggero e Nginx

Aggiungi la chiave PGP e il supporto HTTPS per apt:

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

Aggiungi il repository Passeggeri:

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

Installa i moduli Passenger + Nginx:

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

Visita la tua istanza Vultr usando il suo nome di dominio o IP per testarli a questo punto. Se funzionano, la tua pagina mostrerà la pagina di benvenuto predefinita di Nginx.

Installa Rails, l'app e configura Passenger

Installa Bundler e Rails:

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

La convenzione Ubuntu / Debian prevede l'installazione dell'app /var/www. Di default è scrivibile solo da root. Affinché l'installazione funzioni, assegna la proprietà all'utente sudo deploy:

sudo chown deploy:deploy /var/www -R

Genera l'app rails in /var/www/. Se hai già un'app che desideri distribuire, git clonequesta qui ed esegui bundle:

cd /var/www
rails new example --database=mysql
Configura Passenger per puntare all'app.
  1. Prep Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Cambia utente in deploy.

    user deploy;
    
  3. Nella httpsezione della configurazione, dovrebbe esserci una linea che dice a Nginx di caricare i moduli incluso il passeggero. Se manca, puoi aggiungerlo subito dopo il Virtual Host Configstitolo, ma prima sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Modifica / crea il passenger.conffile.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Di 'al Passeggero di usare la nostra configurazione Rbenv. Può contenere una riga che punta alla versione di Ruby inclusa in Passenger, basta eliminarla o commentarla.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Configura l'host virtuale per puntare all'app /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. Riavvia Nginx.

    sudo service nginx restart
    

A questo punto l'applicazione è pronta per essere utilizzata in modalità di sviluppo. Per passare alla modalità di produzione è necessario tornare alla configurazione di Nginx e modificare l' rails_envimpostazione su production.

Prima di passare alla modalità di produzione, è ancora necessario configurare il database di produzione example_production, database.ymle la chiave segreta. Scopri uno strumento come Capistrano o Mina per accelerare il processo di distribuzione delle applicazioni. È buona norma usare variabili ENV con una gemma simile dotenve non impegnare password, chiavi segrete e simili nel proprio repository git.

Configura SSL

Esistono diversi servizi che offrono certificati SSL per il tuo dominio, molti sono a pagamento e un paio sono gratuiti. Configura SSL indipendentemente dal servizio che usi. Let's Encrypt è molto facile e gratuito da usare. Let's Encrypt è un'organizzazione no profit supportata da molti giganti della tecnologia.

Installazione

Esegui i seguenti comandi e segui le istruzioni.

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

Se vai all'istanza di Vultr ora utilizzando HTTPS, vedrai un sito Web sicuro.

Rinnovo

Il certificato appena rilasciato scadrà e dovrà essere rinnovato periodicamente. Il modo più semplice per farlo è impostare un cron job.

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

Come passaggio finale, ma facoltativo, riavviare la VM e assicurarsi che tutti i servizi si riavviino come previsto.



Leave a Comment

Come installare la piattaforma del carrello LiteCart su Ubuntu 16.04

Come installare la piattaforma del carrello LiteCart su Ubuntu 16.04

LiteCart è una piattaforma di carrello degli acquisti gratuita e open source scritta in PHP, jQuery e HTML 5. È un software di e-commerce semplice, leggero e facile da usare

Installa la condivisione NFS su Debian

Installa la condivisione NFS su Debian

NFS è un file system basato su rete che consente ai computer di accedere ai file attraverso una rete di computer. Questa guida spiega come esporre le cartelle su NF

Configurazione iniziale del server sicuro di Ubuntu 18.04

Configurazione iniziale del server sicuro di Ubuntu 18.04

Introduzione Durante questo tutorial imparerai come configurare un livello base di sicurezza su una nuovissima macchina virtuale Vultr VC2 che esegue Ubunt

Installazione di McMyAdmin su Ubuntu 14.10

Installazione di McMyAdmin su Ubuntu 14.10

McMyAdmin è un pannello di controllo del server Minecraft utilizzato per amministrare il tuo server. Sebbene McMyAdmin sia gratuito, ci sono più edizioni, alcune delle quali sono pai

Installa un TeamTalk Server su Linux

Installa un TeamTalk Server su Linux

TeamTalk è un sistema di conferenza che consente agli utenti di avere conversazioni audio / video di alta qualità, chat di testo, trasferire file e condividere schermate. Io

Come installare e configurare CyberPanel sul server CentOS 7

Come installare e configurare CyberPanel sul server CentOS 7

Usi un sistema diverso? Introduzione CyberPanel è uno dei primi pannelli di controllo sul mercato che è sia open source che utilizza OpenLiteSpeed. Che cosa

Come installare e configurare Sensu Monitoring su CentOS 7

Come installare e configurare Sensu Monitoring su CentOS 7

Introduzione Sensu è una soluzione di monitoraggio gratuita e open source che può essere utilizzata per monitorare server, applicazioni e vari servizi di sistema. Sensu i

Installa phpBB con Apache su Ubuntu 16.04

Installa phpBB con Apache su Ubuntu 16.04

PhpBB è un programma di bacheca open source. Questo articolo ti mostrerà come installare phpBB su un server web Apache su Ubuntu 16.04. Era scritto

Installa un utente non root con accesso Sudo su Ubuntu

Installa un utente non root con accesso Sudo su Ubuntu

Avere un solo utente, che è root, può essere pericoloso. Quindi risolviamolo. Vultr ci offre la libertà di fare ciò che vogliamo con i nostri utenti e i nostri server

Come accedere al VPS Vultr

Come accedere al VPS Vultr

Vultr offre diversi modi per accedere al tuo VPS per configurare, installare e utilizzare. Credenziali di accesso Le credenziali di accesso predefinite per il tuo VPS ar

Installazione di Fuel CMS su Ubuntu 16.04 LTS

Installazione di Fuel CMS su Ubuntu 16.04 LTS

Usi un sistema diverso? Fuel CMS è un sistema di gestione dei contenuti basato su CodeIgniter. Il suo codice sorgente è ospitato su GitHub. Questa guida ti mostrerà come t

Come installare Couch CMS 2.0 su un VPS Debian 9 LAMP

Come installare Couch CMS 2.0 su un VPS Debian 9 LAMP

Usi un sistema diverso? Couch CMS è un sistema di gestione dei contenuti (CMS) semplice e flessibile, gratuito e open source che consente ai web designer di progettare

Come installare Golang 1.8.3 su CentOS 7, Ubuntu 16.04 e Debian 9

Come installare Golang 1.8.3 su CentOS 7, Ubuntu 16.04 e Debian 9

Golang è un linguaggio di programmazione sviluppato da Google. Grazie alla sua versatilità, semplicità e affidabilità, Golang è diventato uno dei più popolari

Come installare OpenMeetings su CentOS 7

Come installare OpenMeetings su CentOS 7

Usi un sistema diverso? Apache OpenMeetings è unapplicazione per conferenze Web open source. È scritto in Java e supporta più server di database. io

Come installare Quassel su Debian 9

Come installare Quassel su Debian 9

IRC è popolare tra gli sviluppatori e gli utenti di software open source. Uno degli svantaggi di IRC è quando non sei in linea, potresti perdere Importan

Come usare Sudo su Debian, CentOS e FreeBSD

Come usare Sudo su Debian, CentOS e FreeBSD

Luso di un utente sudo per accedere a un server ed eseguire comandi a livello di root è una pratica molto comune tra Linux e Unix Systems Administrator. Luso di un sud

Come installare RabbitMQ su CentOS 7

Come installare RabbitMQ su CentOS 7

Usando un sistema diverso? RabbitMQ è un broker di messaggi open source ampiamente utilizzato scritto nel linguaggio di programmazione Erlang. Come middleware orientato ai messaggi

Come abilitare TLS 1.3 in Apache su Fedora 30

Come abilitare TLS 1.3 in Apache su Fedora 30

Usi un sistema diverso? TLS 1.3 è una versione del protocollo TLS (Transport Layer Security) che è stato pubblicato nel 2018 come standard proposto in RFC 8446

Configurare un Chroot su Debian

Configurare un Chroot su Debian

Questo articolo ti insegnerà come impostare una prigione chroot su Debian. Presumo che tu stia usando Debian 7.x. Se usi Debian 6 o 8, questo potrebbe funzionare, bu

Come installare PiVPN su Debian

Come installare PiVPN su Debian

Introduzione Un modo semplice per configurare un server VPN su Debian è con PiVPN. PiVPN è un programma di installazione e wrapper per OpenVPN. Crea semplici comandi per te t

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.