Как да инсталирате и конфигурирате Ruby с Rbenv, Rails, MariaDB, Nginx, SSL и Passenger на Ubuntu 17.04

Ruby on Rails е популярна уеб рамка за Ruby, която е разработена за повишаване на производителността на програмиста. Въпреки това, да накарате различни скъпоценни камъни и зависимости да работят заедно, понякога може да бъде трудно. Това ръководство ще ви помогне да настроите напълно готова за производство среда на Rails, включително често използвани скъпоценни камъни и зависимости.

Изисквания

  • Vultr екземпляр с поне 512 MB RAM (за предпочитане 1024 MB).
  • Vultr екземпляр, работещ с Ubuntu 17.04.

Стек, използван в това ръководство

  • Nginx : бърз и мощен уеб сървър. (версия 1.10.3)
  • Passenger : сървър на приложения, който ще помогне на Nginx да обслужва вашето приложение Ruby. (версия 1.5.1.8)
  • Rbenv : мениджър на версии на Ruby. (версия 1.1.1-2)
  • Ruby : (версия 2.4.1)
  • MariaDB : клон с отворен код на MySQL сървър (версия 10.2)
  • SSL сертификат от Let's Encrypt

Инсталация

Добавете потребител на Sudo

Забележка : Силно препоръчително е да не инсталирате нито една от тези услуги като root, тъй като може да се изложите на атака. Настройването на deployили appпотребител е обичайна конвенция:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Актуализиране и надграждане на системата

Уверете се, че използвате всички най-нови пакети на вашата Ubuntu VM:

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

Инсталирайте Build System

За да можете да компилирате Ruby с помощта на rbenv и други скъпоценни камъни, трябва да бъдат инсталирани различни пакети. В зависимост от версията на Ruby, от която се нуждаете, някои от пакетите може да не са необходими.

Компилиране
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

Те са необходими за компилиране на няколко скъпоценни камъни, като Passenger:

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Версиониране

Общността Ruby използва Git като SCM по избор; но могат да бъдат инсталирани и допълнителни, като Mercurial или Subversion:

sudo apt-get install -y git git-core
Драйвери за база данни за MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Нокогири

Изисква се за няколко популярни скъпоценни камъни, които се нуждаят от собствени XML библиотеки:

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

Добавете официални хранилища от Node с най-новата версия като хранилищата на Ubuntu по подразбиране са склонни да изостават от няколко основни версии:

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

Опционални пакети

Тези пакети не са необходими за работата на системата, но е добре да имате, ако трябва да използвате определени скъпоценни камъни.

Графики и изображения

Тези библиотеки не са необходими и могат да бъдат пропуснати, освен ако не планирате да използвате скъпоценни камъни за манипулиране на изображения; като Rmagick:

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

Драйвери за база данни за SQLite и PostgreSQL

Инсталирайте драйвери за SQLite или PostgreSQL, ако трябва да се свържете с други бази данни или предпочитате проста, локална DB:

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

Инструменти

Помощни програми, които обикновено не са предварително инсталирани при нова инсталация на Ubuntu. Чувствайте се свободни да инсталирате своя текстов редактор по избор:

sudo apt-get install -y iotop htop nano vim

Инсталирайте сървъра MariaDB

MariaDB е мощен релационен SQL сървър, който е напълно съвместим с MySQL. Най-лесният начин да инсталирате най-новата версия на MariaDB е да използвате официални хранилища:

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

Следвайте подканите и задайте root парола. След това проверете дали имате достъп до новата си инсталация:

mysql -V 

Той ще покаже ред, подобен на този:

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

Влезте в обвивката на MySQL:

mysql -h localhost -u root -p 

Забележка : използвайте \qза излизане.


Инсталирайте Rbenv и Ruby

Rbenv

Инсталирайте Rbenv с помощта на git. Това е най-простият метод за инсталиране и позволява лесни актуализации по-късно. Също така install ruby-build, той е отговорен за действителното компилиране на различни версии на Ruby:

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

Забележка : Когато трябва да актуализирате просто cd ~/.rbenvи git pull.

Направете Rbenv и Ruby-build налични в обвивката. За да сте сигурни, че редовете за експортиране се вмъкват в началото на .bashrcфайла, което е важно за неинтерактивни bash команди, използвайте тези редове:

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

Проверете дали Rbenv и Ruby-build са инсталирани и са налични в shell:

rbenv install --list

Ако rbenvне е разпознат, излезте и влезте отново в shell.

Създайте ~/.bash_profileфайл и го насочете към източника на вашия ~/.bashrcфайл. Ако трябва да изпълнявате каквито и да е неинтерактивни команди на обвивката от вашето приложение Rails, като например задания на cron, настроени от whenevergem, то ще използва същата версия на Ruby като вашата интерактивна обвивка. Това може да помогне за предотвратяване на странни грешки. Добавете този ред към ~/.bash_profileфайла:

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

Руби

Инсталирайте Ruby 2.4.1:

rbenv install 2.4.1

Забележка : Този процес може да отнеме 5-15 минути в зависимост от ресурсите на вашата виртуална машина и няма лента за напредък.

Направете Rbenv достъпен навсякъде.

rbenv global 2.4.1

Passenger и Nginx

Добавете PGP ключа и HTTPS поддръжка за 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

Добавете хранилището на Passenger:

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

Инсталирайте модулите Passenger + Nginx:

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

Посетете вашия екземпляр на Vultr, като използвате името на домейна или IP, за да ги тествате в този момент. Ако те работят, вашата страница ще покаже приветствената страница по подразбиране на Nginx.

Настройте Rails, приложението и конфигурирайте Passenger

Инсталирайте Bundler и Rails:

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

Конвенцията на Ubuntu/Debian е да настроите приложението си в /var/www. По подразбиране може да се записва само от root. За да работи настройката, дайте собственост на потребителя sudo deploy:

sudo chown deploy:deploy /var/www -R

Генерирайте приложението rails в /var/www/. Ако вече имате приложение, което искате да разгърнете, git cloneто тук и след това стартирайте bundle:

cd /var/www
rails new example --database=mysql
Конфигурирайте Passenger да сочи към приложението.
  1. Подгответе Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Променете потребителя на deploy.

    user deploy;
    
  3. В httpсекцията на конфигурацията трябва да има ред, който казва на Nginx да зареди модули, включително пасажер. Ако липсва, можете да го добавите веднага след Virtual Host Configsзаглавието, но преди sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Редактирайте/създайте passenger.confфайла.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Кажете на Passenger да използва нашата настройка на Rbenv. Може да съдържа ред, сочещ към версията на Ruby, включена в Passenger, просто я изтрийте или коментирайте.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Настройте виртуален хост да сочи към приложението в /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. Рестартирайте Nginx.

    sudo service nginx restart
    

В този момент вашето приложение е готово за използване в режим на разработка. За да преминете към производствен режим, трябва да се върнете към конфигурацията на Nginx и да промените rails_envнастройката на production.

Преди да преминете в режим на производство, все пак ще трябва да настроите вашата продукция на базата данни example_production, database.ymlи таен ключ. Вижте инструмент като Capistrano или Mina, за да ускорите процеса на внедряване на приложението си. Добра практика е да използвате ENV променливи със скъпоценен камък като dotenv, и да не предавате вашите пароли, секретни ключове и други във вашето git хранилище.

Настройте SSL

Има множество услуги, предлагащи SSL сертификати за вашия домейн, много от тях са платени, а няколко са безплатни. Настройте SSL, без значение каква услуга използвате. Let's Encrypt е много лесен и безплатен за използване. Let's Encrypt е организация с нестопанска цел, подкрепена от много технологични гиганти.

Инсталация

Изпълнете следните команди и следвайте подканите.

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

Ако сега отидете на вашия екземпляр на Vultr, като използвате HTTPS, ще видите защитен уебсайт.

Подновяване

Вашето новоиздадено удостоверение изтича и ще трябва периодично да се подновява. Най-лесният начин да направите това е да настроите работа на cron.

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

Като последна, но незадължителна стъпка, рестартирайте вашата виртуална машина и се уверете, че всички услуги се рестартират според очакванията.


Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Използване на различна система? Ако закупите сървър на Debian, винаги трябва да имате най-новите корекции за сигурност и актуализации, независимо дали спите или не

Как да инсталирате и конфигурирате PHP 7.0 или PHP 7.1 на Ubuntu 16.04

Как да инсталирате и конфигурирате PHP 7.0 или PHP 7.1 на Ubuntu 16.04

PHP и свързаните с него пакети са най-често използваните компоненти при разгръщане на уеб сървър. В тази статия ще научим как да настроим PHP 7.0 или PHP 7.1 o

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Три безплатни контролни панела на сървъра (бърза инсталация)

Три безплатни контролни панела на сървъра (бърза инсталация)

1. Virtualmin/Webmin Virtualmin е мощен и гъвкав контролен панел за уеб хостинг за Linux и UNIX системи, базиран на добре познатата уеб база с отворен код

Настройване на приложение Yii на Ubuntu 14.04

Настройване на приложение Yii на Ubuntu 14.04

Yii е PHP рамка, която ви позволява да разработвате приложения по-бързо и лесно. Инсталирането на Yii в Ubuntu е лесно, както ще научите точно l

Настройте свой собствен DNS сървър на Debian/Ubuntu

Настройте свой собствен DNS сървър на Debian/Ubuntu

Този урок обяснява как да настроите DNS сървър с помощта на Bind9 на Debian или Ubuntu. В цялата статия заменете your-domain-name.com съответно. При th

Използване на Logrotate за управление на регистрационни файлове

Използване на Logrotate за управление на регистрационни файлове

Въведение Logrotate е помощна програма за Linux, която опростява администрирането на лог файлове. Обикновено се изпълнява веднъж на ден чрез cron задание и управлява базата от регистрационни файлове

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Настройте Red5 Media Server на Ubuntu 16.04

Настройте Red5 Media Server на Ubuntu 16.04

Използване на различна система? Red5 е медиен сървър с отворен код, внедрен в Java, който ви позволява да стартирате Flash многопотребителски приложения, като например предаване на живо

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

В тази статия ще видим как да компилирате и инсталирате основната линия на Nginx от официалните източници на Nginx с модула PageSpeed, който ви позволява да

Как да инсталирате Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Как да инсталирате Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока

Как да инсталирате Vanilla Forum на Ubuntu 16.04

Как да инсталирате Vanilla Forum на Ubuntu 16.04

Използване на различна система? Vanilla forum е приложение за форум с отворен код, написано на PHP. Той е напълно адаптивен, лесен за използване и поддържа външен

Как да инсталирате Kanboard на Ubuntu 18.04 LTS

Как да инсталирате Kanboard на Ubuntu 18.04 LTS

Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Kanboard на Debian 9

Как да инсталирате Kanboard на Debian 9

Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Gitea на Debian 9

Как да инсталирате Gitea на Debian 9

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от Git. Gitea е написана на Голанг и е

Как да инсталирате Gitea на Ubuntu 18.04

Как да инсталирате Gitea на Ubuntu 18.04

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от git. Gitea е написана на Голанг и е

Инсталирайте Lynis на Debian 8

Инсталирайте Lynis на Debian 8

Въведение Lynis е безплатен инструмент за одит на системата с отворен код, който се използва от много системни администратори за проверка на целостта и заздравяване на техните системи. аз

Как да инсталирате Thelia 2.3 на Debian 9

Как да инсталирате Thelia 2.3 на Debian 9

Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече