Jak zainstalować i skonfigurować Ruby z Rbenv, Rails, MariaDB, Nginx, SSL i Passenger na Ubuntu 17.04

Ruby on Rails to popularna platforma internetowa dla Ruby, która została opracowana w celu zwiększenia wydajności programisty. Jednak uzyskanie różnych klejnotów i zależności do współpracy może czasem być trudne. Ten przewodnik pomoże ci skonfigurować w pełni gotowe do produkcji środowisko Rails, w tym często używane klejnoty i zależności.

Wymagania

  • Instancja Vultr z co najmniej 512 MB pamięci RAM (preferowane 1024 MB).
  • Instancja Vultr z systemem Ubuntu 17.04.

Stos używany w tym przewodniku

  • Nginx : szybki i wydajny serwer WWW. (wer. 1.10.3)
  • Passenger : serwer aplikacji, który pomoże Nginx obsługiwać Twoją aplikację Ruby. (wer. 1.5.1.8)
  • Rbenv : menedżer wersji Ruby. (wer. 1.1.1-2)
  • Ruby : (wer. 2.4.1)
  • MariaDB : gałąź open source serwera MySQL (wer. 10.2)
  • Certyfikat SSL od Let's Encrypt

Instalacja

Dodaj użytkownika Sudo

Uwaga : Zdecydowanie zaleca się, aby nie instalować żadnej z tych usług jako root, ponieważ możesz narazić się na atak. Konfigurowanie użytkownika deploylub appjest powszechną konwencją:

sudo adduser deploy
sudo adduser deploy sudo
su deploy

Zaktualizuj i zaktualizuj system

Upewnij się, że korzystasz z wszystkich najnowszych pakietów na maszynie Wirtualnej Ubuntu:

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

Zainstaluj Build System

Aby móc skompilować Ruby przy użyciu rbenv i innych klejnotów, należy zainstalować różne pakiety. W zależności od wersji Ruby, której będziesz potrzebować, niektóre pakiety mogą nie być potrzebne.

Kompilacja
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
Pakiety do obsługi SSL

Są one niezbędne do skompilowania kilku klejnotów, takich jak Passenger:

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

Społeczność Ruby używa Git jako wybranego SCM; ale można również zainstalować dodatkowe, takie jak Mercurial lub Subversion:

sudo apt-get install -y git git-core
Sterowniki bazy danych dla MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri

Wymagane dla kilku popularnych klejnotów, które potrzebują natywnych bibliotek XML:

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

Dodaj oficjalne repozytoria z Node z najnowszą wersją, ponieważ domyślne repozytoria Ubuntu mają tendencję do pozostawania w tyle za kilkoma głównymi wersjami:

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

Opcjonalne pakiety

Pakiety te nie są wymagane do uruchomienia systemu, ale warto je mieć, jeśli chcesz użyć niektórych klejnotów.

Wykresy i obrazy

Te biblioteki nie są konieczne i można je pominąć, chyba że planujesz używać klejnotów do manipulacji obrazem; takich jak Rmagick:

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

Sterowniki baz danych dla SQLite i PostgreSQL

Zainstaluj sterowniki dla SQLite lub PostgreSQL, jeśli chcesz połączyć się z innymi bazami danych lub wolisz prostą, lokalną bazę danych:

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

Przybory

Narzędzia, które zwykle nie są wstępnie instalowane w nowej instalacji Ubuntu. Zainstaluj dowolny edytor tekstu:

sudo apt-get install -y iotop htop nano vim

Zainstaluj serwer MariaDB

MariaDB to potężny relacyjny serwer SQL, który jest w pełni kompatybilny z MySQL. Najłatwiejszym sposobem zainstalowania najnowszej wersji MariaDB jest użycie oficjalnych repozytoriów:

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

Postępuj zgodnie z instrukcjami i ustaw hasło roota. Następnie sprawdź, czy możesz uzyskać dostęp do nowej instalacji:

mysql -V 

Wyświetli wiersz podobny do tego:

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

Zaloguj się do powłoki MySQL:

mysql -h localhost -u root -p 

Uwaga : użyj, \qaby wyjść.


Zainstaluj Rbenv i Ruby

Rbenv

Zainstaluj Rbenv za pomocą git. Jest to najprostsza metoda instalacji i umożliwia późniejsze łatwe aktualizacje. Zainstaluj również ruby-build, jest odpowiedzialny za kompilowanie różnych wersji Ruby:

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

Uwaga : Kiedy musisz zaktualizować po prostu cd ~/.rbenvi git pull.

Udostępnij Rbenv i Ruby-build w powłoce. Aby upewnić się, że linie eksportowe uzyskać wstawiony na początku tego .bashrcpliku, co jest ważne dla nieinterakcyjnych poleceń bash, wykonaj następujące linie:

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

Sprawdź, czy Rbenv i Ruby-build są zainstalowane i są dostępne w powłoce:

rbenv install --list

Jeśli rbenvnie zostanie rozpoznany, wyloguj się i zaloguj ponownie do powłoki.

Utwórz ~/.bash_profileplik i wskaż ~/.bashrcplik źródłowy . Jeśli musisz uruchomić jakieś nieinteraktywne polecenia powłoki z aplikacji Rails, takie jak konfiguracja zadań crona przez wheneverklejnot, użyje tej samej wersji Ruby co twoja powłoka interaktywna. Pomoże to zapobiec dziwnym błędom. Dodaj ten wiersz do ~/.bash_profilepliku:

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

Rubin

Zainstaluj Ruby 2.4.1:

rbenv install 2.4.1

Uwaga : Ten proces może potrwać 5-15 minut w zależności od zasobów na maszynie wirtualnej i nie ma paska postępu.

Udostępnij Rbenv wszędzie.

rbenv global 2.4.1

Pasażer i Nginx

Dodaj klucz PGP i obsługę HTTPS dla 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

Dodaj repozytorium pasażerów:

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

Zainstaluj moduły Passenger + Nginx:

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

Odwiedź instancję Vultr, używając jej nazwy domeny lub adresu IP, aby przetestować je w tym momencie. Jeśli działają, twoja strona pokaże domyślną stronę powitalną Nginx.

Skonfiguruj szyny, aplikację i skonfiguruj pasażera

Zainstaluj Bundlera i Railsy:

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

Konwencja Ubuntu / Debian polega na skonfigurowaniu aplikacji /var/www. Domyślnie jest zapisywalny tylko przez root. Aby instalacja działała, przekaż własność użytkownikowi sudo deploy:

sudo chown deploy:deploy /var/www -R

Wygeneruj aplikację railsową w /var/www/. Jeśli masz już aplikację, którą chcesz wdrożyć, git cloneuruchom ją tutaj, a następnie uruchom bundle:

cd /var/www
rails new example --database=mysql
Skonfiguruj program Passenger, aby wskazywał na aplikację.
  1. Przygotuj Nginx.

    sudo nano /etc/nginx/nginx.conf
    
  2. Zmień użytkownika na deploy.

    user deploy;
    
  3. W httpsekcji konfiguracji powinien znajdować się wiersz, który mówi Nginx, aby ładował moduły, w tym pasażera. Jeśli go brakuje, możesz dodać go zaraz po Virtual Host Configstytule, ale wcześniej sites-enabled.

    include /etc/nginx/conf.d/*.conf;
    
  4. Edytuj / utwórz passenger.confplik.

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. Powiedz Pasażerowi, aby użył naszej konfiguracji Rbenv. Może zawierać wiersz wskazujący na wersję Ruby dołączoną do Passenger, wystarczy ją usunąć lub skomentować.

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. Skonfiguruj wirtualny host, aby wskazywał aplikację /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. Uruchom ponownie Nginx.

    sudo service nginx restart
    

W tym momencie Twoja aplikacja jest gotowa do użycia w trybie programowania. Aby przejść do trybu produkcyjnego, musisz wrócić do konfiguracji Nginx i zmienić rails_envustawienie na production.

Przed przełączyć do trybu produkcji, nadal trzeba będzie skonfigurować swoją bazę produkcyjną example_production, database.ymli tajny klucz. Sprawdź narzędzie takie jak Capistrano lub Mina, aby przyspieszyć proces wdrażania aplikacji. Dobrą praktyką jest używanie zmiennych ENV z klejnotem podobnym do dotenvi nie przesyłaj haseł, tajnych kluczy itp . Do repozytorium git.

Skonfiguruj SSL

Istnieje wiele usług oferujących certyfikaty SSL dla Twojej domeny, wiele z nich jest płatnych, a kilka jest bezpłatnych. Skonfiguruj SSL bez względu na to, z jakiej usługi korzystasz. Let's Encrypt jest bardzo łatwy i darmowy w użyciu. Let's Encrypt to organizacja non-profit wspierana przez wielu technologicznych gigantów.

Instalacja

Uruchom następujące polecenia i postępuj zgodnie z instrukcjami.

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

Jeśli teraz przejdziesz do instancji Vultr HTTPS, zobaczysz bezpieczną stronę internetową.

Odnowienie

Nowo wydany certyfikat wygaśnie i będzie musiał być okresowo odnawiany. Najłatwiej to zrobić, ustawiając zadanie crona.

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

Jako ostatni, ale opcjonalny krok, uruchom ponownie maszynę wirtualną i upewnij się, że wszystkie usługi uruchomią się ponownie zgodnie z oczekiwaniami.



Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.