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

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.