Sådan installeres og konfigureres Ruby med Rbenv, Rails, MariaDB, Nginx, SSL og Passenger på Ubuntu 17.04

Ruby on Rails er en populær webramme for Ruby, der blev udviklet for at øge en programmørs produktivitet. Det kan dog nogle gange blive svært at få forskellige ædelstene og afhængigheder til at fungere sammen. Denne vejledning hjælper dig med at opsætte et komplet produktionsklart Rails-miljø inklusive almindeligt brugte ædelstene og afhængigheder.

Krav

  • Vultr-instans med mindst 512 MB RAM (1024 MB foretrækkes).
  • Vultr-instans, der kører Ubuntu 17.04.

Stak brugt i denne vejledning

  • Nginx : en hurtig og kraftfuld webserver. (ver 1.10.3)
  • Passenger : en app-server, der hjælper Nginx med at betjene din Ruby-app. (ver 1.5.1.8)
  • Rbenv : en Ruby version manager. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : en open source-gren af ​​MySQL-serveren (ver 10.2)
  • SSL- certifikat fra Let's Encrypt

Installation

Tilføj Sudo-bruger

Bemærk : Det anbefales stærkt ikke at installere nogen af ​​disse tjenester som root, da du kan udsætte dig selv for et angreb. Opsætning af en deployeller appbruger er en almindelig konvention:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Opdater og opgrader systemet

Sørg for, at du kører alle de nyeste pakker på din Ubuntu VM:

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

Installer Build System

For at kunne kompilere Ruby ved hjælp af rbenv og andre ædelstene, skal forskellige pakker installeres. Afhængigt af hvilken version af Ruby du skal bruge, er nogle af pakkerne muligvis ikke 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 til SSL-understøttelse

Disse er nødvendige for at kompilere flere ædelstene, såsom Passager:

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

Ruby-fællesskabet bruger Git som en valgfri SCM; men yderligere, som Mercurial eller Subversion, kan også installeres:

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

Påkrævet for flere populære ædelstene, der har brug for native XML-libs:

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

Tilføj officielle depoter fra Node med den seneste version som standard Ubuntu-depoter har en tendens til at halte bagud et par større versioner:

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

Valgfri pakker

Disse pakker er ikke nødvendige for at systemet kan køre, men er gode at have, hvis du skal bruge bestemte ædelstene.

Grafer og billeder

Disse biblioteker er ikke nødvendige og kan springes over, medmindre du planlægger at bruge ædelstene til billedmanipulation; såsom Rmagick:

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

Databasedrivere til SQLite og PostgreSQL

Installer drivere til SQLite eller PostgreSQL, hvis du har brug for at oprette forbindelse til andre databaser eller foretrækker en simpel, lokal DB:

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

Værktøjer

Hjælpeprogrammer, der normalt ikke kommer forudinstalleret på en ny Ubuntu-installation. Du er velkommen til at installere din foretrukne teksteditor:

sudo apt-get install -y iotop htop nano vim

Installer MariaDB-serveren

MariaDB er en kraftfuld relationel SQL-server, der er fuldt kompatibel med MySQL. Den nemmeste måde at installere den seneste version af MariaDB på er at bruge officielle 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 vejledningen og opsæt en root-adgangskode. Bekræft derefter, at du kan få adgang til din nye installation:

mysql -V 

Det vil vise en linje, der ligner denne:

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

Log ind på MySQL-skallen:

mysql -h localhost -u root -p 

Bemærk : Brug \qtil at afslutte.


Installer Rbenv og Ruby

Rbenv

Installer Rbenv ved hjælp af git. Dette er den enkleste installationsmetode, og den giver mulighed for nemme opdateringer senere. Installer også ruby-build, det er ansvarligt for faktisk at kompilere forskellige versioner af Ruby:

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

Bemærk : Når du skal opdatere simpelthen cd ~/.rbenvog git pull.

Gør Rbenv og Ruby-build tilgængelige i skallen. For at sikre, at eksportlinjerne bliver indsat i begyndelsen af .bashrcfilen, hvilket er vigtigt for ikke-interaktive bash-kommandoer, skal du bruge disse linjer:

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

Tjek om Rbenv og Ruby-build er installeret og er tilgængelige i shell:

rbenv install --list

Hvis rbenvdet ikke genkendes, skal du logge ud og logge ind i skallen igen.

Opret en ~/.bash_profilefil og peg den til kilden til din ~/.bashrcfil. Hvis du har brug for at køre nogen ikke-interaktive shell-kommandoer fra din Rails-app, såsom cron-job, der er opsat af wheneverperlen, vil den bruge den samme version af Ruby som din interaktive shell. Dette kan hjælpe med at forhindre mærkelige fejl. Tilføj denne linje til ~/.bash_profilefilen:

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

Rubin

Installer Ruby 2.4.1:

rbenv install 2.4.1

Bemærk : Denne proces kan tage 5-15 minutter afhængigt af ressourcerne på din VM, og der er ingen statuslinje.

Gør Rbenv tilgængelig overalt.

rbenv global 2.4.1

Passager og Nginx

Tilføj PGP-nøglen og HTTPS-understøttelse 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

Tilføj passagerlageret:

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-modulerne:

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

Besøg din Vultr-instans ved at bruge dets domænenavn eller IP for at teste disse på dette tidspunkt. Hvis de virker, vil din side vise standard Nginx velkomstside.

Opsæt skinner, appen og konfigurer passager

Installer Bundler og skinner:

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

Ubuntu/Debian-konventionen er at konfigurere din app i /var/www. Som standard kan den kun skrives med root. For at opsætningen skal fungere, skal du give ejerskab til sudo-brugeren deploy:

sudo chown deploy:deploy /var/www -R

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

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

    sudo nano /etc/nginx/nginx.conf
    
  2. Skift bruger til deploy.

    user deploy;
    
  3. I httpsektionen af ​​konfigurationen skal der være en linje, der fortæller Nginx at indlæse moduler inklusive passager. Hvis det mangler, kan du tilføje det lige efter Virtual Host Configstitlen, men før sites-enabled.

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

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Fortæl Passenger at bruge vores Rbenv-opsætning. Den kan indeholde en linje, der peger på Ruby-versionen, der følger med Passenger, bare slet eller kommenter den.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Konfigurer virtuel vært til at pege 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. Genstart Nginx.

    sudo service nginx restart
    

På dette tidspunkt er din applikation klar til at blive brugt i udviklingstilstand. For at skifte til produktionstilstand skal du gå tilbage til din Nginx-konfiguration og ændre rails_envindstillingen til production.

Før du skifter til produktion tilstand, vil du stadig nødt til at sætte din produktion database example_production, database.ymlog hemmelig nøgle. Tjek et værktøj som Capistrano eller Mina for at fremskynde din applikationsimplementeringsproces. Det er en god praksis at bruge ENV-variabler med en perle som dotenv, og lad være med at overføre dine adgangskoder, hemmelige nøgler og lignende til dit git-lager.

Opsæt SSL

Der er flere tjenester derude, der tilbyder SSL-certifikater til dit domæne, mange er betalt og et par er gratis. Opsæt SSL uanset hvilken tjeneste du bruger. Let's Encrypt er meget nemt og gratis at bruge. Let's Encrypt er en non-profit organisation støttet af mange teknologigiganter.

Installation

Kør følgende kommandoer, og følg vejledningen.

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 din Vultr-instans nu ved at bruge HTTPS, vil du se en sikker hjemmeside.

Fornyelse

Dit nyligt udstedte certifikat udløber og skal fornys med jævne mellemrum. Den nemmeste måde at gøre dette på er at oprette et cron-job.

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

Som et sidste, men valgfrit trin, genstart din VM og sørg for, at alle tjenester genstarter som forventet.


Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Installer Lets Encrypt SSL på One-Click WordPress App

Installer Lets Encrypt SSL på One-Click WordPress App

Introduktion Lets Encrypt er en certifikatmyndighedstjeneste, der tilbyder gratis TLS/SSL-certifikater. Installationsprocessen forenkles af Certbot,

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer

Tre gratis serverkontrolpaneler (hurtig installation)

Tre gratis serverkontrolpaneler (hurtig installation)

1. Virtualmin/Webmin Virtualmin er et kraftfuldt og fleksibelt webhotel kontrolpanel til Linux og UNIX systemer baseret på den velkendte Open Source web-base

Opsætning af en Yii-applikation på Ubuntu 14.04

Opsætning af en Yii-applikation på Ubuntu 14.04

Yii er en PHP-ramme, der giver dig mulighed for at udvikle applikationer hurtigere og nemmere. Installation af Yii på Ubuntu er ligetil, da du vil lære nøjagtigt

Brug af skærm på Ubuntu 14.04

Brug af skærm på Ubuntu 14.04

Screen er et program, der tillader flere terminalsessioner inden for et vindue. Dette giver dig mulighed for at simulere flere terminalvinduer, hvor det ma

Brug af Logrotate til at administrere logfiler

Brug af Logrotate til at administrere logfiler

Introduktion Logrotate er et Linux-værktøj, der forenkler administrationen af ​​logfiler. Det kører typisk en gang om dagen via et cron-job og administrerer logbasen

Konfiguration af statisk netværk og IPv6 på CentOS 7

Konfiguration af statisk netværk og IPv6 på CentOS 7

VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten

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

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

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Sådan installeres Gitea på Ubuntu 18.04

Sådan installeres Gitea på Ubuntu 18.04

Bruger du et andet system? Gitea er et alternativt open source, selv-hostet versionskontrolsystem drevet af git. Gitea er skrevet på Golang og er

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hvad er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheden udnyttes gennem, hvordan Linux behandler kode. Det giver en uprivilegeret bruger mulighed for at gai

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Det kan være farligt at have kun én bruger, som er root. Så lad os ordne det. Vultr giver os friheden til at gøre som vi vil med vores brugere og vores servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et letvægtsalternativ til phpMyAdmin. Til sammenligning er dens samlede pakkestørrelse 400KB mod 4,2 MB phpMyAdmin. I modsætning til phpMyAdmin, som

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 lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere