Cum se instalează și se configurează Ruby cu Rbenv, șine, MariaDB, Nginx, SSL și pasager pe Ubuntu 17.04

Ruby on Rails este un cadru web popular pentru Ruby, care a fost dezvoltat pentru a crește productivitatea unui programator. Cu toate acestea, obținerea de diferite pietre și dependențe pentru a lucra împreună poate fi dificil uneori. Acest ghid vă va ajuta să configurați un mediu complet Rails gata pentru producție, inclusiv pietre și dependențe utilizate frecvent.

cerinţe

  • Instanță vultr cu cel puțin 512 MB RAM (1024 MB preferată).
  • Instanță Vultr care rulează Ubuntu 17.04.

Pila folosită în acest ghid

  • Nginx : un server web rapid și puternic. (ver 1.10.3)
  • Pasager : un server de aplicații care va ajuta Nginx să vă servească aplicația Ruby. (vers. 1.5.1.8)
  • Rbenv : un manager de versiuni Ruby. (ver 1.1.1-2)
  • Rubin : (vers. 2.4.1)
  • MariaDB : o ramură open source a serverului MySQL (ver 10.2)
  • Certificat SSL de la Let's Encrypt

Instalare

Adăugați Sudo User

Notă : Este foarte recomandat să nu instalați niciunul dintre aceste servicii ca root, deoarece s-ar putea să vă expuneți unui atac. Configurarea unui deploysau a unui apputilizator este o convenție comună:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Actualizare și upgrade sistem

Asigurați-vă că executați toate cele mai recente pachete de pe Ubuntu VM:

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

Instalați Sistemul Build

Pentru a putea compila Ruby folosind rbenv și alte pietre pretioase, trebuie instalate diverse pachete. În funcție de versiunea de Ruby de care veți avea nevoie, este posibil ca unele dintre pachete să nu fie necesare.

compilarea
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
Pachete pentru suport SSL

Acestea sunt necesare pentru a compila mai multe pietre pretioase, cum ar fi Pasagerul:

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

Comunitatea Ruby utilizează Git ca SCM la alegere; dar pot fi instalate și altele, cum ar fi Mercurial sau Subversion:

sudo apt-get install -y git git-core
Drivere de baze de date pentru MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Obligatoriu pentru mai multe pietre populare care au nevoie de libs XML native:

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

Adăugarea depozitelor oficiale de la Node cu cea mai recentă versiune, întrucât depozitele Ubuntu implicit tind să rămână în urmă câteva versiuni majore:

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

Pachetele opționale

Aceste pachete nu sunt necesare pentru ca sistemul să funcționeze, dar este bine să le ai dacă trebuie să folosești anumite pietre pretioase.

Grafice și imagini

Aceste biblioteci nu sunt necesare și pot fi ignorate, cu excepția cazului în care intenționați să utilizați pietre de manipulare a imaginii; cum ar fi Rmagick:

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

Drivere de baze de date pentru SQLite și PostgreSQL

Instalați driverele pentru SQLite sau PostgreSQL dacă aveți nevoie să vă conectați la alte baze de date sau dacă preferați o DB locală simplă:

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

Unelte

Utilități care în mod normal nu sunt preinstalate pe o nouă instalare Ubuntu. Nu ezitați să vă instalați editorul de text la alegere:

sudo apt-get install -y iotop htop nano vim

Instalați serverul MariaDB

MariaDB este un server SQL relațional puternic, care este complet compatibil cu MySQL. Cel mai simplu mod de a instala cea mai recentă versiune a MariaDB este folosirea depozitelor oficiale:

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

Urmați instrucțiunile și configurați o parolă rădăcină. După, verificați dacă puteți accesa noua instalație:

mysql -V 

Va afișa o linie similară cu aceasta:

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

Conectați-vă la shell-ul MySQL:

mysql -h localhost -u root -p 

Notă : utilizați \qpentru a ieși.


Instalați Rbenv și Ruby

Rbenv

Instalați Rbenv folosind git. Aceasta este cea mai simplă metodă de instalare și permite actualizări ușoare ulterior. De asemenea ruby-build, instalați , este responsabil de compilarea efectivă a diferitelor versiuni de Ruby:

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

Notă : Când trebuie să actualizați pur cd ~/.rbenvși simplu git pull.

Faceți Rbenv și Ruby-build disponibile în coajă. Pentru a se asigura că liniile de export se introduce la începutul a .bashrcfișierului, care este important pentru comenzi bash non-interactive, folosesc aceste linii:

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

Verificați dacă Rbenv și Ruby-build sunt instalate și sunt disponibile în shell:

rbenv install --list

Dacă rbenvnu este recunoscut, deconectați-vă și conectați-vă la coajă

Creați un ~/.bash_profilefișier și indicați-l către sursa ~/.bashrcfișierului. Dacă aveți nevoie să rulați comenzi shell-uri non-interactive din aplicația dvs. Rails, cum ar fi configurarea lucrărilor cron de către wheneverbijuterie, va folosi aceeași versiune de Ruby ca și shell-ul dvs. interactiv. Acest lucru poate ajuta la prevenirea erorilor ciudate. Adăugați această linie la ~/.bash_profilefișier:

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

Rubin

Instalați Ruby 2.4.1:

rbenv install 2.4.1

Notă : Acest proces poate dura 5-15 minute în funcție de resursele de pe VM-ul dvs. și nu există o bară de progres.

Faceți Rbenv disponibil peste tot.

rbenv global 2.4.1

Pasager și Nginx

Adăugați cheia PGP și suportul HTTPS pentru 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

Adăugați depozitul de pasageri:

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

Instalați modulele Pasager + Nginx:

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

Accesați instanța dvs. Vultr folosind numele de domeniu sau IP pentru a le testa în acest moment. Dacă funcționează, pagina dvs. va afișa pagina implicită de bun venit Nginx.

Setări Rails, aplicație și Configurează pasagerul

Instalați Bundler and Rails:

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

Convenția Ubuntu / Debian este să configurați aplicația /var/www. În mod implicit, acesta poate fi scris numai prin root. Pentru ca funcția de configurare să funcționeze, acordă utilizatorului sudo deploy:

sudo chown deploy:deploy /var/www -R

Generați aplicația de șine în /var/www/. Dacă aveți deja o aplicație pe care doriți să o implementați, git cloneexecutați-o aici și apoi rulați bundle:

cd /var/www
rails new example --database=mysql
Configurați Pasagerul pentru a indica aplicația.
  1. Prep Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Schimbați utilizatorul la deploy.

    user deploy;
    
  3. În httpsecțiunea de configurare, ar trebui să existe o linie care să comunice Nginx să încarce module inclusiv pasager. Dacă lipsește, îl puteți adăuga imediat după Virtual Host Configstitlu, dar înainte sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Editează / creează passenger.conffișierul.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Spuneți pasagerului să utilizeze configurația noastră Rbenv. Poate conține o linie îndreptată către versiunea Ruby inclusă cu Passenger, trebuie doar să o ștergeți sau să o comentați.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Configurați o gazdă virtuală pentru a indica aplicația din /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. Reporniți Nginx.

    sudo service nginx restart
    

În acest moment, aplicația dvs. este gata de a fi utilizată în modul de dezvoltare. Pentru a comuta la modul de producție, trebuie să reveniți la configurația Nginx și să schimbați rails_envsetarea la production.

Înainte de a trece la modul de producție, tot va trebui să setați baza de date de producție example_production, database.ymlși cheia secretă. Consultați un instrument precum Capistrano sau Mina pentru a accelera procesul de implementare a aplicației dvs. Este o practică bună să utilizați variabile ENV cu o bijuterie de genul dotenv, și să nu vă angajați parolele, cheile secrete și altele astfel în depozitul dvs. git.

Configurare SSL

Există mai multe servicii care oferă certificate SSL pentru domeniul dvs., multe sunt plătite și un cuplu sunt gratuite. Configurare SSL indiferent ce serviciu utilizați. Let's Encrypt este foarte ușor și gratuit. Let's Encrypt este o organizație non-profit susținută de mulți giganți tehnologici.

Instalare

Rulați următoarele comenzi și urmați instrucțiunile.

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

Dacă accesați acum instanța dvs. Vultr folosind HTTPS, veți vedea un site web sigur.

Reînnoire

Certificatul dvs. nou emis va expira și va trebui reînnoit periodic. Cel mai simplu mod de a face acest lucru este să configurați o lucrare cron.

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

Ca o etapă finală, dar opțională, reporniți VM-ul și asigurați-vă că toate serviciile repornesc așa cum vă așteptați.



Leave a Comment

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis

Configurare partajare NFS pe Debian

Configurare partajare NFS pe Debian

NFS este un sistem de fișiere bazat pe rețea care permite computerelor să acceseze fișiere într-o rețea de calculatoare. Acest ghid explică modul în care puteți expune folderele peste NF

Configurați un server TeamTalk pe Linux

Configurați un server TeamTalk pe Linux

TeamTalk este un sistem de conferințe care permite utilizatorilor să aibă conversații audio / video de înaltă calitate, chat de text, transfer de fișiere și partajare ecrane. Este

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Vultr oferă o caracteristică care vă permite să preinstalați cheile SSH la crearea unei noi instanțe. Acest lucru vă permite să accesați utilizatorul root al serverelor, totuși

Cum se instalează Ranger Terminal File Manager pe Linux

Cum se instalează Ranger Terminal File Manager pe Linux

Ranger este un manager de fișiere bazat pe linia de comandă cu legături de cheie VI. Oferă o interfață de blestem minimalistă și frumoasă, cu o vedere asupra ierarhiei de directoare

Cum se instalează Redmine pe Ubuntu 16.04

Cum se instalează Redmine pe Ubuntu 16.04

Folosind un sistem diferit? Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe baze de date

Instalare RethinkDB Cluster pe CentOS 7

Instalare RethinkDB Cluster pe CentOS 7

Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Folosind un sistem diferit? Brotli este o nouă metodă de compresie cu un raport de compresie mai bun decât GZIP. Codul sursă este găzduit public pe acest Githu

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

În anumite ocazii, este posibil ca un administrator de sistem să aibă nevoie să creeze un cont de utilizator și să restricționeze accesul acestora la gestionarea propriilor fișiere prin sFTP, dar nu b

Utilizarea vizualizărilor MySQL pe Debian 7

Utilizarea vizualizărilor MySQL pe Debian 7

Introducere MySQL are o caracteristică excelentă cunoscută sub numele de vizualizări. Vizualizările sunt interogări stocate. Gândiți-vă la ele ca la un alias pentru o întrebare altfel lungă. În acest ghid,

Cum se instalează Nginx 1.14 pe Arch Linux

Cum se instalează Nginx 1.14 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de #. Th

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Permiterea autentificării root pe SSH este de obicei considerată o practică slabă de securitate în întreaga industrie tehnologică. În schimb, puteți efectua administrativ sensibil

Cum se instalează Seafile Server pe Ubuntu 16.10

Cum se instalează Seafile Server pe Ubuntu 16.10

Folosind un sistem diferit? Seafile (versiunea comunității) este o soluție gratuită și deschisă de sincronizare și partajare a fișierelor, care este similară cu ownCloud. De-a lungul spiritului

Cum să compilați Nginx din sursă pe CentOS 7

Cum să compilați Nginx din sursă pe CentOS 7

Folosind un sistem diferit? NGINX poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy de poștă, echilibrator de sarcină, terminator TLS sau cachin

Cum se instalează Thelia 2.3 pe Debian 9

Cum se instalează Thelia 2.3 pe Debian 9

Folosind un sistem diferit? Thelia este un instrument open source pentru crearea de site-uri web pentru e-business și gestionarea conținutului online scris în PHP. Codul sursă Thelia i

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik

Configurarea unui chroot pe Debian

Configurarea unui chroot pe Debian

Acest articol vă va învăța cum să configurați o închisoare chroot pe Debian. Presupun că utilizați Debian 7.x. Dacă executați Debian 6 sau 8, acest lucru poate funcționa, bine

Cum se instalează PiVPN pe Debian

Cum se instalează PiVPN pe Debian

Introducere Un mod ușor de a configura un server VPN pe Debian este cu PiVPN. PiVPN este un instalator și un pachet pentru OpenVPN. Creează comenzi simple pentru tine

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

EasyEngine (ee) este un instrument Python care vă permite să gestionați ușor și automat site-urile Wordpress de pe Nginx. Folosind EasyEngine, nu va trebui să dați

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe