Ruby installeren en configureren met Rbenv, Rails, MariaDB, Nginx, SSL en Passenger op Ubuntu 17.04

Ruby on Rails is een populair webraamwerk voor Ruby dat is ontwikkeld om de productiviteit van een programmeur te verhogen. Het kan echter soms lastig worden om verschillende edelstenen en afhankelijkheden samen te laten werken. Deze gids helpt u bij het opzetten van een volledige productieklare Rails-omgeving, inclusief veelgebruikte edelstenen en afhankelijkheden.

Vereisten

  • Vultr-instantie met ten minste 512 MB RAM (bij voorkeur 1024 MB).
  • Vultr-instantie met Ubuntu 17.04.

Stapel gebruikt in deze handleiding

  • Nginx : een snelle en krachtige webserver. (ver 1.10.3)
  • Passagier : een app-server die Nginx helpt uw ​​Ruby-app te bedienen. (ver 1.5.1.8)
  • Rbenv : een Ruby-versiebeheerder. (ver 1.1.1-2)
  • Ruby : (ver 2.4.1)
  • MariaDB : een open source-tak van MySQL-server (ver 10.2)
  • SSL- certificaat van Let's Encrypt

Installatie

Sudo-gebruiker toevoegen

Opmerking : het wordt ten zeerste aanbevolen om geen van deze services als root te installeren, omdat je jezelf zou kunnen blootstellen aan een aanval. Het instellen van een deployof appgebruiker is een gebruikelijke afspraak:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Systeem bijwerken en upgraden

Zorg ervoor dat u de nieuwste pakketten op uw Ubuntu VM gebruikt:

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

Installeer Build System

Om Ruby te kunnen compileren met rbenv en andere edelstenen, moeten verschillende pakketten worden geïnstalleerd. Afhankelijk van de versie van Ruby die u nodig heeft, zijn sommige pakketten mogelijk niet nodig.

Compileren
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
Pakketten voor SSL-ondersteuning

Deze zijn nodig om meerdere edelstenen samen te stellen, zoals Passagier:

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

De Ruby-gemeenschap gebruikt Git als een SCM naar keuze; maar extra, zoals Mercurial of Subversion, kunnen ook worden geïnstalleerd:

sudo apt-get install -y git git-core
Database-stuurprogramma's voor MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Vereist voor verschillende populaire edelstenen die native XML-libs nodig hebben:

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

Voeg officiële repositories van Node toe met de nieuwste versie als standaard Ubuntu-repository's blijven achter bij een paar belangrijke versies:

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

Optionele pakketten

Deze pakketten zijn niet vereist om het systeem te laten werken, maar zijn goed om te hebben als je bepaalde edelstenen moet gebruiken.

Grafieken en afbeeldingen

Deze bibliotheken zijn niet nodig en kunnen worden overgeslagen tenzij u van plan bent edelstenen voor beeldmanipulatie te gebruiken; zoals Rmagick:

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

Database-stuurprogramma's voor SQLite en PostgreSQL

Installeer stuurprogramma's voor SQLite of PostgreSQL als u verbinding wilt maken met andere databases of de voorkeur geeft aan een eenvoudige, lokale database:

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

Gereedschap

Hulpprogramma's die normaal niet vooraf zijn geïnstalleerd op een nieuwe Ubuntu-installatie. Voel je vrij om je teksteditor naar keuze te installeren:

sudo apt-get install -y iotop htop nano vim

Installeer de MariaDB-server

MariaDB is een krachtige relationele SQL-server die volledig compatibel is met MySQL. De eenvoudigste manier om de nieuwste versie van MariaDB te installeren, is door officiële opslagplaatsen te gebruiken:

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

Volg de aanwijzingen en stel een root-wachtwoord in. Controleer daarna of u toegang heeft tot uw nieuwe installatie:

mysql -V 

Er wordt een regel weergegeven die er ongeveer als volgt uitziet:

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

Log in op de MySQL-shell:

mysql -h localhost -u root -p 

Opmerking : gebruik \qom af te sluiten.


Installeer Rbenv en Ruby

Rbenv

Installeer Rbenv met git. Dit is de eenvoudigste installatiemethode en maakt later eenvoudige updates mogelijk. Installeer ook ruby-build, het is verantwoordelijk voor het daadwerkelijk compileren van verschillende versies van Ruby:

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

Opmerking : wanneer u eenvoudig moet updaten cd ~/.rbenven git pull.

Maak Rbenv en Ruby-build beschikbaar in de shell. Gebruik de volgende regels om ervoor te zorgen dat de exportregels aan het begin van het .bashrcbestand worden ingevoegd , wat belangrijk is voor niet-interactieve bash-opdrachten:

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

Controleer of Rbenv en Ruby-build zijn geïnstalleerd en beschikbaar zijn in shell:

rbenv install --list

Als rbenvniet wordt herkend, log dan uit en log opnieuw in op de shell.

Maak een ~/.bash_profilebestand en wijs het naar je ~/.bashrcbronbestand. Als u niet-interactieve shell-opdrachten vanuit uw Rails-app moet uitvoeren, zoals cron-taken die door de wheneveredelsteen zijn ingesteld, gebruikt deze dezelfde versie van Ruby als uw interactieve shell. Dit kan vreemde fouten helpen voorkomen. Voeg deze regel toe aan het ~/.bash_profilebestand:

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

Robijn

Installeer Ruby 2.4.1:

rbenv install 2.4.1

Opmerking : dit proces kan 5-15 minuten duren, afhankelijk van de bronnen op uw virtuele machine, en er is geen voortgangsbalk.

Maak Rbenv overal beschikbaar.

rbenv global 2.4.1

Passagier en Nginx

Voeg de PGP-sleutel en HTTPS-ondersteuning toe voor 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

Voeg de passagiersrepository toe:

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

Installeer de Passenger + Nginx-modules:

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

Bezoek uw Vultr-instantie met zijn domeinnaam of IP om deze op dit punt te testen. Als ze werken, toont uw pagina de standaard welkomstpagina van Nginx.

Rails instellen, de app en passagier configureren

Bundler en rails installeren:

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

Ubuntu / Debian-conventie is om uw app in te stellen /var/www. Standaard is het alleen beschrijfbaar door root. Geef de sudo-gebruiker het eigendom om de installatie te laten werken deploy:

sudo chown deploy:deploy /var/www -R

Genereer de rails-app in /var/www/. Als u al een app heeft die u wilt implementeren, kunt u git clonedeze hier en vervolgens uitvoeren bundle:

cd /var/www
rails new example --database=mysql
Configureer Passagier om naar de app te verwijzen.
  1. Bereid Nginx voor.

    sudo nano /etc/nginx/nginx.conf
    
  2. Wijzig gebruiker in deploy.

    user deploy;
    
  3. In de httpsectie van de configuratie zou er een regel moeten zijn die Nginx vertelt om modules inclusief passagier te laden. Als het ontbreekt, kun je het direct na de Virtual Host Configstitel toevoegen, maar eerder sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Bewerk / maak het passenger.confbestand.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Vertel Passenger om onze Rbenv-setup te gebruiken. Het kan een regel bevatten die verwijst naar de Ruby-versie die bij Passenger wordt geleverd, verwijder deze of becommentarieer deze.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Stel virtuele host in om naar de app te verwijzen /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 opnieuw op.

    sudo service nginx restart
    

Op dit moment is uw applicatie klaar om te worden gebruikt in de ontwikkelingsmodus. Om over te schakelen naar de productiemodus, moet u teruggaan naar uw Nginx-configuratie en de rails_envinstelling wijzigen in production.

Voordat u naar de productie-modus, je nog steeds nodig hebt om het opzetten van je productie-database example_production, database.ymlen geheime sleutel. Bekijk een tool zoals Capistrano of Mina om het implementatieproces van uw applicatie te versnellen. Het is een goede gewoonte om ENV-variabelen te gebruiken met een juweel als dotenv, en leg uw wachtwoorden, geheime sleutels en dergelijke niet vast aan uw git-repository.

SSL instellen

Er zijn meerdere services die SSL-certificaten voor uw domein aanbieden, vele zijn betaald en een paar zijn gratis. Stel SSL in, ongeacht welke service u gebruikt. Let's Encrypt is heel gemakkelijk en gratis te gebruiken. Let's Encrypt is een non-profitorganisatie die door veel technische giganten wordt ondersteund.

Installatie

Voer de volgende opdrachten uit en volg de aanwijzingen.

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

Als u nu naar uw Vultr-instantie gaat HTTPS, ziet u een beveiligde website.

Vernieuwing

Uw nieuw uitgegeven certificaat verloopt en moet regelmatig worden verlengd. De eenvoudigste manier om dit te doen, is door een cron-taak in te stellen.

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

Als laatste, maar optionele stap, start u uw VM opnieuw op en zorgt u ervoor dat alle services opnieuw worden opgestart zoals verwacht.



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.