Hvordan installere og konfigurere Ruby med Rbenv, Rails, MariaDB, Nginx, SSL og Passenger på Ubuntu 17.04

Ruby on Rails er et populært nettrammeverk for Ruby som ble utviklet for å øke en programmerers produktivitet. Imidlertid kan det noen ganger bli vanskelig å få ulike edelstener og avhengigheter til å fungere sammen. Denne guiden hjelper deg med å sette opp et komplett produksjonsklart Rails-miljø, inkludert ofte brukte edelstener og avhengigheter.

Krav

  • Vultr-forekomst med minst 512 MB RAM (1024 MB foretrukket).
  • Vultr-forekomst som kjører Ubuntu 17.04.

Stabel som brukes i denne veiledningen

  • Nginx : en rask og kraftig nettserver. (ver 1.10.3)
  • Passenger : en appserver som vil hjelpe Nginx med å betjene Ruby-appen din. (ver 1.5.1.8)
  • Rbenv : en Ruby versjonsbehandler. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : en åpen kildekode-gren av MySQL-serveren (ver 10.2)
  • SSL- sertifikat fra Let's Encrypt

Installasjon

Legg til Sudo-bruker

Merk : Det anbefales sterkt å ikke installere noen av disse tjenestene som root, da du kan utsette deg selv for et angrep. Å sette opp en deployeller appbruker er en vanlig konvensjon:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Oppdater og oppgrader systemet

Sørg for at du kjører alle de nyeste pakkene på Ubuntu VM:

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

Installer byggesystem

For å kunne kompilere Ruby ved hjelp av rbenv og andre edelstener, må forskjellige pakker installeres. Avhengig av hvilken versjon av Ruby du trenger, kan det hende at noen av pakkene ikke er nødvendige.

Kompilere
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
Pakker for SSL-støtte

Disse er nødvendige for å kompilere flere edelstener, for eksempel Passenger:

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

Ruby-fellesskapet bruker Git som en valgfri SCM; men flere, som Mercurial eller Subversion, kan også installeres:

sudo apt-get install -y git git-core
Databasedrivere for MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Nødvendig for flere populære edelstener som trenger native XML-libs:

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

Legg til offisielle depoter fra Node med den nyeste versjonen som standard Ubuntu-depoter har en tendens til å ligge bak noen få hovedversjoner:

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

Valgfrie pakker

Disse pakkene er ikke nødvendige for at systemet skal kjøre, men er gode å ha hvis du skal bruke visse edelstener.

Grafer og bilder

Disse bibliotekene er ikke nødvendige og kan hoppes over med mindre du planlegger å bruke edelstener for bildemanipulering; slik som Rmagick:

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

Databasedrivere for SQLite og PostgreSQL

Installer drivere for SQLite eller PostgreSQL hvis du trenger å koble til andre databaser eller foretrekker en enkel, lokal DB:

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

Verktøy

Verktøy som vanligvis ikke kommer forhåndsinstallert på en ny Ubuntu-installasjon. Installer gjerne tekstredigeringsprogrammet du ønsker:

sudo apt-get install -y iotop htop nano vim

Installer MariaDB-serveren

MariaDB er en kraftig relasjons SQL-server, som er fullt kompatibel med MySQL. Den enkleste måten å installere den nyeste versjonen av MariaDB på er å bruke offisielle depoter:

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

Følg instruksjonene og sett opp et root-passord. Etterpå, kontroller at du har tilgang til den ferske installasjonen:

mysql -V 

Det vil vise en linje som ligner på denne:

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

Logg inn på MySQL-skallet:

mysql -h localhost -u root -p 

Merk : Bruk for \qå avslutte.


Installer Rbenv og Ruby

Rbenv

Installer Rbenv med git. Dette er den enkleste installasjonsmetoden, og den tillater enkle oppdateringer senere. Installer også ruby-build, det er ansvarlig for å faktisk kompilere forskjellige versjoner av Ruby:

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

Merk : Når du trenger å oppdatere enkelt cd ~/.rbenvog git pull.

Gjør Rbenv og Ruby-build tilgjengelig i skallet. For å sikre at eksportlinjene blir satt inn i begynnelsen av .bashrcfilen, noe som er viktig for ikke-interaktive bash-kommandoer, bruk disse linjene:

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

Sjekk om Rbenv og Ruby-build er installert og er tilgjengelig i shell:

rbenv install --list

Hvis den rbenvikke gjenkjennes, logg ut og logg inn i skallet igjen.

Opprett en ~/.bash_profilefil og pek den til kildefilen din ~/.bashrc. Hvis du trenger å kjøre noen ikke-interaktive skallkommandoer fra Rails-appen din, for eksempel cron-jobber som er satt opp av wheneverperlen, vil den bruke samme versjon av Ruby som det interaktive skallet. Dette kan bidra til å forhindre merkelige feil. Legg til denne linjen i ~/.bash_profilefilen:

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

Rubin

Installer Ruby 2.4.1:

rbenv install 2.4.1

Merk : Denne prosessen kan ta 5-15 minutter avhengig av ressursene på VM-en din, og det er ingen fremdriftslinje.

Gjør Rbenv tilgjengelig overalt.

rbenv global 2.4.1

Passasjer og Nginx

Legg til PGP-nøkkelen og HTTPS-støtte for 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

Legg til passasjerlageret:

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

Installer Passenger + Nginx-modulene:

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

Besøk Vultr-forekomsten din ved å bruke domenenavnet eller IP-en for å teste disse på dette tidspunktet. Hvis de fungerer, vil siden din vise standard Nginx-velkomstside.

Sett opp skinner, appen og konfigurer passasjer

Installer Bundler og skinner:

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

Ubuntu/Debian-konvensjonen er å sette opp appen din i /var/www. Som standard er det bare skrivbart med root. For at oppsettet skal fungere, gi eierskap til sudo-brukeren deploy:

sudo chown deploy:deploy /var/www -R

Generer rails-appen i /var/www/. Hvis du allerede har en app du vil distribuere, git clonekjører den her og deretter bundle:

cd /var/www
rails new example --database=mysql
Konfigurer Passenger til å peke på appen.
  1. Forbered Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Endre bruker til deploy.

    user deploy;
    
  3. I httpdelen av konfigurasjonen skal det være en linje som forteller Nginx å laste inn moduler inkludert passasjer. Hvis den mangler, kan du legge den til rett etter Virtual Host Configstittelen, men før sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Rediger/opprett passenger.conffilen.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Fortell Passenger å bruke Rbenv-oppsettet vårt. Den kan inneholde en linje som peker til Ruby-versjonen som følger med Passenger, bare slett eller kommenter den.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Konfigurer virtuell vert for å peke på appen i /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. Start Nginx på nytt.

    sudo service nginx restart
    

På dette tidspunktet er applikasjonen klar til å brukes i utviklingsmodus. For å bytte til produksjonsmodus må du gå tilbake til Nginx-konfigurasjonen og endre rails_envinnstillingen til production.

Før du bytter til produksjonsmodus, du fortsatt trenger å sette opp produksjonen database example_production, database.ymlog hemmelig nøkkel. Sjekk ut et verktøy som Capistrano eller Mina for å øke hastigheten på applikasjonsdistribusjonsprosessen. Det er en god praksis å bruke ENV-variabler med en perle som dotenv, og ikke overgi passordene dine, hemmelige nøkler og slikt til git-lageret ditt.

Sett opp SSL

Det er flere tjenester der ute som tilbyr SSL-sertifikater for domenet ditt, mange er betalt og et par er gratis. Sett opp SSL uansett hvilken tjeneste du bruker. Let's Encrypt er veldig enkelt og gratis å bruke. Let's Encrypt er en ideell organisasjon støttet av mange teknologigiganter.

Installasjon

Kjør følgende kommandoer, og følg instruksjonene.

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

Hvis du går til Vultr-forekomsten din nå ved å bruke HTTPS, vil du se et sikkert nettsted.

Fornyelse

Ditt nylig utstedte sertifikat vil utløpe og må fornyes med jevne mellomrom. Den enkleste måten å gjøre dette på er å sette opp en cron-jobb.

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

Som et siste, men valgfritt trinn, start VM-en på nytt og sørg for at alle tjenester starter på nytt som forventet.


Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Bruker du et annet system? Hva er Tekkit Classic? Tekkit Classic er en modpack for spillet alle kjenner og elsker; Minecraft. Den inneholder noe av ver

Opprette en Jekyll-blogg på Ubuntu 16.04

Opprette en Jekyll-blogg på Ubuntu 16.04

Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP og relaterte pakker er de mest brukte komponentene når du distribuerer en webserver. I denne artikkelen vil vi lære hvordan du setter opp PHP 7.0 eller PHP 7.1 o

Slik installerer du Squid Proxy på CentOS

Slik installerer du Squid Proxy på CentOS

Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Introduksjon Lighttpd er en apachegaffel som har som mål å være mye mindre ressurskrevende. Den er lett, derav navnet, og er ganske enkel å bruke. Installer

Sette opp en Yii-applikasjon på Ubuntu 14.04

Sette opp en Yii-applikasjon på Ubuntu 14.04

Yii er et PHP-rammeverk som lar deg utvikle applikasjoner raskere og enklere. Det er enkelt å installere Yii på Ubuntu, som du vil lære nøyaktig

Sett opp din egen DNS-server på Debian/Ubuntu

Sett opp din egen DNS-server på Debian/Ubuntu

Denne opplæringen forklarer hvordan du setter opp en DNS-server ved å bruke Bind9 på Debian eller Ubuntu. Bytt ut ditt-domenenavn.com gjennom hele artikkelen. På th

Konfigurering av statisk nettverk og IPv6 på CentOS 7

Konfigurering av statisk nettverk og IPv6 på CentOS 7

VULTR har nylig gjort endringer på sin side, og alt skal nå fungere bra ut av boksen med NetworkManager aktivert. Skulle du ønske å deaktivere

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Icinga2 er et kraftig overvåkingssystem, og når det brukes i en master-klient-modell, kan det erstatte behovet for NRPE-baserte overvåkingskontroller. Mester-klienten

Sett opp Red5 Media Server på Ubuntu 16.04

Sett opp Red5 Media Server på Ubuntu 16.04

Bruker du et annet system? Red5 er en åpen kildekode medieserver implementert i Java som lar deg kjøre Flash flerbrukerapplikasjoner som live streamin

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

I denne artikkelen vil vi se hvordan du kompilerer og installerer Nginx mainline fra de offisielle kildene til Nginx med PageSpeed-modulen, som lar deg t

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Hvordan installere Vanilla Forum på Ubuntu 16.04

Hvordan installere Vanilla Forum på Ubuntu 16.04

Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Kanboard på Debian 9

Hvordan installere Kanboard på Debian 9

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Gitea på Debian 9

Hvordan installere Gitea på Debian 9

Bruker du et annet system? Gitea er et alternativt åpen kildekode, selvdrevet versjonskontrollsystem drevet av Git. Gitea er skrevet på Golang og er

Hvordan installere Gitea på Ubuntu 18.04

Hvordan installere Gitea på Ubuntu 18.04

Bruker du et annet system? Gitea er et alternativt, selvdrevet versjonskontrollsystem med åpen kildekode drevet av git. Gitea er skrevet på Golang og er

Hvordan installere Thelia 2.3 på Debian 9

Hvordan installere Thelia 2.3 på Debian 9

Bruker du et annet system? Thelia er et åpen kildekodeverktøy for å lage e-business-nettsteder og administrere nettinnhold skrevet i PHP. Thelia kildekode i

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer