Захтеви
Група која се користи у овом водичу
Инсталација
Опциони пакети
Инсталирајте МариаДБ сервер
Инсталирајте Рбенв и Руби
Руби он Раилс је популаран веб оквир за Руби који је развијен да повећа продуктивност програмера. Међутим, навођење различитих драгуља и зависности да раде заједно понекад може бити тешко. Овај водич ће вам помоћи да поставите Раилс окружење спремно за производњу, укључујући често коришћене драгуље и зависности.
Захтеви
- Вултр инстанца са најмање 512 МБ РАМ-а (пожељно 1024 МБ).
- Вултр инстанца која покреће Убунту 17.04.
Група која се користи у овом водичу
- Нгинк : брз и моћан веб сервер. (верзија 1.10.3)
- Пассенгер : сервер апликација који ће помоћи Нгинк-у да служи вашу Руби апликацију. (верзија 1.5.1.8)
- Рбенв : менаџер верзија Руби. (верзија 1.1.1-2)
- Руби : (верзија 2.4.1)
- МариаДБ : грана отвореног кода МиСКЛ сервера (верзија 10.2)
- ССЛ сертификат компаније Лет'с Енцрипт
Инсталација
Додајте Судо корисника
Напомена : Веома је препоручљиво да не инсталирате ниједну од ових услуга као роот, јер бисте се могли изложити нападу. Подешавање корисника deployили appкорисника је уобичајена конвенција:
sudo adduser deploy
sudo adduser deploy sudo
su deploy
Ажурирајте и надоградите систем
Уверите се да користите све најновије пакете на свом Убунту ВМ-у:
sudo apt-get update && sudo apt-get upgrade -y
Инсталирајте Буилд Систем
Да бисте могли да компајлирате Руби користећи рбенв и друге драгуље, потребно је инсталирати разне пакете. У зависности од верзије Руби-а која ће вам требати, неки од пакета можда неће бити потребни.
Састављање
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
Пакети за ССЛ подршку
Ово је неопходно за састављање неколико драгуља, као што је Пассенгер:
sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Версионинг
Руби заједница користи Гит као СЦМ по избору; али додатни, као што су Мерцуриал или Субверсион, такође се могу инсталирати:
sudo apt-get install -y git git-core
Драјвери базе података за МиСКЛ / МариаДБ
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Нокогири
Потребно за неколико популарних драгуља којима су потребне изворне КСМЛ библиотеке:
sudo apt-get install -y libxml2-dev libxslt-dev
Ноде.јс
Додајте званична спремишта из Ноде-а са најновијом верзијом као подразумевана Убунту спремишта обично заостају за неколико главних верзија:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Опциони пакети
Ови пакети нису потребни да би систем могао да ради, али је добро имати ако треба да користите одређене драгуље.
Графикони и слике
Ове библиотеке нису неопходне и могу се прескочити осим ако не планирате да користите драгуље за манипулацију сликама; као што је Рмагицк:
sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev
Драјвери базе података за СКЛите и ПостгреСКЛ
Инсталирајте драјвере за СКЛите или ПостгреСКЛ ако желите да се повежете са другим базама података или више волите једноставну, локалну ДБ:
sudo apt-get install -y libsqlite3-dev sqlite3 libpq-dev postgresql postgresql-contrib
Алати
Услужни програми који се обично не испоручују унапред инсталирани на новој инсталацији Убунтуа. Слободно инсталирајте свој уређивач текста по избору:
sudo apt-get install -y iotop htop nano vim
Инсталирајте МариаДБ сервер
МариаДБ је моћан релациони СКЛ сервер, који је потпуно компатибилан са МиСКЛ. Најлакши начин да инсталирате најновију верзију МариаДБ-а је коришћење званичних спремишта:
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
Пратите упутства и поставите роот лозинку. Након тога, проверите да ли можете да приступите новој инсталацији:
mysql -V
Приказаће линију сличну овој:
mysql Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5
Пријавите се у МиСКЛ љуску:
mysql -h localhost -u root -p
Напомена : користите \qза излаз.
Инсталирајте Рбенв и Руби
Рбенв
Инсталирајте Рбенв користећи гит. Ово је најједноставнији метод инсталације и омогућава лака ажурирања касније. Такође инсталирајте ruby-build, он је одговоран за стварно компајлирање различитих верзија Руби-а:
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.
Учините Рбенв и Руби-буилд доступним у љусци. Да би се осигурало да се извозни линије уметнут на почетку овог .bashrcфајла, што је важно за не-интерактивне басх команде, користите ове линије:
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 install --list
Ако rbenvсе не препозна, одјавите се и поново се пријавите у љуску.
Направите ~/.bash_profileдатотеку и усмерите је на извор ~/.bashrcдатотеке. Ако треба да покренете било које неинтерактивне команде љуске из ваше Раилс апликације, као што је постављање црон послова помоћу wheneverдрагуља, она ће користити исту верзију Руби-а као ваша интерактивна шкољка. Ово може помоћи у спречавању чудних грешака. Додајте ову линију у ~/.bash_profileдатотеку:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
Руби
Инсталирајте Руби 2.4.1:
rbenv install 2.4.1
Напомена : Овај процес може трајати 5-15 минута у зависности од ресурса на вашем ВМ-у и нема траке напретка.
Нека Рбенв буде доступан свуда.
rbenv global 2.4.1
Пассенгер и Нгинк
Додајте ПГП кључ и ХТТПС подршку за апт:
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
Додајте Пассенгер спремиште:
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
Инсталирајте Пассенгер + Нгинк модуле:
sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger
Посетите своју Вултр инстанцу користећи њено име домена или ИП да бисте их тестирали у овом тренутку. Ако раде, ваша страница ће приказати подразумевану Нгинк страницу добродошлице.
Подесите Раилс, апликацију и конфигуришите Пассенгер
Инсталирајте Бундлер и Раилс:
gem install bundler rails --no-ri --no-rdoc
Убунту/Дебиан конвенција је подешавање ваше апликације у /var/www. Подразумевано, у њега се може писати само роот. Да би подешавање функционисало, дајте власништво судо кориснику deploy:
sudo chown deploy:deploy /var/www -R
Генеришите апликацију раилс у /var/www/. Ако већ имате апликацију коју желите да примените, git cloneпокрените је овде и затим bundle:
cd /var/www
rails new example --database=mysql
Конфигуришите Пассенгер да показује на апликацију.
Преп Нгинк.
sudo nano /etc/nginx/nginx.conf
Промените корисника у deploy.
user deploy;
У httpодељку конфигурације, требало би да постоји линија која говори Нгинк-у да учита модуле укључујући путника. Ако недостаје, можете га додати одмах после Virtual Host Configsнаслова, али пре sites-enabled.
include /etc/nginx/conf.d/*.conf;
Уредите/креирајте passenger.confдатотеку.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Реците путнику да користи наше Рбенв подешавање. Може да садржи линију која указује на верзију Руби-а укључену у Пассенгер, само је избришите или коментаришите.
passenger_ruby /home/deploy/.rbenv/shims/ruby;
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Подесите виртуелни хост да указује на апликацију у /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
}
Поново покрените Нгинк.
sudo service nginx restart
У овом тренутку ваша апликација је спремна за коришћење у развојном режиму. Да бисте прешли на производни режим, потребно је да се вратите на своју Нгинк конфигурацију и промените rails_envпоставку у production.
Пре него што пређете на производном моду, и даље ће морати да подесите свој базу за производњу example_production, database.ymlи тајни кључ. Погледајте алатке попут Цапистрано или Мина да бисте убрзали процес имплементације апликације. Добра је пракса да користите ЕНВ променљиве са драгуљем као што је dotenv, и не урезујте своје лозинке, тајне кључеве и слично у своје гит спремиште.
Сетуп ССЛ
Постоји више услуга које нуде ССЛ сертификате за ваш домен, многи су плаћени, а неколико бесплатни. Подесите ССЛ без обзира коју услугу користите. Лет'с Енцрипт је веома једноставан и бесплатан за коришћење. Лет'с Енцрипт је непрофитна организација коју подржавају многи технолошки гиганти.
Инсталација
Покрените следеће команде и пратите упутства.
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
Ако сада одете на своју Вултр инстанцу користећи HTTPS, видећете безбедну веб локацију.
Реневал
Ваш новоиздати сертификат ће истећи и мораћете да га повремено обнављате. Најлакши начин да то урадите је да поставите црон посао.
sudo crontab -e
30 2 * * 1 /usr/bin/certbot renew
Као последњи, али опциони корак, поново покрените свој ВМ и уверите се да се све услуге поново покрећу према очекивањима.