Hur man installerar och konfigurerar Ruby med Rbenv, Rails, MariaDB, Nginx, SSL och Passenger på Ubuntu 17.04

Ruby on Rails är ett populärt webbramverk för Ruby som utvecklades för att öka en programmerares produktivitet. Men att få olika ädelstenar och beroenden att fungera tillsammans kan ibland bli svårt. Den här guiden hjälper dig att sätta upp en komplett produktionsklar Rails-miljö inklusive vanliga ädelstenar och beroenden.

Krav

  • Vultr-instans med minst 512 MB RAM (1024 MB föredras).
  • Vultr-instans som kör Ubuntu 17.04.

Stack som används i denna guide

  • Nginx : en snabb och kraftfull webbserver. (ver 1.10.3)
  • Passenger : en appserver som hjälper Nginx att servera din Ruby-app. (ver 1.5.1.8)
  • Rbenv : en Ruby-versionshanterare. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : en öppen källkodsgren av MySQL-servern (ver 10.2)
  • SSL- certifikat från Let's Encrypt

Installation

Lägg till Sudo-användare

Obs : Det rekommenderas starkt att inte installera någon av dessa tjänster som root, eftersom du kan utsätta dig själv för en attack. Att konfigurera en deployeller appanvändare är en vanlig konvention:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Uppdatera och uppgradera systemet

Se till att du kör alla de senaste paketen på din Ubuntu VM:

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

Installera Build System

För att kunna kompilera Ruby med rbenv och andra ädelstenar måste olika paket installeras. Beroende på vilken version av Ruby du behöver, kanske vissa av paketen inte behövs.

Sammanställning
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
Paket för SSL-stöd

Dessa är nödvändiga för att sammanställa flera ädelstenar, såsom Passenger:

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

Ruby-communityt använder Git som en valfri SCM; men ytterligare sådana, som Mercurial eller Subversion, kan också installeras:

sudo apt-get install -y git git-core
Databasdrivrutiner för MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Krävs för flera populära ädelstenar som behöver inbyggda XML-libs:

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

Lägg till officiella arkiv från Node med den senaste versionen som standard Ubuntu-arkiv tenderar att släpa efter några större versioner:

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

Valfria paket

Dessa paket krävs inte för att systemet ska fungera, men är bra att ha om du behöver använda vissa ädelstenar.

Grafer och bilder

Dessa bibliotek är inte nödvändiga och kan hoppas över om du inte planerar att använda ädelstenar för bildmanipulering; som Rmagick:

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

Databasdrivrutiner för SQLite och PostgreSQL

Installera drivrutiner för SQLite eller PostgreSQL om du behöver ansluta till andra databaser eller föredrar en enkel, lokal DB:

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

Verktyg

Verktyg som normalt inte kommer förinstallerade på en ny Ubuntu-installation. Installera gärna din textredigerare:

sudo apt-get install -y iotop htop nano vim

Installera MariaDB-servern

MariaDB är en kraftfull relationell SQL-server, som är helt kompatibel med MySQL. Det enklaste sättet att installera den senaste versionen av MariaDB är att använda officiella arkiv:

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ölj anvisningarna och ställ in ett root-lösenord. Kontrollera sedan att du kan komma åt din nya installation:

mysql -V 

Det kommer att visa en rad som liknar denna:

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

Logga in i MySQL-skalet:

mysql -h localhost -u root -p 

Obs : använd för \qatt avsluta.


Installera Rbenv och Ruby

Rbenv

Installera Rbenv med git. Detta är den enklaste installationsmetoden, och den möjliggör enkla uppdateringar senare. Installera också ruby-build, det är ansvarigt för att faktiskt kompilera olika versioner 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

Obs : När du behöver uppdatera enkelt cd ~/.rbenvoch git pull.

Gör Rbenv och Ruby-build tillgängliga i skalet. För att säkerställa att exportraderna infogas i början av .bashrcfilen, vilket är viktigt för icke-interaktiva bash-kommandon, använd dessa rader:

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

Kontrollera om Rbenv och Ruby-build är installerade och finns tillgängliga i skal:

rbenv install --list

Om det rbenvinte känns igen, logga ut och logga in i skalet igen.

Skapa en ~/.bash_profilefil och peka den till din ~/.bashrcfilkälla. Om du behöver köra några icke-interaktiva skalkommandon från din Rails-app, såsom cron-jobb som ställs in av wheneverädelstenen, kommer den att använda samma version av Ruby som ditt interaktiva skal. Detta kan hjälpa till att förhindra konstiga fel. Lägg till denna rad i ~/.bash_profilefilen:

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

Rubin

Installera Ruby 2.4.1:

rbenv install 2.4.1

Obs! Den här processen kan ta 5-15 minuter beroende på resurserna på din virtuella dator, och det finns ingen förloppsindikator.

Gör Rbenv tillgängligt överallt.

rbenv global 2.4.1

Passagerare och Nginx

Lägg till PGP-nyckeln och HTTPS-stöd för 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

Lägg till passagerarförrådet:

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

Installera Passenger + Nginx-modulerna:

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

Besök din Vultr-instans med dess domännamn eller IP för att testa dessa vid denna tidpunkt. Om de fungerar kommer din sida att visa den förinställda Nginx-välkomstsidan.

Ställ in Rails, appen och konfigurera passagerare

Installera Bundler och Rails:

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

Ubuntu/Debian-konventionen är att ställa in din app i /var/www. Som standard är det bara skrivbart med root. För att inställningen ska fungera, ge sudo-användaren äganderätt deploy:

sudo chown deploy:deploy /var/www -R

Generera rails-appen i /var/www/. Om du redan har en app som du vill distribuera, git clonekör den här och sedan bundle:

cd /var/www
rails new example --database=mysql
Konfigurera Passenger för att peka på appen.
  1. Förbered Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Ändra användare till deploy.

    user deploy;
    
  3. I httpavsnittet av konfigurationen bör det finnas en rad som talar om för Nginx att ladda moduler inklusive passagerare. Om det saknas kan du lägga till det direkt efter Virtual Host Configstiteln, men före sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Redigera/skapa passenger.conffilen.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Säg till Passenger att använda vår Rbenv-installation. Den kan innehålla en linje som pekar på Ruby-versionen som ingår i Passenger, bara ta bort eller kommentera den.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Ställ in virtuell värd för att peka 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. Starta om Nginx.

    sudo service nginx restart
    

Vid det här laget är din applikation redo att användas i utvecklingsläge. För att byta till produktionsläge måste du gå tillbaka till din Nginx-konfiguration och ändra rails_envinställningen till production.

Innan du byter till produktionsläge måste du fortfarande ställa in din produktionsdatabas example_production, database.ymloch hemliga nyckel. Kolla in ett verktyg som Capistrano eller Mina för att påskynda din applikationsdistribution. Det är en god praxis att använda ENV-variabler med en ädelsten som dotenv, och lägg inte dina lösenord, hemliga nycklar och sådant till ditt git-förråd.

Ställ in SSL

Det finns flera tjänster där ute som erbjuder SSL-certifikat för din domän, många är betalda och ett par är gratis. Ställ in SSL oavsett vilken tjänst du använder. Let's Encrypt är väldigt enkelt och gratis att använda. Let's Encrypt är en ideell organisation som backas upp av många teknikjättar.

Installation

Kör följande kommandon och följ anvisningarna.

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

Om du går till din Vultr-instans nu med HTTPS, kommer du att se en säker webbplats.

Förnyelse

Ditt nyligen utfärdade certifikat upphör att gälla och kommer att behöva förnyas med jämna mellanrum. Det enklaste sättet att göra detta är att skapa ett cron-jobb.

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

Som ett sista, men valfritt steg, starta om din virtuella dator och se till att alla tjänster startar om som förväntat.


Installera Plesk på CentOS 7

Installera Plesk på CentOS 7

Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser

Installera Cacti på Debian Jessie

Installera Cacti på Debian Jessie

Introduktion Cacti är ett övervaknings- och grafverktyg med öppen källkod som är helt baserat på RRD-data. Genom Cacti kan du övervaka nästan vilken typ av enhet som helst

Installera Lets Encrypt SSL på One-Click WordPress-appen

Installera Lets Encrypt SSL på One-Click WordPress-appen

Introduktion Lets Encrypt är en certifikatmyndighetstjänst som erbjuder gratis TLS/SSL-certifikat. Installationsprocessen förenklas av Certbot,

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Använder du ett annat system? Vad är Tekkit Classic? Tekkit Classic är ett modpack för spelet som alla känner och älskar; Minecraft. Den innehåller några av ver

Konfigurera iRedMail på Debian Wheezy

Konfigurera iRedMail på Debian Wheezy

Använder du ett annat system? Den här handledningen visar dig hur du installerar groupware iRedMail på en ny installation av Debian Wheezy. Du bör använda en serve

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP och relaterade paket är de mest använda komponenterna när du distribuerar en webbserver. I den här artikeln kommer vi att lära oss hur du ställer in PHP 7.0 eller PHP 7.1 o

Hur man installerar Squid Proxy på CentOS

Hur man installerar Squid Proxy på CentOS

Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera

Tre gratis serverkontrollpaneler (snabbinstallation)

Tre gratis serverkontrollpaneler (snabbinstallation)

1. Virtualmin/Webmin Virtualmin är en kraftfull och flexibel kontrollpanel för webbhotell för Linux- och UNIX-system baserad på den välkända Open Source-webbasen

Konfigurera en Yii-applikation på Ubuntu 14.04

Konfigurera en Yii-applikation på Ubuntu 14.04

Yii är ett PHP-ramverk som låter dig utveckla applikationer snabbare och enklare. Att installera Yii på Ubuntu är enkelt, eftersom du kommer att lära dig exakt

Använder skärmen på Ubuntu 14.04

Använder skärmen på Ubuntu 14.04

Screen är ett program som tillåter flera terminalsessioner inom ett fönster. Detta låter dig simulera flera terminalfönster där det ma

Konfigurera din egen DNS-server på Debian/Ubuntu

Konfigurera din egen DNS-server på Debian/Ubuntu

Denna handledning förklarar hur man ställer in en DNS-server med Bind9 på Debian eller Ubuntu. Genomgående i artikeln, byt ut ditt-domännamn.com i enlighet med detta. Vid th

Använda Logrotate för att hantera loggfiler

Använda Logrotate för att hantera loggfiler

Inledning Logrotate är ett Linux-verktyg som förenklar administrationen av loggfiler. Den körs vanligtvis en gång om dagen via ett cron-jobb och hanterar loggbasen

Konfigurera statiskt nätverk och IPv6 på CentOS 7

Konfigurera statiskt nätverk och IPv6 på CentOS 7

VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten

Konfigurera Red5 Media Server på Ubuntu 16.04

Konfigurera Red5 Media Server på Ubuntu 16.04

Använder du ett annat system? Red5 är en mediaserver med öppen källkod implementerad i Java som låter dig köra Flash fleranvändarapplikationer som livestreamin

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

I den här artikeln kommer vi att se hur man kompilerar och installerar Nginx mainline från de officiella källorna för Nginx med PageSpeed-modulen, som låter dig t

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Vanilla Forum på Ubuntu 16.04

Hur man installerar Vanilla Forum på Ubuntu 16.04

Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer