15.11.2010

Хостинг Ruby on Rails. Установка Ruby on Rails на сервер

Хостинг Ruby on Rails. Установка Ruby on Rails на сервер

Ruby on Rails - фреймворк, написанный на языке программирования Ruby для создания веб-приложений. Ruby on Rails работает практически на любой ОС (рекомендуется *nix системы) со многим веб-серверами (рекомендуется Apache или nginx + passenger, в нашем посте мы рассмотрим как раз второй вариант самостоятельной установки RoR) и СУБД (MySQL, PostgreSQL, SQLite, Oracle, Firebird, и т.д.). Разработчикам на RoR мы предлагаем качественный Ruby on Rails хостинг, это подразумевает - заказ одного из тарифов VPS сервера в Украине или VPS в Европе с предустановленным фреймворком - то есть полностью готовый сервер для разработки приложения, согласно Ваших требований и пожеланий (в комментариях к заказу сервера необходимо указать, что необходима установка ruby, а также все, что бы Вы хотели видеть на этом сервере и получить от этого сервера). В данном же посте мы рассмотрим и опишем установку Ruby on Rails на свой сервер (vps или dedicated).

Установка Ruby on Rails на свой сервер

Как показывает практика, наиболее экономично использовать RoR в связке nginx + passenger. Установим эту связку используя наименее самосборный софт, для простоты дальнейшей его поддержки. Устанавливаем необходимые дополнительные утилиты и компиляторы.

Будем делать свой rpm:

yum -y install rpm-build

Компиляторы:

yum -y install make gcc gcc-c++

Дополнительные библиотеки для сборки:

yum -y install pcre-devel zlib-devel openssl-devel

Устанавливаем ruby, rubygems с epel:

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum update
yum -y install ruby ruby-devel rubygems rubygem-rails rubygem-fastthread rubygem-sqlite3-ruby

Скачиваем nginx.src.rpm, можно отсюда:

wget http://centos.alt.ru/pub/nginx/0.8/RHEL/SRPMS/nginx-0.8.53-2.el5.src.rpm

Устанавливаем:

rpm -ivh nginx-0.8.53-2.el5.src.rpm

После выполнения данной операции исходники nginx, а также скрипты были установлены в /usr/src/redhat/SOURCES/, а spec файл (инструкция для сборки rpm пакета) в /usr/src/redhat/SPECS/.

Редактируем файл nginx.spec под наши нужды:

--add-module=%{_builddir}/passenger/ext/nginx \

В папку /usr/src/redhat/BUILD скачиваем архив passenger:

cd /usr/src/redhat/BUILD
wget http://rubyforge.org/frs/download.php/71376/passenger-2.2.15.tar.gz
tar xvf passenger-2.2.15.tar.gz
mv passenger-2.2.15 passenger

Собираем rpm nginx:

rpmbuild -ba nginx.spec

rpm nginx будет в папке /usr/src/redhat/RPMS/i686

rpm -ivh nginx-0.8.53-2.i686.rpm

Проверяем конфигурацию на ошибки, ставим nginx в автозагрузку, стартуем nginx:

nginx -t
chkconfig nginx on
service nginx start

Конфигурация Nginx (в /usr/local/app у нас будет наше RoR приложение):

user  nginx;
worker_processes  10;
worker_rlimit_nofile 100000;
error_log   /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
    use epoll;
}
http {
    passenger_root /usr/local/passenger;
    passenger_default_user root;
    passenger_ruby /usr/local/passenger/ruby.sh;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile           on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    keepalive_timeout  65;
    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;
    server {
                listen       3000;
                server_name  _;
                root /usr/local/app/public;
                passenger_enabled on;
                rails_env development;
                location / {
                passenger_enabled on;
                }
           }
}

Копируем папку /usr/src/redhat/BUILD/passenger в папку /usr/local

В папку /usr/local/passenger прописываем скрипт ruby.sh

#!/bin/bash
export PATH=$PATH:/usr/sbin:/sbin
/usr/bin/ruby $1

Устанавливаем права 755 на данный файл

chmod 755 ruby.sh

Можно проверять работу приложения - открываем в браузере:

http://IP:3000

IP - IP-адрес нашего сервера.

Последние новости

Скидка на все домены Украины до 21.10.2022!
14.10.2022
Скидка на все домены Украины до 21.10.2022!
Уважаемые пользователи! Целую неделю у нас скидка -15% на регистрацию всех украинских доменов по промокоду defendersday22!
Подорожание ряда украинских доменов UA ccTLD!
28.09.2022
Подорожание ряда украинских доменов UA ccTLD!
Уважаемые пользователи! С 1 октября 2022 нас ждет подорожание в ряде украинских доменов - in.ua, od.ua, mk.ua!
Важные изменения в работе ряда украинских доменных имен!
09.03.2022
Важные изменения в работе ряда украинских доменных имен!
Уважаемые пользователи! В некоторых украинских доменных зонах увеличен срок периода Redemption с 30 до 60 дней.
Существенное подорожание выделенных IP-адресов (IPv4) в Германии!
09.08.2021
Существенное подорожание выделенных IP-адресов (IPv4) в Германии!
Уважаемые пользователи! В Германии существенно подорожали дополнительные выделенные IP-адреса (IPv4) и IP-сети.

Последнее в блоге

Коронавирус Coronavirus (COVID-19) и кибермошенники в сети Интернет
02.03.2020
Коронавирус Coronavirus (COVID-19) и кибермошенники в сети Интернет
Паника вокруг коронавируса COVID-19 используется кибермошенниками в сети Интернет - фишинг, продажа масок, вакцин и тестов.
Не отправляется почта - проверяем не блокирует ли провайдер 25 порт
11.01.2020
Не отправляется почта - проверяем не блокирует ли провайдер 25 порт
Проверяем блокирует ли провайдер 25 порт с помощью командной строки в ОС Windows. Как отправлять почту если 25 порт заблокирован.
Как установить Clam AntiVirus (ClamAV) на VPS или сервер с ОС CentOS
11.11.2019
Как установить Clam AntiVirus (ClamAV) на VPS или сервер с ОС CentOS
Устанавливаем Clam AntiVirus (ClamAV) на VPS / VDS или выделенный сервер с ОС CentOS и настраиваем ежедневное сканирование сервера.
ISPmanager больше не поддерживает резервное копирование в Яндекс.Диск
20.10.2019
ISPmanager больше не поддерживает резервное копирование в Яндекс.Диск
В течении недели Яндекс.Диск исчезнет из списка хранилища для резервного копирования в панеле ISPmanager и других продуктах ISPsystem.