Kā instalēt un konfigurēt Ruby ar Rbenv, Rails, MariaDB, Nginx, SSL un Passenger Ubuntu 17.04

Ruby on Rails ir populārs Ruby tīmekļa ietvars, kas tika izstrādāts, lai palielinātu programmētāja produktivitāti. Tomēr dažkārt var būt sarežģīti dažādu dārgakmeņu un atkarību sadarbošanās. Šī rokasgrāmata palīdzēs jums izveidot pilnībā ražošanai gatavu Rails vidi, tostarp bieži izmantotos dārgakmeņus un atkarības.

Prasības

  • Vultr instance ar vismaz 512 MB RAM (vēlams 1024 MB).
  • Vultr instance, kurā darbojas Ubuntu 17.04.

Šajā rokasgrāmatā izmantotā kaudze

  • Nginx : ātrs un jaudīgs tīmekļa serveris. (versija 1.10.3)
  • Pasažieris : lietotņu serveris, kas palīdzēs Nginx apkalpot jūsu lietotni Ruby. (versija 1.5.1.8)
  • Rbenv : Ruby versijas pārvaldnieks. (versija 1.1.1-2)
  • Rubīns : (versija 2.4.1)
  • MariaDB : MySQL servera atvērtā koda filiāle (versija 10.2)
  • SSL sertifikāts no Let's Encrypt

Uzstādīšana

Pievienojiet Sudo lietotāju

Piezīme . Ļoti ieteicams nevienu no šiem pakalpojumiem neinstalēt kā root, jo jūs varat pakļaut sevi uzbrukumam. Lietotāja deployvai applietotāja iestatīšana ir izplatīta metode:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Sistēmas atjaunināšana un jaunināšana

Pārliecinieties, vai savā Ubuntu VM izmantojat visas jaunākās pakotnes:

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

Instalējiet Build System

Lai varētu kompilēt Ruby, izmantojot rbenv un citus dārgakmeņus, ir jāinstalē dažādas pakotnes. Atkarībā no Ruby versijas, kas jums būs nepieciešama, dažas pakotnes var nebūt vajadzīgas.

Sastādīšana
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
SSL atbalsta pakotnes

Tie ir nepieciešami, lai apkopotu vairākus dārgakmeņus, piemēram, Pasažieris:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Versionēšana

Ruby kopiena izmanto Git kā izvēlētu SCM; bet var instalēt arī papildu, piemēram, Mercurial vai Subversion:

sudo apt-get install -y git git-core
Datu bāzes draiveri MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Nepieciešams vairākiem populāriem dārgakmeņiem, kuriem nepieciešami vietējie XML libsi:

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

Pievienojiet oficiālās krātuves no Node ar jaunāko versiju, jo noklusējuma Ubuntu krātuves mēdz atpalikt no dažām galvenajām versijām:

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

Izvēles pakotnes

Šīs pakotnes nav nepieciešamas, lai sistēma darbotos, taču tās ir labas, ja jums ir jāizmanto noteikti dārgakmeņi.

Grafiki un attēli

Šīs bibliotēkas nav nepieciešamas, un tās var izlaist, ja vien neplānojat izmantot attēlu manipulācijas dārgakmeņus; piemēram, Rmagick:

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

SQLite un PostgreSQL datu bāzes draiveri

Instalējiet SQLite vai PostgreSQL draiverus, ja nepieciešams izveidot savienojumu ar citām datu bāzēm vai dodiet priekšroku vienkāršai vietējai DB:

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

Rīki

Utilītas, kuras parasti netiek iepriekš instalētas jaunā Ubuntu instalācijā. Jūtieties brīvi instalēt savu izvēlēto teksta redaktoru:

sudo apt-get install -y iotop htop nano vim

Instalējiet MariaDB serveri

MariaDB ir spēcīgs relāciju SQL serveris, kas ir pilnībā savietojams ar MySQL. Vienkāršākais veids, kā instalēt jaunāko MariaDB versiju, ir izmantot oficiālās krātuves:

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

Izpildiet norādījumus un iestatiet root paroli. Pēc tam pārbaudiet, vai varat piekļūt jaunajai instalācijai:

mysql -V 

Tas parādīs rindu, kas līdzīga šim:

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

Piesakieties MySQL čaulā:

mysql -h localhost -u root -p 

Piezīme : izmantojiet, \qlai izietu.


Instalējiet Rbenv un Ruby

Rbenv

Instalējiet Rbenv, izmantojot git. Šī ir vienkāršākā instalēšanas metode, kas ļauj viegli atjaunināt vēlāk. Instalējiet arī ruby-build, tā ir atbildīga par dažādu Ruby versiju faktisko apkopošanu:

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

Piezīme . Ja jums ir jāatjaunina vienkārši cd ~/.rbenvun git pull.

Padariet Rbenv un Ruby-build pieejamus čaulā. Lai nodrošinātu, ka eksporta līnijas saņemt ievietots sākumā uz .bashrcfailu, kas ir svarīgi, lai nav interaktīvas bash komandas, izmantojiet šīs rindas:

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

Pārbaudiet, vai Rbenv un Ruby-build ir instalēti un ir pieejami čaulā:

rbenv install --list

Ja rbenvtas netiek atpazīts, izrakstieties un piesakieties atpakaļ čaulā.

Izveidojiet ~/.bash_profilefailu un norādiet uz ~/.bashrcfaila avotu . Ja jums ir jāpalaiž kādas neinteraktīvas čaulas komandas no savas Rails lietotnes, piemēram, cron uzdevumi, ko iestatījis whenevergem, tā izmantos to pašu Ruby versiju kā jūsu interaktīvais apvalks. Tas var palīdzēt novērst dīvainas kļūdas. Pievienojiet ~/.bash_profilefailam šo rindiņu :

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

Rubīns

Instalējiet Ruby 2.4.1:

rbenv install 2.4.1

Piezīme . Šis process var ilgt 5–15 minūtes atkarībā no jūsu virtuālās mašīnas resursiem, un nav progresa joslas.

Padariet Rbenv pieejamu visur.

rbenv global 2.4.1

Pasažieris un Nginx

Pievienojiet PGP atslēgu un HTTPS atbalstu 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

Pievienojiet pasažieru repozitoriju:

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

Instalējiet Passenger + Nginx moduļus:

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

Apmeklējiet savu Vultr gadījumu, izmantojot tā domēna nosaukumu vai IP, lai tos pārbaudītu šajā brīdī. Ja tie darbojas, jūsu lapā tiks rādīta noklusējuma Nginx sveiciena lapa.

Setup Rails, App un Configure Passenger

Instalējiet komplektu un sliedes:

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

Ubuntu/Debian konvencija paredz jūsu lietotnes iestatīšanu /var/www. Pēc noklusējuma to var rakstīt tikai ar sakni. Lai iestatīšana darbotos, piešķiriet īpašumtiesības sudo lietotājam deploy:

sudo chown deploy:deploy /var/www -R

Ģenerējiet sliedes lietotni /var/www/. Ja jums jau ir lietotne, kuru vēlaties izvietot, git cloneto šeit un pēc tam palaidiet bundle:

cd /var/www
rails new example --database=mysql
Konfigurējiet Pasažieru, lai norādītu uz lietotni.
  1. Sagatavojiet Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Mainīt lietotāju uz deploy.

    user deploy;
    
  3. Šajā httpsadaļā config, ir jābūt līnija, kas liek Nginx ielādēt moduļus, tostarp pasažieri. Ja tā trūkst, varat to pievienot uzreiz aiz Virtual Host Configsvirsraksta, bet pirms sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Rediģēt/izveidot passenger.conffailu.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Pastāstiet Pasažierim izmantot mūsu Rbenv iestatījumus. Tajā var būt rindiņa, kas norāda uz Ruby versiju, kas iekļauta komplektācijā Passenger, vienkārši izdzēsiet vai komentējiet to.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Iestatiet virtuālo saimniekdatoru, lai norādītu uz lietotni /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. Restartējiet Nginx.

    sudo service nginx restart
    

Šajā brīdī jūsu lietojumprogramma ir gatava lietošanai izstrādes režīmā. Lai pārslēgtos uz ražošanas režīmu, jums jāatgriežas pie Nginx konfigurācijas un jāmaina rails_enviestatījums uz production.

Pirms pāriet uz ražošanas režīmā, jums joprojām ir nepieciešams, lai iestatītu savu ražošanas bāzi example_production, database.ymlun slepeno atslēgu. Apskatiet tādus rīkus kā Capistrano vai Mina, lai paātrinātu lietojumprogrammas izvietošanas procesu. Laba prakse ir izmantot ENV mainīgos ar tādu dārgakmeni kā dotenv, un neievietot savas paroles, slepenās atslēgas un tamlīdzīgus git repozitorijā.

Iestatiet SSL

Ir vairāki pakalpojumi, kas piedāvā SSL sertifikātus jūsu domēnam, daudzi no tiem ir maksas, un daži ir bezmaksas. Iestatiet SSL neatkarīgi no tā, kādu pakalpojumu izmantojat. Let's Encrypt ir ļoti vienkārši un bez maksas lietojams. Let's Encrypt ir bezpeļņas organizācija, kuru atbalsta daudzi tehnoloģiju giganti.

Uzstādīšana

Palaidiet tālāk norādītās komandas un izpildiet norādījumus.

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

Ja tagad apmeklēsit savu Vultr instanci, izmantojot HTTPS, jūs redzēsit drošu vietni.

Atjaunošana

Jūsu tikko izsniegtā sertifikāta derīguma termiņš beigsies, un tas būs periodiski jāatjauno. Vienkāršākais veids, kā to izdarīt, ir iestatīt cron darbu.

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

Kā pēdējo, bet neobligāto darbību pārstartējiet virtuālo mašīnu un pārliecinieties, vai visi pakalpojumi tiek restartēti, kā paredzēts.

Atstājiet komentāru

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk